1日中用事があったので、ようやく今見ることができたのだが、Aviv Raffは本当に悪い男だ。私は常に彼のブログを追っているのだが、彼はいつも何か面白いことをやっており、その多くは他の分野の攻撃のことについていろいろと考えさせられるものだ。とにかく、彼が米国時間5月14日にXPのIE 7.0と8.0bのゼロデイ脆弱性について書いているのを見た時にも私は驚いたりはしなかった。彼はこのセキュリティホールを、Internet Explorerの「リンクの一覧を印刷する」機能のクロスゾーンスクリプティング脆弱性と呼んでいる。
詳細はAvivのブログに書かれており、概念実証コードも与えられているので、説明は彼に任せたいが、ここでいくつかの点について説明しておきたい。
概要
Internet Explorerは「リンクの一覧を印刷する」機能にクロスゾーンスクリプティング脆弱性を持っている。この機能は、ユーザーがウェブページを印刷する際にそのページに含まれているすべてのリンクの表を別表として付加するというものだ。
攻撃者はウェブページに特別に作成されたリンクを簡単に加えることができるが(自分のウェブサイト、ブログのコメント、ソーシャルネットワーク、Wikipediaなど)、そのウェブページをこの機能を使ってユーザーが印刷すると、攻撃者はユーザーのマシンで任意のコードを実行できる(例えばそのマシンの制御を獲得することもできる)。
まだきちんと検証したわけではないので、これについては引用しないで欲しいのだが、これはGoogle docsのようなオンラインワードプロセッサで、ユーザーに文書のHTML版を印刷する機能を提供するなどという場合でも可能なのではないか。あるいはそれに似た、ユーザーがその情報をオンラインだけでなく印刷して読みたいというような場合なら同じことが起き得るのではないか。
技術的な詳細
ユーザーがページを印刷する際、Internet Explorerはローカルリソースのスクリプトを使って印刷のために新たなHTMLを生成する。このHTMLに含まれている要素は、ヘッダ、ウェブページの本体、フッタであり、この機能が有効になっていればこれにウェブページのリンクの表が含まれる。
このスクリプトはリンクの内部データのテキストを使うだけで、そのリンクのURLを検証することはなく、そのままの形でそれを印刷用のHTMLに追加する。このため、新しいHTMLが生成される際に実行されるスクリプトを挿入することが可能になる。
以前の記事で書いたように、Internet Explorerのローカルのリソースの大半は、現在はインターネットゾーンで実行されている。ところが残念ながら、印刷のためのローカルリソーススクリプトはローカルマシンゾーンで実行されているため、挿入されたスクリプトはユーザーのマシンで任意のコードを実行することができる。
なんだか聞いたことがあるような気がしないだろうか。実際、これは私がこれまで意識してブログで取り上げてきた話題を思わせる。これは、Black Hat VegasでRob Carter、John Heasman、Billy Riosと一緒に行うプレゼンテーションのテーマになる予定だ。クロスサイトスクリプティングでもっとも懸念されるのは、Avivが指摘している問題と同様に、より高い特権を持つゾーンでスクリプトが実行される場合のことだ。一部のケースでは、実際にOS上で任意のコードを実行でき、ファイルの読み書きができ、(クッキーを使って)あらゆるクロスドメインの要求も行うことができる。これについては別の記事で述べることにしたい(以前からその予定はしている)。しかしもしこれについて今もっと詳しく知りたいのであれば、Rob Carterが彼のブログでこの問題に本格的に取り組んでいる。
Aviv、いつも通り非常に面白い仕事だ。
この問題はゼロデイ脆弱性であるため、まだパッチは当てられていない。しばらくの間は、「リンクの一覧を印刷する」機能を使ってウェブページを印刷する時には注意することだ。真面目な話だが、このリンクを印刷すると・・・いや、これは冗談だ。しかし、安全には注意して欲しい。
この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ