24日、Internet Explorer(IE)に脆弱性が見つかったとしてマイクロソフトがセキュリティアドバイザリを公開した。INTERNET Watchでもニュースとして「IEの危険な脆弱性、マイクロソフトが今後のパッチで対応予定」と報じている。
この脆弱性は悪用されると、WebサイトやHTMLメールを通じて任意のコードを外部から実行される恐れがある。デンマークのSecuniaや仏FrSIRTなどのセキュリティベンダーでは、最も危険な脆弱性として警告している。現在までにわかっている問題について解説しておきたい。
● 乗っ取りコード自体の作成も可能な状態
マイクロソフトやSecunia、FrSIRT、それにこの問題が投稿されたメーリングリスト「Bugtraq」などの情報を総合すると、かなり危険な脆弱性であるようだ。
この脆弱性はヒープオーバーフローの問題なのだが、日本時間の3月27日未明現在までに、この脆弱性を使って外部からPCを乗っ取るコードそのものの存在は確認されていない。だが、IEをクラッシュさせるコードは公開されており、このコードが乗っ取り用コードを作るための重要なヒントとなっている可能性が高い。
不正なバイナリをヒープ上に展開させるコードを実行させるにはある程度アセンブラの知識が必要だが、逆に言えば、アセンブラの知識さえあれば乗っ取りコード自体の作成も可能な状況になっていると考えるべきだろう。
なお、この脆弱性はWindows XP SP2、Windows Server 2003/SP1用のIE 6、Windows 2000 SP4上のIE 5.01 SP4など、多くのOSとIEの組み合わせに存在している。ただし、この問題はβ版として公開されているIE 7やFirefox、Operaでは確認されていない。従って、手軽な対処方法としては、当面の間この問題が存在しないIE以外のブラウザを利用するのも「アリ」だろう。
このほかの対処方法としては、脆弱性の根本的な修正ではないものの、マイクロソフトのセキュリティアドバイザリにあるように「IEでアクティブスクリプトが実行される前にダイアログを表示するよう設定する」または「アクティブスクリプトを無効にする」方法が有効だ。また、不審なHTMLメールを開くこと、インターネット上の掲示板などでも不審なリンクをクリックしないように注意すること、不審なリンク先のファイルを開くのをウイルス対策ソフトなどで防ぐようにするのも有効だろう。
● 現在の状況は「DoSなら誰でもできる」状態
この問題が知られるようになったのは、もともとセキュリティ関係者が脆弱性情報などを投稿するメーリングリスト「Bugtraq」にStelian Ene氏が投稿したメールがきっかけとなった。22日に投稿された同氏のメールによると、IEには、次のような内容を含むHTMLを表示させようとすると、クラッシュするバグがある。
このコードは、IEのcreateTextRange()メソッドに問題があることを示している。Secuniaなどによれば、このバグによって、ヒープ上に何らかのデータが展開され、そのデータをプログラムと見なして実行される恐れがあるという。つまり、ヒープオーバーフローがこのバグの本質であるようだ。
コード自体は簡単なもので、誰でも簡単にWebサイトを読み込んだIEをクラッシュさせられるものと言えよう。ただし、現時点でインターネット上で公開されている情報はここまでで、任意のバイナリをPC上で実行させるためのコードは公開されていない。
Secuniaなどでは、この情報を元に実証コードを作成し、任意のコードが動くことを確認したようだが、実際に任意のコードをPC上で動かす悪意のコードを作成するには、送り込んだバイナリにPCの制御ができるよう工夫しなければならない。そのためには多少のアセンブラの知識が必要となる。
誰でも悪意のコードとして実装できるわけではないので、まだ最悪の事態には若干の余裕があるが、危険な状況には変わりない。できるだけ先に挙げたアクティブスクリプトで、警告ダイアログを表示させるあるいは無効にする、またはIE以外のブラウザを使用することを検討する――といった対策を取るようにすべきだろう。
【追記 21:19】
すでにいくつかのニュースサイトなどで報じられているが、セキュリティベンダーなどによっては今回の「createTextRange()メソッドの脆弱性」を利用したexploitコード、もしくは限定的な攻撃ではあるものの悪意のあるコードとして使用されたことを報告しているようだ。
セキュリティベンダーなどからの情報を総合するとexploitコードにはいくつかのバージョンがあるようようだが、筆者も、インターネット上の掲示板でそのうちの1つを確認した。
公開されているexploitコードは、Javaスクリプトを含むHTMLテキストで、デモとしてWindows内の「電卓」アプリケーションを起動するものだった。電卓の起動部分は任意のプログラムに置き換えることが可能なため、任意のコードを実行する悪意のプログラムに簡単に改造できると考えられる。
|
クラッカー系の掲示板などに掲載されたexploitコード。実効性には疑問がつくが、外部からPC上の任意のプログラム(この場合はWindows内の電卓アプリ)を実行できた。公式にパッチが提供されるまでは、インターネットの利用には警戒が必要だろう
|
ただし、クラッキングする側も、この脆弱性におけるヒープオーバーフローの仕組みを完全にはまだ把握できてないようだ。
exploitコードに含まれているJavaスクリプトでは、ヒープメモリ内に大量のNOP(実行時に影響しない)コードと、シェルを起動しWindows標準の電卓を起動するシェルコード本体を書き込んでいる。つまり、ヒープオーバーフローを発生させて、PCがどこからプログラムを実行し始めても作者が意図するプログラムを実行させるように、メモリ中のかなり広い範囲に作成したプログラムへの入り口を展開しているようなのだ。
このためこのexploitコードでは、確実に任意のコードが実行されるわけではなく、実際、筆者の確認した限りでも環境によっては動かないケースがあった。また、実行に時間がかかり、HTMLファイルが表示されてから電卓が起動するまで1分以上かかった。
悪意のプログラムとして転用しても、実用性があるかと言われると微妙な感じもするが、今後しばらくは、IEでページを表示させてからディスクへのアクセスが激しくなり、反応しなくなるようなケースは、念のためにIEを終了させてしまうことがいいかもしれない。
なお、ここまでくれば時間のかかるNOP展開などは必要なくなるだろう。今後、悪意のプログラムを作るための手順は、ヒープメモリ中の特定領域から意図したプログラムを動かせるように、Windowsの脆弱な部分のプログラムを解析するだけだと思われる。いずれにしても、完全に悪用が可能になるまであとわずかだと言えよう。
このパッチは少なくとも4月の月例パッチには公開される予定だ。緊急で公開されることもあり得るが、それまではしばらくセキュリティ関係のニュースに注目しつつインターネットを利用することが必要だろう。
関連情報
■URL
マイクロソフトのセキュリティアドバイザリ
http://www.microsoft.com/japan/technet/security/advisory/917077.mspx
■関連記事
・ IEの危険な脆弱性、マイクロソフトが今後のパッチで対応予定(2006/03/24)
・ IEの「createTextRange()」メソッドの脆弱性、4月の月例パッチで修正(2006/03/27)
( 大和 哲 )
2006/03/27 13:13
- ページの先頭へ-
|