本年10月のマルウェアレポートにPDF/Phishingがランクインしていました。PDFのOpenActionからJavascriptを呼び出すことができるそうなので、このようなことができるのか、試してみました。
準備
OpenActionが記録されているPDF(悪用防止の為作成方法は記載しません)
※実験用のPDFはこちらにありますが、開く前によく確認してください。
Pythonがインストールされているパソコン
pdfid.py Gitにソースが公開されていたので入手しました
確認
①PDFファイル内のオブジェクトを確認する
次のコマンドを実行し、どのようなオブジェクトが登録されているのか確認しました。
C:\ > python c:\??\??\pdfid.py c:\??\??\OpenAction.pdf
実行ファイルがpdfid.pyで、実験対象ファイルがOpenAction.pdfです。
パスは各自の実行環境に合わせてください。
着目するのは
/JavasScript
/OpenAction
/AA
です。
/JavasScript は、このドキュメント内に埋め込まれているJavascriptの数
/OpenAction は、ドキュメントを開いたときに実行されるスクリプトの数
/AA は、AutoActionの略で、コマンドプロンプトで実行される命令の数
確認方法
今回用意したPDFファイルがどのような処理をするのか確認します。
テキストファイルで、PDFファイルを開いて動作を確認できます。
PDFファイルをテキストエディタ(sakura)で開いた様子
「JavasScript」で検索を行うと、次のオブジェクトが見つかります。
1 0 obj
<<
/ViewerPreferences 2 0 R
/Type /Catalog
/OpenAction <<
/S /JavaScript
/JS (app.alert\({cMsg: "This is a danger script!!", cTitle: "script test"}\);)
>>
:
endobj
「? ? obj」~「endobj」が1つのオブジェクトの塊になります。
/JS に app.alert\({cMsg: “This is a danger script!!”, cTitle: “script test”}\);と書かれているのがSCRIPTの本体です。
今回の例で使用しているPDFファイルは、タイトル「script test」、テキスト「This is a danger script!!」と書かれたアラートを表示するだけのスクリプトが埋め込まれています。
このスクリプトは実際には何もしないのですが、confirm無しにJavascriptが実行されていることが危険だと感じます。
昔はOffice製品のマクロも、Confirm無しで実行できた時期がありました。
最近までマクロがウィルスの温床になっていましたので、淘汰される方向に向かっていると感じています。
Javascriptは自由性が高く強力なスクリプト言語ですので、ドライブバイダウンロードのきっかけとして使用される危険性があります。
このほかに/AA については、もともとプリンタアプリの呼び出し等に用いられるものですが、Windows上のファイルを自由に起動させることができることから、
PDFの背後でJavascriptでダウンロードした実行ファイルをAutoActionから呼び出す
というような使い方ができると危ないですね。
私はPDFにJavascript機能を求めないので、使用しない設定に変更しました。
AcrobatReaderから「環境設定」を開き、Javascriptを使わない設定にした様子
Javascriptが実行できなくなったPDF
標準ではJavascriptが使える設定になっていますが、皆さん使っていますか?
個人的には、PDFファイルは文書や写真を表示してくれるだけでいいと思っています。
リンク機能や目次機能もいりません。
ましてやスクリプト機能なんて全く使いませんので、セキュアな形式にしてください。
お願いします(切実)