学習忘備録

学習のアウトプットや感じた事を発信していきます

PDFのFormCalcによるコンテンツハイジャック

書籍を読んで

www.amazon.co.jp

こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。

PDFのFormCalcによるコンテンツハイジャック

PDFはFormCalcとよばれるスクリプト言語が仕様でき、PDFドキュメントにFormCalcスクリプトを埋め込むことが出来る。

Adobe Acrobat Readerに実装されたFormCalcにはURL関数という機能があり、HTTPリクエストを呼び出し、結果を受け取ることが出来る。

このFormCalcのURL関数を用いた仕掛けを組み込んだPDFファイルをアップロードすることにより、正規ユーザに成りすましを行う攻撃手段が考案されている

脆弱性が生まれる原因

問題としては、Adobe Acrobat Readerのセキュリティ上好ましくない仕様を悪用されることにある

従って、Acrobat Readerの仕様が見直される事が本筋だが、Webアプリケーション側で対応を取らざるを得ないのが現状である

対策

ブラウザのAcrobat ReaderプラグインでPDFデータを開いてしまうと、PDFファイル内のスクリプト実行を止める手段はWebサイト側には用意されていない。

このため、以下の両方を実施することが対策になる

  • PDFファイルはブラウザ内で開かずダウンロードを強制する
  • PDFをobject要素やembed要素では開けない仕組みを実装する
    • ファイルのダウンロードを強制するレスポンスヘッダを指定しても、罠のサイトでobject要素やembed要素を用いている場合、これらのレスポンスヘッダは無視され、FormCalcスクリプトが動くため
    • 単純な方法としては、ファイルダウンロードをPOSTリクエストに限定する