米国時間11月20日に公開された深刻なセキュリティ・ホールをふさぐには,修正パッチの適用では不十分で,MDACをバージョン2.7へアップグレードする必要がある。ところが,MDAC 2.7にも“落とし穴”があった。MDAC 2.7へアップグレードすると,過去に適用したある特定のパッチが無効になってしまうのだ。つまり,アップグレードにより,過去のセキュリティ・ホールの影響を受けるようになってしまう。アップグレードした後,該当するパッチを再び適用する必要がある。

MDAC 2.7に重大な“副作用”

 前回のコラムでは,Windows XP 以外のほとんどのWindows システムが影響を受ける深刻なセキュリティ・ホール「Microsoft Data Access Components のバッファ・オーバーランにより,コードが実行される (Q329414) (MS02-065)」を詳細に解説した。今回はその続報である。

 まず,前回のコラムには11月28日付けの追記情報があることをお断りしておこう。追記内容は,マイクロソフトがセキュリティ情報に「本問題に対する完全な対策は,MDAC バージョン 2.7 以降を適用することです」と追記したこと,MDAC2.7へのアップグレード方法や注意点を記載した「MDAC 2.7 ダウンロードページ」を公開したことなどである。詳細は前回のコラムの【11月28日追記】部分を参照してほしい。

 マイクロソフトの対応は素早く,十分評価できるだろう。ところが,この後とんでもない事実が発覚した。それは,「MS02-065」への“完全な対策”とされていた「MDAC 2.7 へのアップグレード」を実施すると,ある特定のセキュリティ・ホールが“再発”してしまうということだ。MDAC 2.7には“副作用”があったのだ。

セキュリティ・ホールがあるファイルで上書き

 現時点での MDAC 2.7 の最新バージョンは「MDAC 2.7 RTM Refresh (2.70.9001.0)」である。マイクロソフトのセキュリティ情報からも,このバージョンへのリンクが張られている。しかし“Refresh”と銘打っていても,MDAC 2.7 RTMのインストールに関する問題を修正しているバージョンに過ぎず,セキュリティ上の問題は修正されていない。MDAC 2.7に関して今までに公開されているセキュリティ・パッチは適用されていないのだ。

 つまり,MDACに関するパッチを適用してセキュリティ・ホールをふさいでいるシステムに,MDAC 2.7 RTM Refreshを適用すると,セキュリティ・ホールが存在するファイルで上書きしてしまうことになり,セキュリティ・ホールが“再発”してしまうのだ。

 詳細は,マイクロソフトが公開するナレッジ・ベース「JP436469 - [MDAC] PRB: MS02-040 で提供される修正プログラムをインストールする際の注意点」に記載されている。

 MDACだけの問題ではない。MDACはMSXML のコンポーネントを含んでいるので,MDAC 2.7の適用により,同コンポーネントも同様に“ダウングレード”してしまう。このダウングレードにより,「XMLHTTP コントロールにより,ローカル ファイルにアクセスすることができる (MS02-008)」の問題が“再発”してしまうことになる。

不十分なマイクロソフトの情報

 以上の問題が明らかになったために,マイクロソフトは「MS02-065」のセキュリティ情報の「警告」欄に11月29日付けで追記した。内容は,「MDAC 2.7 を適用した場合,MDAC 2.7 用の修正プログラムを適用する必要があります。修正プログラムにつきましては,セキュリティ情報一覧をご覧ください。また MDAC 2.7 は MSXML のコンポーネントを含んでいるため MS02-008につきましても併せて適用をお願いいたします」というものだ。

 問題の深刻さを考えると,実に“あっさり”した表記であると言わざるを得ない。というのも,「MS02-008」は,Internet ExplorerでWebページを閲覧しただけで,ユーザーのローカル・システムの情報をそのWebサイトへ送ってしまう恐れがある,最大深刻度が「高」のセキュリティ・ホールであるからだ。MDAC 2.7の適用により,「MS02-008」のパッチが無効になってしまう。事態は深刻である。

 加えて,MDAC 2.7適用後に適用すべきセキュリティ・パッチが明記されていないのも気になる。「セキュリティ情報一覧」を参照して適用しろとのことだが,これではあまりにも不親切だろう。さらに,「MS02-008」のパッチに関する記述も不十分だ。というのも,「MS02-008」のパッチは3種類存在し,環境によって適用すべきパッチが異なるからだ。

 結局「MS02-065」のセキュリティ情報では,(1)「セキュリティ情報一覧」を参照すれば得られるパッチ,(2)「MS02-008」のいずれかのパッチ――を適用する必要があることは分かるものの,具体的にどのパッチを適用すればよいのかが分からない。そこで,適用すべきパッチを調べてみる。

 まずは(2)を明らかにしよう。MDAC 2.7適用後に適用すべき「MS02-008」のパッチはどれか。これについては「MDAC 2.7 Refresh (2.70.9001.0) リリース マニュフェスト」にヒントがある。

 このページを見れば,MDAC 2.7に包含されるMSXML のコンポーネントが「msxml3.dll」(Version:8.20.8730.1)であることが分かる。このことから,適用すべきパッチは「Microsoft XML Core Services 3.0 (MSXML3.dll)」用のパッチであることが分かる。パッチを適用すれば,msxml3.dllのバージョンは「8.20.9415.0」になる。

 環境によっては,このパッチを適用する必要がないかもしれない。実際,筆者の「Windows 2000 + IE 5.5SP2」環境では,MSXMLのコンポーネントはダウングレードしておらず,パッチを再適用する必要はなかった。しかし,「MS02-008」のパッチを再適用しても害は無いので,適用する必要があるかどうかはっきりと分からない場合には,念のために再適用することをお勧めする。

【12月4日追記】上記を一部補足する。 MDAC 2.7 へのアップグレード時に,「msxml3.dll」が存在していないシステムにおいては,「MS02-008」のセキュリティ・ホールが生じることになるが,msxml3.dll が存在していて,かつその msxml3.dll に「MS02-008」のパッチを適用している場合には,「MS02-008」のパッチを再適用する必要はない。

「msxml3.dllが存在していて,MS02-008を適用している」システム*以外*において,新たなセキュリティ・ホールが発生することになる。言い方を変えると,「MS02-008」対処のために過去の(msxml3.dll以外に)パッチを適用した行為が無効になる。

自分のシステムが「msxml3.dllが存在していて,MS02-008を適用している」システムかどうか分からない場合には,念のために再適用しておこう。なお,MS02-008のパッチは,「Microsoft Internet Explorer 6.0 Service Pack 1」にも含まれている。【12月4日追記ここまで】

 次に,(1)「『セキュリティ情報一覧』を参照すれば得られるパッチ」が何かを明らかにしよう。まず,指定された「セキュリティ情報一覧」にアクセスし,MDAC 2.7適用後に必要なパッチを確認してみた。すると,「Microsoft Data Access Components のバッファ オーバーランにより,コードが実行される (Q329414) (MS02-065)」と「MDAC 機能の未チェックのバッファにより,SQL Server が侵害される (Q326573) (MS02-040)」の2件が表示された。

 前回のコラムでも強調したように,「MS02-065」のパッチは無効化される恐れがあるので対象外である。そもそもMDAC 2.7へのアップグレードは,「MS02-065」対策のために実施することだ。そうすると,残った「MS02-040」だけが,MDAC 2.7 適用後に必要なパッチとなる。

日米のサイトで異なるパッチ情報

 しかし,念のために筆者は,米Microsoftの「HotFix & Security Bulletin Service」でもチェックしてみた。今回の件に限らず,セキュリティ情報の調査には,複数のWebサイトの情報を使ったクロス・チェックが不可欠だ。

 マイクロソフトのサイトでは「MDAC」のキーワードでしか検索できないが,米Microsoftのサイトでは,より詳細な「MDAC 2.7」で検索できた。その結果,「MS02-040」に加え,「MS02-030 : Unchecked Buffer in SQLXML Could Lead to Code Execution (Q321911)」(日本語版は,「SQLXML の未チェックのバッファによりコードが実行される」)の2件が表示された。

 「MS02-030」の内容を詳細にチェックすると,MDAC 2.7に必要な修正パッチとしては妥当なものである。「MS02-040」は累積パッチではなさそうなので,「MS02-030」が「MS02-040」に含まれていることはないと推測される。つまり,「MS02-030」のパッチは個別に適用する必要がある。

 判断材料は「HotFix & Security Bulletin Service」だけである。マイクロソフトのセキュリティ情報および「セキュリティ情報一覧」が正しい可能性もある。つまり,必要なパッチは「MS02-008」と「MS02-040」だけで,「MS02-030」は適用する必要がないかもしれない。しかし筆者は,最終的に「MS02-030」も必要なパッチと判断した。

【12月4日追記】12月4日,マイクロソフトの「セキュリティ情報一覧」が更新されていることが確認できた。MDACのバージョン別の検索が可能になっているとともに,「MDAC 2.7」で検索すると「MS02-008」と「MS02-040」および「MS02-030」が表示された。【12月4日追記ここまで】

 以上をまとめると,「MS02-065」対策としてMDAC 2.7へアップグレードした後に適用すべきパッチは以下のように整理できる。

■MDAC 2.7へアップグレードした後に適用すべき修正パッチ一覧(Powered by「今週のSecurity Check」)

 「MS02-040」は SQL Server 7.0/2000を使用しているシステム,「MS02-030」はSQL Server 2000を使用しているシステムだけが適用すればよい。しかし,「MS02-008」はすべてのシステムで対応が必要だ。しかも深刻度は「高」である。早急にパッチを適用する必要がある。

マイクロソフトは「追記」情報の広報を

 今回の「MS02-065」に関しては,11月21日付けでセキュリティ情報が公開されて以来,11月27日には「MDAC 2.7以降のバージョンへアップグレードする必要がある」,11月29日には「MDAC 2.7 へアップグレードした後には修正パッチを再度適用する必要がある」――という,2度にわたる追記が行われた。いずれも,米MicrosoftのSecurity Bulletinでは未公開の情報である。情報の追記自体については,マイクロソフトのセキュリティ・レスポンス・チームの取り組みは十分評価に値する。

 しかし,大きな問題がある。これら2件の重要な追記が全く広報されていないのだ。「Microsoft TechNet」「TechNet セキュリティ センター」「Microsoft セキュリティ」,メールの「マイクロソフト プロダクト セキュリティ 警告サービス」など,広報する場が多数あるにもかかわらず,追記に関する情報は一切広報されていない。セキュリティ情報「MS02-065」の「更新履歴」欄にさえ,記載されていない(同欄には,日本語版KBが公開されたことしか記載されていない)。

 追記に気づくのは,セキュリティ情報の内容を逐一チェックしている筆者のようなユーザーに限られてしまう。そういったユーザーが一体何人いるだろうか。「MS02-065」の深刻度は,最悪の「緊急(Critical)」である。しかも,追記情報はいずれも非常に重要な情報だ。早急に,上記Webページやメール・サービスで積極的に広報していただきたい。

RDSを有効にしているサイトは少ない?

 「MS02-065」を悪用するようなワームが出現して被害をおよぼす恐れはあるだろうか。これについては,公開Webサーバーの統計調査で有名な英Netcraft「Netcraft Web Server Survey」において,興味深い調査結果を公開している。

 現在公開されている2002年11月分の調査結果には,「Microsoft RDS vulnerability not likely to be pervasive on web servers」という“小見出し”が設けられ,“Microsoft RDS vulnerability”,つまり「MS02-065」に関するコメントが記述されている。

 記述によると,「MS02-065」を悪用するワームが大きな被害をおよぼすことは無いとしている。理由は,Netcraft独自の調査では,RDS機能を使用しているWebサイトは少ないと推測できるためとしている。

 調査対象とした3568万6907サイトのうち,MicrosoftのWebサーバー(Internet Information Server/Services:IIS および Personal Web Server:PWS)を使用しているのが1023万9423サイトと,全体の28.69%を占めている。そして,実際にサービスを提供している(アクティブな)サイトは424万4842であるという。

 気になるRDS(Remote Data Services)を有効にしているサイトは,2001年にはアクティブなサイトのおよそ8%であったが,2002年にはおよそ5%に減少している。理由は,IIS 4.0からIIS 5.0への移行が進んでいるためとしている。IIS 4.0ではRDS機能がデフォルトで有効だが,IIS 5.0では無効に設定されている。

 同社の調査によると,IIS 5.0のサイトでRDS機能を提供しているのはほとんど無く,IIS 4.0のサイトで提供しているのは 4サイトに1サイトの割合である。調査対象としたサイトが少ないために,偏った結果が出ている可能性があるものの,RDS機能を外部に提供しているサイトが非常に少ないということに誤りはないだろうとしている。

 RDS機能の問題点に関しては,国内ではIPAの「緊急警告 Web 改ざん多発,Webサーバーソフトウェアにセキュリティパッチを」などでアナウンスされている。国内に限らず各国のセキュリティ組織も,繰り返し警告している。それらが功を奏して,各サイトが対策している可能性は高い。Netcraftが言うように,IIS 5.0への移行が進んでいることも関係しているだろう。

攻撃コードが出現,対策は不可欠

 しかし,RDSを有効にしているサイトが非常に少ないといっても,ゼロではない。Netcraftによれば,調査対象としたアクティブな400万サイトの5%――すなわち,約20万サイト――は,RDS機能を提供していることになる。RDS機能を提供しているサイトのどの程度が「MS02-065」対策を施しているだろうか。対策を施していないサイトは決して少なくはないだろう。

 さらに,「MS02-065」を悪用する攻撃コードが流通し始めたという情報がある。IIS 5.0サーバーに対しては,Windows 2000上で任意のコードを実行し,IIS 4.0へはDoSアタックを仕掛ける攻撃コードである。

 「RDSを有効にしているサイトが少ない」といっても,油断はできない。大規模なアタックが発生する可能性は十分にある。既に対策済みと認識している管理者も,チェック漏れがあるかもしれない。改めてチェックしておこう。

 もちろんWebサーバー管理者だけではなく,すべてのWindowsユーザーが改めてチェックしたい。前回のコラムでも述べたように,WindowsクライアントではRDSを無効にできない。「MS02-065」への“完全な対策(MDAC 2.7へのアップグレード+パッチの適用)”を施していない場合は,攻撃に対して全くの無防備であるのだ。




山下 眞一郎(Shinichiro Yamashita)
株式会社 富士通南九州システムエンジニアリング
第一ソリューション事業部ネットソリューション部 プロジェクト課長
yama@bears.ad.jp


 「今週のSecurity Check [Windows編]」は,IT Proセキュリティ・サイトが提供する週刊コラムです。Windows関連のセキュリティに精通し,「Winセキュリティ虎の穴」を運営する山下眞一郎氏に,Windowsセキュリティのニュースや動向を分かりやすく解説していただきます。(IT Pro編集部)