2002年7月だけで,SQL Server関連のセキュリティ・ホールが計9種類,マイクロソフトから報告された。異常な事態である。SQL Serverは,それほど信頼性の低いプロダクトなのであろうか? 今回は,SQL Serverに関するセキュリティの現状を整理するとともに,現時点で必要なパッチをリストアップする。

セキュリティ・ホールの発見者はだれか?

 まず,合計9種のセキュリティ・ホールの報告者について見てみよう。もし一般のユーザーによって,通常の操作や運用中に発見されているとすれば,事態は深刻である。今回の9種にとどまらず,これからも続々と発見される可能性が非常に高いと考えられるからだ。

 セキュリティ・ホールの発見者(報告者)は,「マイクロソフト セキュリティ情報」のオリジナル版である「Microsoft Security Bulletin」の“Acknowledgments(謝辞)”の項で調べられる。それによると,7月に公開された SQL Serverのセキュリティ・ホールの発見者は,以下の通りである。

「SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される (Q323875) (MS02-039)」で報告された3種類のセキュリティ・ホール:Next Generation Security Software社のDavid Litchfield氏

「SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される (Q316333) (MS02-038)」で報告された2種類のセキュリティ・ホール:アルゼンチンのセキュリティ研究者 Cesar Cerrudo氏

「SQL Server のインストール プロセスで,パスワードがシステムに残る (Q263968) (MS02-035)」で報告された1種類のセキュリティ・ホール:Cesar Cerrudo氏

「SQL Server 用の累積的な修正プログラム (Q316333) (MS02-034)」で報告された3種類のセキュリティ・ホール:Cesar Cerrudo氏 および David Litchfield氏

 どうやら「Microsoft Security Bulletin」を見る限りでは,一般のユーザーではなく,特定のセキュリティ・ベンダーや“バグ・ハンター”によって発見されたセキュリティ・ホールのようだ。

影響を事前に回避できたか?

 次に,今回公開されたSQL Serverのセキュリティ・ホールは,事前に回避できたかどうかを見てみよう。すなわち,新たにパッチを適用しなくても,設定などをきちんと施していれば,影響を受けることはないセキュリティ・ホールだったのだろうか。

 結論から言うと,基本的な対策を施していれば,9種類のうち「MS02-039」の「SQL Server 解決サービスによるサービス拒否」を除く8種類のセキュリティ・ホールは回避可能なものだった(なお,「SQL Server 解決サービスによるサービス拒否」を悪用されても,任意のコードを実行されることはない)。“基本的な対策”とは,以下のような対策である。

  1. SQL Serverが稼働するマシンに対話的にログオンできるユーザーを制限する。加えて,パスワード管理を徹底する
  2. エッジ(境界)ルーターあるいはファイアウォールで,SQL Server が使用するポート(例えば「SQL Server 解決サービス」が使用する UDP ポート 1434番など)を遮断する
  3. 任意のユーザーがSQL Serverに対して,任意のクエリーを実行できないようにする。加えて,入力されたクエリーを実行前にフィルタリングする

 つまり,今回発見されたセキュリティ・ホールのほとんどが,新しいタイプのセキュリティ・ホールではなく,このコラムで何度も紹介している,基本的なセキュリティ対策が有効なセキュリティ・ホールであった。

パッチの適用対象は明確か?

 では次に,SQL Serverのセキュリティ・ホールに関するマイクロソフトの情報提供について見てみよう。設定などである程度回避できるといっても,パッチの適用は不可欠だ。そのパッチに関する情報が分かりやすく公開されているかを検証してみよう。

 具体的には,SQL Server 2000用パッチに絞って(1)適用条件,(2)最新の累積パッチ,(3)累積パッチ以降に公開されたパッチ,(4)累積パッチ以前に公開されて,累積パッチには含まれないパッチ――について見ていく。

 まず,(1)の適用条件については,マイクロソフトのセキュリティ情報で明確にされている。いずれのパッチも,SQL Server 2000 SP2 を適用済みであることが,パッチの適用条件である。

 (2)の最新の累積パッチについても明確である。一番新しいパッチから順に見ていけば,「SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される (Q316333) (MS02-038)」が最新の累積パッチであることが分かる。

 (2)が明らかになれば,(3)の累積パッチ以降に公開されたパッチも明らかだ。「SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される (Q323875) (MS02-039)」が該当することになる。

 問題は,(4)の「累積パッチが含まないパッチ」である。このようなパッチが存在しなければ,「最新の累積パッチ」と「それ以降のパッチ」さえ適用すれば十分なのだが,累積パッチが不完全なため,これら以外のパッチも適用する必要がある。

 累積パッチが不完全であることは米Microsoft自身も認めている。というのも,「MS02-038」は,当初「SQL Server 2000 Service Pack 2 用の累積的な修正プログラム(原題:Cumulative Patch for SQL Server 2000 Service Pack 2)」というタイトルでリリースされたものの,急きょ「SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される(原題:Unchecked Buffer in SQL Server 2000 Utilities Could Allow Code Execution)」に差し替えられたという経緯があるからだ。

 では,「最新の累積パッチ」と「それ以降のパッチ」以外に,どのパッチを適用すればよいのだろうか。実は,マイクロソフトのセキュリティ情報では明確にされていない。以降具体的に説明するので,SQL Serverの管理者は参考にしてほしい。

必要なパッチは結局5種類

 累積パッチが含まないパッチについては,「MS02-038」の「マイクロソフト セキュリティ情報」にも当然記載されている。ただし,これがちょっと分かりにくい。

 同情報には,“例外事項”が2点記載されていて,含まれないパッチを説明している。例外事項の1点目では,「『SQL Server のインストール プロセスで,パスワードがシステムに残る (Q263968) (MS02-035)』で提供された『KillPwd ユーティリティ(KillPwd.exe)』を含まないとしている。これについては,明快だ。「MS02-035」を適用すれば対応できる。

 問題は例外事項の2点目だ。セキュリティ情報には

この修正プログラムは SQL Server 2000 の MDAC または OLAP 用に 以前リリースされた修正プログラムも含みません。このセキュリティ情報 作成時点では,これらの修正プログラムは次のセキュリティ情報で説明されている修正プログラムを含みます。

   ・マイクロソフト セキュリティ情報 MS00-092
   ・マイクロソフト セキュリティ情報 MS01-041
   ・マイクロソフト セキュリティ情報 MS02-020
   ・マイクロソフト セキュリティ情報 MS02-030

と記載されている。内容はともかく,“日本語レベル”で分かりづらい。

 原文は,“At this writing, these patches include the ones discussed in”なので,「このセキュリティ情報作成時点では,これらの修正プログラムは次のセキュリティ情報で説明されている修正プログラムに含まれます」としたほうが分かりやすいだろう。

 さらに言えば,「『MS00-092』『MS01-041』『MS02-020』『MS02-030』は個別に適用する必要がある」と明確に書くべきだ。オリジナル(英語情報)に忠実であるよりも,このように分かりやすく記述してくれたほうが,ユーザーとしてはありがたい。

 ただし,このうち「MS00-092」「MS01-041」は,SQL Server 2000 SP1 に含まれているので,改めて適用する必要はない。また,「MS02-020」は,「S02-034」に含まれているので「MS02-034」だけを適用すれば十分である。

 結局,以上の情報を整理すれば,SQL Server 2000 SP2のシステムに必要な個別パッチは,現時点では以下の5種類になる。

SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される (Q323875) (MS02-039)・・・最新の累積パッチ以降に公開されたパッチ

SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される (Q316333) (MS02-038)・・・最新の累積パッチ

SQL Server のインストール プロセスで,パスワードがシステムに残る (Q263968) (MS02-035)・・・最新の累積パッチに含まれないパッチ

SQL Server 用の累積的な修正プログラム (Q316333) (MS02-034)・・・最新の累積パッチに含まれないパッチ(を含む過去の累積パッチ)

SQLXML の未チェックのバッファによりコードが実行される (Q321911) (MS02-030)・・・最新の累積パッチに含まれないパッチ(使用している MDAC のバージョンにより,適用すべき修正パッチが異なる特殊なケース)

評価できる,マイクロソフトの「製品別修正プログラム一覧」

 次に,筆者が導き出した結果を,米Microsoftやマイクロソフトの公開情報を使って検証してみた。まずは,米Microsoftが提供する「Hotfix and Security Bulletin Search」を使用した。このサービスを使えば,現時点で必要なパッチをプロダクトごとに検索できる。

 「SQL Server 2000 SP2」で検索した結果,「『MS02-039』『MS02-038』『MS02-035』『MS02-034』『MS02-030』『MS02-020』『MS02-007』」の7種類が表示された。一見筆者の結果と異なるが,「MS02-007」は「MS02-020」に,「MS02-020」は「MS02-034」に包含されているので,結局は同じことである。ただし,“読み替え”が必要なので,不親切と言わざるを得ない。

 一方,マイクロソフトが提供する「製品別修正プログラム一覧」「SQL Server 2000 SP 2セキュリティ修正プログラム一覧」では,「Hotfix and Security Bulletin Search」よりも精度が高い情報を提供していた。過去のコラムで何度か指摘しているように,現在のマイクロソフトのセキュリティ対応チームは,精力的に自らの責任を果たしていると評価できよう。

 「SQL Server 2000 SP 2セキュリティ修正プログラム一覧」では,筆者がリストアップした5種類のパッチに加えて,「MS02-008」も注意書きとともにリストアップしてある。具体的には,「この修正プログラムは,MS02-008「よく寄せられる質問」をお読みになり,修正プログラムの適用が必要なお客様のみダウンロードしてください」と書かれている。

 筆者はリストアップしなかったものの,確かに「MS02-008」が対象とする「Microsoft XML Core Services(MSXML) 」は,SQL Server 2000にも包含されている。念のために,「よく寄せられる質問」の「修正プログラムの適用が必要であるかどうかはどのように分かるのですか?」の項をチェックして,適用が必要かどうかを判断してほしい。

 以上のように,今回 SQL Server 2000 SP2のシステムに必要な個別パッチを改めて調べてリストアップしてみたが,情報が分かりづらく,適用を徹底することが容易ではない状況であることが分かった。ただし救いは,これらの個別パッチが,次期Service Packである「SQL Server 2000 SP3」にすべて含まれることが表明されていることだ。

 「Windows 2000 SP3」に関しては,前回のコラムで,システムの安定稼働を重視する場合には,公開されてもあわてて適用しないことをお勧めしたが,SQL Server 2000 SP3の場合は異なる。セキュリティ関連のパッチに限っても,SP3を適用することなしに,個別パッチで対応するのは非常に難しい。SQL Server 2000 SP3 が公開されたら,すぐに適用することをお勧めする。

SQL Server 2000にセキュリティ・ホール

 次に,Windows関連のセキュリティ・トピックス(2002年7月27日時点分)を,各プロダクトごとに整理して解説する。各種サーバー・アプリケーション関連では,「マイクロソフト セキュリティ情報一覧」にて,新規日本語情報とパッチが3件,新規情報が1件公開された。SQL Server 2000 および Exchange Server 5.5 などに関する情報である。まずは,コラムの前半でも紹介した,SQL Server 2000に関する「MS02-039」と「MS02-038」についての詳細をまとめる。

(1)SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される (Q323875) (MS02-039)

 SQL Server 2000において,3 つの新しいセキュリティ・ホールの情報が公開された。最も深刻なセキュリティ・ホールを悪用されると,SQL Server 2000 がインストールされているシステムの制御を奪われる可能性がある(関連記事)。

 対策はパッチを適用すること。深刻なセキュリティ・ホールなので,速やかにパッチを適用しよう。パッチの適用条件は,SQL Server 2000 SP2 を適用済みであること。なお,SQL Server 7.0は今回のセキュリティ・ホールの影響を受けない。

 今回の「MS02-039」は,(i)「SQL Server 解決サービスのバッファ オーバーラン」に関する2種類のセキュリティ・ホールと,(ii)「SQL Server 解決サービスによるサービス拒否」に関する1種類のセキュリティが対象だ。最大深刻度の評価はいずれも「高」である。

 (i)に関する2つのセキュリティ・ホールは,「SQL Server 解決サービス」に存在する未チェックのバッファが原因である。攻撃者からある細工が施されたパケットを SQL Server 解決サービス に送られると,システム・メモリーの一部(一方のセキュリティ・ホールではヒープ,もう一方ではスタック)をバッファのオーバーランにより上書きされる。

 その結果,DoS(サービス拒否)攻撃が成立する。加えて,SQL Server サービスのセキュリティ・コンテキスト(権限)で,任意のコードを実行される可能性もある。

 エッジ(境界)ルーターあるいはファイアウオールにおいて,SQL Server 解決サービスが使用するUDP ポートの1434番を遮断している場合は,外部から攻撃を受けることはない。

 (ii)のセキュリティ・ホールを利用すれば,2つのSQL Serverシステムに対してDoS攻撃を仕掛けることが可能となる。攻撃者からある特定のパケットが SQL Server 解決サービスに送られると,SQL Server 2000 は,送信パケットと同じ応答を返す「keep-alive」パケットを生成する。

 このとき,keep-alive パケットのソース・アドレスを偽装して,別のSQL Server に送信されるようにしておけば,2つのシステム間で keep-alive パケットの“ピンポン”を発生させることができる。その結果,これら2つのSQL Serverシステムのリソースが消費させられ,DoS攻撃が成功する。

 ただし,DoS攻撃を受けることがあっても,システムの制御を奪われる恐れはない。また,DoS攻撃が成功しても,いずれかのシステムで SQL Server 2000 サービスを再起動すれば復旧できる。

(2)SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される (Q316333) (MS02-038)

 SQL Server 2000において,2つの新しいセキュリティ・ホールが公開された。最も深刻なセキュリティ・ホールを悪用されると,SQL Server 2000 が稼働するサーバー上で任意コードを実行される可能性がある。なお,SQL Server 7.0は影響を受けない。

 対策はパッチの適用。最大深刻度の評価は「中」であるが,深刻なセキュリティ・ホールなので速やかに適用しよう。パッチの適用条件は,SQL Server 2000 SP2 を適用済みであること。コラムの前半で記述した通り,「MS02-038」のパッチは不完全であるものの,最新の累積パッチである。

 「MS02-038」は,(i)「Database Consistency Checker のバッファのオーバーランのぜい弱性」,(ii)「複製ストアド プロシージャの SQL インジェクションのぜい弱性」という2種類のセキュリティ・ホールが対象だ。

 いずれも,悪用されれば任意のコードを実行される可能性がある,深刻な脅威であるものの,それぞれの最大深刻度の評価は(i)は「中」,(ii)は「低」である。その理由として,(i)は対象システムにおいて,重要な権限を持つユーザーだけが悪用可能,(ii)はSQL Serverがデフォルトの状態では悪用できない――ために,「高」ではないとしている。

 また,いずれの場合でも,攻撃者が対象システムにログオンできることが必要条件である。そのため,対話的にログオンすることが可能なユーザーを制限することと,パスワード管理を徹底することで,影響を緩和できる。

Exchange Server 5.5 にセキュリティ・ホール

 サーバー・アプリケーション関連では,Exchange Server 5.5にもセキュリティ・ホールが見つかっている。

(3)SMTP クライアント EHLO コマンドへのサーバー応答で,バッファ・オーバーランが発生する (Q326322) (MS02-037)

 Exchange Server 5.5 の「Internet Mail Connector (IMC) 」に含まれる,未チェックのバッファが原因である(関連記事)。悪用されれば,任意のコードを実行される可能性がある。対策は,既に公開されている日本語版パッチを適用すること。適用条件は,Exchange 5.5 Service Pack 4 を適用済みであることだ。

 悪用が困難であるため,最大深刻度の評価は 「中」と設定されているが,深刻なセキュリティ・ホールなので速やかにパッチを適用しよう。なお,Exchange 2000 は影響を受けない。 

 さらに,「Microsoft Metadirectory Services (MMS) 2.2」のセキュリティ・ホールも公開された。

(4)Microsoft Metadirectory Services の認証問題により,権限が昇格する (Q317138) (MS02-036)

 MMS とは,Active Directory や他のディレクトリ・サービス,データベースや Exchange Server といった,異なるデータ・レポジトリの相互運用と集中管理を可能にするプロダクトである。

 MMSのデータ・アクセス管理に不具合があるために,一般ユーザーの権限を不正に昇格してしまう恐れがある。

 ただし,MMS は英語版のみが提供されており,日本語版のプロダクトは存在しないので,影響を受けるユーザーはほとんどいないだろう。

Media Player用パッチの不具合が修正

 各種クライアント関連では,「マイクロソフト セキュリティ情報一覧」にて,更新パッチが1件公開された。

2002 年 6 月 26 日 Windows Media Player 用の累積的な修正プログラム (Q320920) (MS02-032)

 以前のコラムでお知らせした通り,Windows Media Player 6.4,7.1 および Windows Media Player for Windows XP のセキュリティ・ホールが,6月26日に公開された。任意のコードを実行される,非常に深刻なセキュリティ・ホールであったため,このコラムでもパッチの適用を強く勧めた。

 そのパッチに,不具合があることが明らかとなった。今回,セキュリティ情報ページが改訂され,累積的な修正パッチとして提供された「MS02-032」のパッチには,「MS01-056」のパッチが完全な形で含まれていないことがアナウンスされた。

 過去に「MS01-056」を適用した上で「MS02-032」を適用している場合には問題はないが,「MS02-032」しか適用していない場合には,「MS01-056」のセキュリティ・ホールの影響を受けてしまう。今回公開された更新版のパッチには,「MS01-056」がきちんと含まれているので,「MS01-056」を適用していないシステムでは,更新版パッチを再度適用しよう。

「Windows 2000 Server セキュリティ運用ガイド」が公開

 「TechNet Online セキュリティ」では,「Windows 2000 Server セキュリティ運用ガイド」というドキュメントが公開された。

 システム管理者向けのドキュメントであり,(1)Windows 2000 ベースのサーバーを安全に運用するための最善の手順,(2)さまざまな攻撃によるリスクを緩和するための情報,(3)適切なセキュリティ・レベルを見いだす方法と,そのレベルの維持に必要な作業の説明――などが記載されている。

 目次にも,「セキュリティ・リスクとは」,「Windows 2000 グループ・ポリシーを使ったセキュリティ管理」,「ロールに基づいたサーバー・セキュリティの強化」,「修正プログラムの管理」,「監査と侵入検知」,「問題への対応」などの重要なキーワードが並んでいる。非常に有用なドキュメントなので,システム管理者は必ず目を通しておこう。

Exchange 2000 SP3が公開

 「Exchange Server 製品情報」では,最新の Service Pack であるExchange 2000 日本語版 SP3 が公開された

 「障害修正パッチ」や「Microsoft Windows .NET Server ドメイン・コントローラとの相互操作性機能」,その他セキュリティに関するアップデートが含まれているので,内容を確認した上で,必要に応じて適用しよう。



マイクロソフト セキュリティ情報一覧

『SQL Server 2000/SQL Server Desktop Engine (MSDE) 2000』
SQL Server 2000 解決サービスのバッファのオーバーランにより,コードが実行される (Q323875) (MS02-039)
 (2002年7月25日:日本語情報および日本語版パッチ公開,最大深刻度 : 高)

『SQL Server 2000/SQL Server Desktop Engine (MSDE) 2000』
SQL Server 2000 ユーティリティの未チェックのバッファにより,コードが実行される (Q316333) (MS02-038)
 (2002年7月26日:CVE 番号の誤りを正しい番号に修正,最大深刻度 : 中)
 (2002年7月25日:日本語情報および日本語版パッチ公開,最大深刻度 : 中)

『Exchange Server 5.5』
SMTP クライアント EHLO コマンドへのサーバー応答で,バッファ オーバーランが発生する (Q326322) (MS02-037)
 (2002年7月26日:セキュリティ情報を更新され修正パッチがアンインストール可能であることがアナウンス,最大深刻度 : 中)
 (2002年7月25日:日本語情報および日本語版パッチ公開,最大深刻度 : 中)

『Metadirectory Services 2.2』
Microsoft Metadirectory Services の認証問題により,権限が昇格する (Q317138) (MS02-036)
 (2002年7月25日:日本語情報公開,最大深刻度 : 中)

『Media Player 6.4/7.1/Media Player for Windows XP』
2002 年 6 月 26 日 Windows Media Player 用の累積的な修正プログラム (Q320920) (MS02-032)
 (2002年7月26日:セキュリティ情報ページを修正し,MS01-056用パッチがきちんと含まれていなかったことを公表,最大深刻度 : 高)

TechNet Online セキュリティ

Windows 2000 Server セキュリティ運用ガイド

Exchange Server 製品情報

Exchange 2000 Service Pack 3 ダウンロード開始 !!


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


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