[WEB SECURITY] Universal XSS with PDF files: highly dangerous
あちこちで話題になっている件。Acrobat がフラグメント識別子に含まれる JavaScript を実行するため、PDF を置いてあるサイトであれば簡単に XSS を発生させることができるそうです(また上野宣か)。
(2007/01/05追記)ここで書いてあるのは、Adobe Reader / Acrobat で発見された複数の脆弱性のうち、XSS に関連するものだけです。それ以外にも、リモートからコードの実行が可能な脆弱性なども発見されています。それらについては ITmedia エンタープライズ:Adobe Readerプラグインに複数の脆弱性 等を参照してください。
クライアント側での対策
- Acrobat (Reader) を version 8 にする。
- これがもっとも本質的な対策です。参考: そのださんところ、他力さんところ。
- Adblock Plus でブロック。
- "*.pdf#*javascript*" のようなルールを設定してブロック。抜け道だらけなので、普通はこんな対策はしないほうがよいです。
- PDF を常にダウンロードするように設定。
- Mozilla Firefox の場合、「ツール」→「オプション」→「コンテンツ」→「ファイルタイプ」の「管理」で、PDF / FDF / XFDF / XDP / XFD 等の Acrobat と結びついているようなファイルすべてについて「動作設定を変更」で「ディスクに保存する」を選びます。ただし、PDF 等のファイルがブラウザ内では直接開けなくなるので、利便性は落ちます。
サーバ側での対策
- 強制的にダウンロードさせるようにヘッダを返す。
- PDF にアクセスしたときにWebブラウザ上で開かれるのではなく、強制的にダウンロードとなるように Web サーバを設定しておくことで、自分のサーバにて XSS が発生することを防げます。ただしこの場合、当然ながらブラウザ上で直接 PDF が開けなくなりますので、ユーザの利便性は落ちます。参考: bun さんのところ。
- フラグメント識別子を指定してリダイレクトさせる。
- サーバ側でフラグメント識別子も含めた形でリダイレクトさせることにより、クライアント上で悪意あるスクリプトが動作することを阻止可能です。参考: [seasurfers:0407]、[seasurfers:0410]。