マイクロソフトは8月21日,ほとんどのWindowsにデフォルトで含まれるコンポーネント群「Microsoft Data Access Components(MDAC)」にセキュリティ・ホールがあることを明らかにした。ネットワーク上のSQL Serverを探すために送信したブロードキャスト・リクエストの応答として,細工が施されたパケットを送信されると,MDACのあるコンポーネントがバッファ・オーバーフローを引き起こす。その結果,マシン上で任意のコード(プログラム)を実行されてしまう。対策はパッチを適用すること。「Windows Update」などから適用できる。深刻度は「重要」。マイクロソフトでは,できるだけ早く対策を施すよう勧めている

【8月21日追記】「MS03-033」のパッチはできるだけ早急に適用すべきである。というのも,このパッチには,8月21日に「緊急」に変更された「MS02-040」のパッチが含まれるからである。詳細については,記事末の追記部分を参照してほしい。タイトルも,当初「Windowsにデフォルトで含まれる『MDAC』にセキュリティ・ホール,深刻度は『重要』」としていたものを「Windowsにデフォルトで含まれる『MDAC』にセキュリティ・ホール,すぐにパッチの適用を」に改めた。とにかく,すべてのWindowsユーザーがWindows Updateを実施してほしい。【以上,8月21日追記】

 MDACとは,リモートあるいはローカルのデータベースにアクセスするためのコンポーネント群であり,WindowsやSQL Serverなどに含まれる。MDACの一部のコンポーネントに,バッファ・オーバーフローのセキュリティ・ホールが見つかった。セキュリティ・ホールが存在するMDACのバージョンは,2.5/2.6/2.7。MDAC 2.8は影響を受けない。MDACはほとんどのWindowsにデフォルトで含まれる。また,多くのアプリケーション・ソフトに含まれるとともに,MDACを単独でバージョンアップすることも可能である。このため,Windowsのバージョンから,現在インストールされているMDACのバージョンを判断できない。

 MDACがデフォルトでインストールされているのは,Windows Me/2000/XP/Server 2003。Windows NT 4.0にはデフォルトでは含まれないものの,「Windows NT 4.0 Option Pack」には含まれるので,Option Packを適用している場合にはセキュリティ・ホールの影響を受ける可能性がある。ただし,米Microsoftの情報によれば,Windows Server 2003にデフォルトでインストールされているのはMDAC 2.8であるため,Windows Server 2003は影響を受けないという。

 セキュリティ・ホールがあるMDACがインストールされている場合には,パッチを適用する必要がある。「[HOW TO] MDAC のバージョンを確認する方法」にバージョンの確認方法が記載されている。Windows Updateを利用すれば,必要に応じて自動的に適用されるので,ユーザーがバージョンを確認する必要はない。セキュリティ情報のページからもダウンロードできる。パッチは,MDAC 2.5/2.6/2.7 共通である。

 今回のセキュリティ・ホールを悪用されると,リモートから任意のコードを実行されてしまうので,攻撃が“成功”すれば,影響は大きい。マシンを乗っ取られる可能性がある。とはいえ,単に細工を施したパケットを,セキュリティ・ホールがあるマシンに送信しても,任意のコードは実行されない。攻撃者は,セキュリティ・ホールがあるマシンからの,ブロードキャスト・リクエストの応答として,細工を施したパケットを送信する必要がある。つまり,攻撃者は攻撃対象マシンと同じネットワーク(サブネット)上で,SQL Serverのふりをしてブロードキャスト・リクエストを待ち受ける必要がある。リモートから攻撃が可能ではあるが,インターネット経由で,あるいは異なるサブネット(ブロードキャストが届かないネットワーク)から攻撃することはできない。このため,深刻度は上から2番目の「重要」に設定されている。

【8月21日追記】 マイクロソフトは同日,2002年8月に公開したセキュリティ・ホール「MDAC 機能の未チェックのバッファにより,システムが侵害される (326573) (MS02-040)」の情報を大幅に変更した。

 このセキュリティ・ホールは,「MS03-033」同様,Windowsなどに含まれるMDACに関するものだが,当初は,Microsoft SQL Server 7.0/2000をインストールしているマシンだけが影響を受けるとされていた(関連記事)。このため,深刻度は「中」だった(現在の「警告」に相当すると考えられる)。

 しかし,SQL Server 7.0/2000をインストールしていなくても,MDAC 2.5/2.6/2.7 がインストールされていれば影響を受けることが明らかとなった。つまり,Windows Me/2000/XP はデフォルトで影響を受ける。Option Packなどを適用していれば,Windows NT も影響を受ける。影響範囲は,「MS03-033」と同じである。

 このセキュリティ・ホールを悪用されると,細工が施されたWebページやHTMLメールを閲覧するだけで,ユーザーのマシン上で任意のコードを実行させられてしまう。とても危険なセキュリティ・ホールである。このため,深刻度は最悪の「緊急」に変更された。

 すべてのWindows Me/2000/XPユーザーおよびMDAC がインストールされているNTのユーザーは,早急にパッチを適用する必要がある。

 マイクロソフトの情報によると,「MS02-040」のパッチは「MS03-033」のパッチに含まれるとしていて,(同ページでは)「MS02-040」の単独のパッチは用意していない。このセキュリティ・ホールを修正するには,「MS03-033」のパッチを適用する必要がある。

 つまり,「MS03-033」のセキュリティ・ホール自体は「重要」だが,「MS03-033」のパッチは,深刻度が「緊急」のセキュリティ・ホールを修正するものとして,すぐに適用する必要がある。とはいえ,Windows Updateでは自動的に必要なパッチが適用されるので,特に考える必要はない。Windows Updateを実施すればよい。

 なお,「MS02-040」のパッチ(実際には「MS03-033」のパッチに含まれる)を適用する際には注意すべき点がある。まず,(1)パッチを適用するときに「odbc32.dll」を使用しているプロセスがある場合は,セキュリティ・ホールが存在する,「dllcache」フォルダの「odbc32.dll」が置き換わらない。すなわち,セキュリティ・ホールが修正されない。また,(2)パッチ適用後に,「MDAC 2.7 Refresh」をインストールすると,修正された「odbc32.dll」が,セキュリティ・ホールがある「odbc32.dll」で上書きされてしまう。つまり,再びセキュリティ・ホールができてしまう。

 これらを防ぐには,(1)適用前に,「odbc32.dll」を使用しているプロセスが存在しないことを確認する,(2)MDAC 2.7 Refresh をインストールした場合には,再度パッチを適用する。詳しくは,「[MDAC] PRB: MS02-040 で提供される修正プログラムをインストールする際の注意点」を参照してほしい。(2)については,過去の「今週のSecurity Check [Windows編]」などでも解説しているので参考にしてほしい。
【以上,8月21日追記】

【9月3日追記】「MS03-033」のパッチを適用する際に,上記の注意点を考慮する必要はない。詳細は,「今週のSecurity Check[Windows編]」を参照してほしい。
【以上,9月3日追記】

◎参考資料
「MS03-033:Unchecked Buffer in MDAC Function Could Enable System Compromise (823718)」(米Microsoft)
「MS03-033: Microsoft Data Access Components のセキュリティ アップデート (823718)」に関する要約情報(マイクロソフト)
絵でみるセキュリティ情報「MS03-033 : Windows の重要な更新」(マイクロソフト)
「MDAC 機能の未チェックのバッファにより,システムが侵害される (823718) (MS03-033)」(マイクロソフト)

(勝村 幸博=IT Pro)