マイクロソフトは7月25日,同社のデータベース・サーバー・ソフト「Microsoft SQL Server 2000」のセキュリティ・ホール「MS02-039:SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される」を公開した。最大深刻度は「高」。SQL Server 2000が稼働するマシンに,ある細工が施されたパケットを送信されると,任意のコード(プログラム)を実行されたり,SQL Serverが提供するサービスを妨害されたりする恐れがある。対策はパッチの適用。また,ファイアウオールなどでUDP ポート 1434番をふさげば,外部からの攻撃を回避できる。

 今回,SQL Server 2000が提供する「SQL Server Resolution Service(解決サービス)」にバッファ・オーバーフローなどのセキュリティ・ホールが見つかった。SQL Server 2000では,自身のコピー(「インスタンス」と呼ぶ)を複数作成することで,1台のマシンで複数のデータべース・サービスを提供できるようになった。デフォルト・インスタンスはTCPポート1433番でサービスを提供するが,それ以外のインスタンスのポートは動的に割り当てられる。どのポートで動作しているのかについての問い合わせに答えるのが,SQL Server Resolution Serviceである。

 SQL Server Resolution Serviceが動作する UDP ポート 1434番へ,ある細工が施されたパケットが送信されると,同サービスはバッファ・オーバーフローなどを引き起こし,SQL Serverのサービスを停止させられたり,任意のコードを実行されたりする。コードはSQL Server Resolution Serviceの権限(デフォルトは「Domain User」)で実行される。

 対策は,マイクロソフトが公開するパッチを適用すること。なお,パッチを適用するには,あらかじめ SQL Server 2000 Service Pack 2 を適用しておく必要がある。また,ファイアウオールなどで,SQL Server Resolution Serviceが動作する UDP ポート 1434番に外部からアクセスできないようにしておけば,インターネット経由の攻撃を防げる。

 なお,マイクロソフトは同日,同じく SQL Server 2000のセキュリティ・ホールである「MS02-038: SQL Server 2000 ユーティリティの未チェックのバッファ により,コードが実行される」を公開した。こちらのパッチでふせげるセキュリティ・ホールの最大深刻度は「中」であるが,管理者は適用しておきたい。

 注意しなければいけないのは,「MS02-038」は過去のパッチを含む“累積パッチ”であるものの,上述の「MS02-039」のパッチは含んでいないということ。そのため,「MS02-038」と「MS02-039」の両方のパッチを適用する必要がある。

 また「MS02-038」には,SQL Server 2000のパスワード問題を解決する「MS02-035」や,MDACやOLAPに関する問題を解決するパッチ(「MS00-092」や「MS01-041」,「MS02-020」,「MS02-030」に含まれる)も含まれていない。これらについては個別に適用する必要がある。詳細は米MicrosoftのSecurity Bulletinなどを参考にしてほしい。

◎参考文献
MS02-039 に関する情報(マイクロソフト,要約情報とパッチ)
Microsoft Security Bulletin MS02-039「Buffer Overruns in SQL Server 2000 Resolution Service Could Enable Code Execution」(米Microsoft,英語情報)
MS02-038 に関する情報(マイクロソフト,要約情報とパッチ)
Microsoft Security Bulletin MS02-038「Unchecked Buffer in SQL Server 2000 Utilities Could Allow Code Execution」(米Microsoft,英語情報)

(勝村 幸博=IT Pro)