この累積的な更新プログラムを 317748 で説明された更新プログラムと関連してインストールする場合の正しい順序を教えて下さい。
この累積的なセキュリティ更新プログラムは、サポート技術情報 317748 で提供された更新プログラム (これは SQL Server 2000 および MSDE 2000 の安定動作に必要となります) を含みません。インストールの正しい順序は、まず 317748 の更新プログラムを適用し、次にこの累積的なセキュリティ更新プログラムを適用します。サポート技術情報 317748 の更新プログラムを適用する前に、SQL Server 2000 または MSDE 2000 のインストールにこの累積的な更新プログラムを適用した場合、この累積的な更新プログラムのファイルを上書きしないために、ファイルの上書きの確認メッセージが表示された場合、[いいえ] を選択して下さい。
この累積的な更新プログラムがインストールされているかどうかはどのように確認するのですか?
この累積的な更新プログラムを適用したインスタンスの \MSSQL\BINN フォルダ内の ssnetlib.dll のバージョンが 2000.80.636.0 であることを確認して下さい。
\MSSSQL\BINN フォルダ内の ssnetlib.dll のバージョンが 2000.80.636.0 より前である場合、この累積的な更新プログラムを再適用する必要があります。しかし、マイクロソフトは MS02-061 で説明されているように、最新のセキュリティ更新プログラムを適用することを推奨します。この理由は、最新の更新プログラムにはこれらの製品に存在するそのほかのセキュリティ上の脆弱性に対する修正が含まれているためです。
この更新プログラムはどのような脆弱性を排除しますか?
この更新プログラムは 3 つの脆弱性を排除します。脆弱性はいずれも SQL Server 2000 解決サービスに関連します。
| • | はじめの 2 つの脆弱性では、攻撃者が影響を受ける SQL Server で重要な制御を取得する可能性があります。また、完全な制御を取得する場合もあります。 |
| • | 残る脆弱性では、攻撃者が 2 つの影響を受ける SQL Server 間で情報交換を永続的に行なわせ、SQL Server のパフォーマンスを著しく低下させる可能性があります。 |
SQL Server 2000 解決サービスとは何ですか?
SQL Server 2000 は、SQL Server の複数のコピーを単一のマシンにインストールする機能をサポートし、それらのコピーが完全に別のデータベース サーバーのように見えるようにします。これらのコピーは、インスタンス (英語情報) として知られ、お互いに独立して動作します。既定のインスタンスは TCP ポート 1433 をリッスンしますが、そのほかのインスタンスはこれと同じポートを共有できず、独自のポートを必要とします。
SQL Server 解決サービスは、SQL Server クライアントが特定のインスタンスが動作しているポートを見つけられるようにする方法を提供します。SQL Server の最初のインスタンスは常にポート 1433 を使用します。追加のインスタンスにはそれぞれ独自のポート番号が動的に割り当てられます。SQL クライアントが SQL Server の追加のインスタンスに接続する必要がある場合、SQL Server 解決サービス (UDP ポート 1434 で動作します) をクエリし、このサービスが接続するインスタンスが使用しているポートを SQL クライアントに伝えます。
UDP 1434 ポートは通常ファイアウォールでブロックされていますか?
特定の展開シナリオにより異なります。
| • | ネットワークがインターネット接続している SQL Server をホストしていない場合、SQL Server 解決サービスに関連するポート (および SQL Server に関連するそのほかのすべてのポート) はブロックすべきです。 |
| • | ネットワークが SQL Server サービスをインターネットに提供し、サーバーに単一のインスタンスのみが存在する場合、SQL 解決サービスは必要がないためブロックすべきです。 |
| • | ネットワークが SQL Server サービスをインターネットに提供し、1 つ以上のインスタンスが存在する場合、SQL 解決サービスにファイアウォールを介してアクセスできなければなりません。 |
SQL Server 解決サービスは SQL Server のより前のバージョンに存在しますか?
いいえ、存在しません。以前のバージョンの SQL Server では、複数インスタンスをサポートせず、SQL Server 解決サービスは存在しませんでした。このため、SQL Server のそのほかのバージョンはこれらの脆弱性の影響を受けません。
SQL Server 解決サービスのバッファ オーバーラン (CVE-CAN-2002-0649) : この脆弱性でどのようなことが起こる可能性がありますか?
ここで説明する 2 つの脆弱性は、どちらもバッファ オーバーランの脆弱性です。攻撃者はこの脆弱性を悪用し、サーバーを異常終了させる、または SQL Server の権限を使用し、コードを実行する可能性があります。
この脆弱性が悪用されることにより、攻撃者がデータベースを完全に制御できる可能性がありますが、必ずしもシステム自体を完全に制御できるとは限りません。SQL Server 2000 は様々なレベルの権限で実行されるように構成できます。既定では、管理者ではなく、ドメイン ユーザーの権限で実行されます。
何が原因で起こりますか?
SQL Server 解決サービスにより提供される機能に未チェックのバッファが含まれるため、これらの脆弱性が起こります。特別にフォーマットしたリクエストを UDP 1434 ポートに送ることにより、これらの機能に関連するバッファがオーバーランする可能性があります。
この脆弱性により、攻撃者は何ができる可能性がありますか?
この脆弱性により、攻撃者は次のいずれかの操作を実行可能です。
| • | SQL Server の異常終了。これは最も容易な攻撃で、攻撃者によるランダム データでバッファ オーバーランが引き起こされる可能性があります。 |
| • | 攻撃者が望む機能を実行するため、SQL Server の機能が変更される可能性があります。攻撃者によって綿密に作成されたデータでバッファ オーバーランが引き起こされる可能性があります。 |
この脆弱性は誰によって悪用される可能性がありますか?
影響を受けるサーバー上の SQL Server にリクエスト (UDP ポート 1434) を送ることができるユーザーが、この脆弱性を悪用する可能性があります。
攻撃者がこの脆弱性を悪用し、SQL Server を異常終了させた場合、通常の操作を再開するために、管理者は何をする必要がありますか?
管理者は SQL Server サービスを再起動することにより、通常の操作を再開することができます。
攻撃者がこの脆弱性を悪用し、SQL Server に攻撃者が望む機能を実行した場合、攻撃者のコードはどのような権限で実行されますか?
攻撃者のコードは SQL Server 自体のセキュリティ コンテキストで実行されるため、データベース機能を完全に制御できます。しかし、SQL Server 以外ではほとんど権限をもたない場合があります。SQL Server 2000 のセットアップ中、管理者は SQL Server を実行する Windows アカウントを選択する必要があります。既定で、SQL Server サービスはドメイン ユーザーとして実行されます。セキュリティ上の最善策が講じられ、そして通常のユーザー コンテキストが選択されている場合、攻撃者はオペレーティング システムの管理機能や、ドメインでの管理者特権を取得することはありません。
この更新プログラムはどのようにしてこれらの脆弱性を排除しますか?
この更新プログラムは SQL Server 解決サービスが入力データのサイズを正しく制限し、バッファ オーバーランさせないようにしています。
SQL Server 解決サービスによるサービス拒否 (CVE-CAN-2002-0650) : この脆弱性でどのようなことが起こる可能性がありますか?
これはサービス拒否の脆弱性です。攻撃者はこの脆弱性を悪用し、影響を受ける SQL Server のパフォーマンスを低下させる可能性があります。具体的にどのくらいのシステムのパフォーマンスが低下させられるかは、SQL Server が動作するマシンのプロセッサ速度とメモリ、サーバーを攻撃しているシステムの数など、様々な要素により異なります。
この脆弱性が悪用されても、必ずしも攻撃者にサーバーを異常終了させられることはありません。また、システム上の権限を取得されることもありません。攻撃が中止されると、すぐにサーバーは通常の操作を再開します。
何が原因で起こりますか?
この脆弱性は SQL Server 2000 の keep-alive メカニズム (解決サービスを介し動作します) に存在する問題が原因で起こります。特定のデータ パケットが SQL Server 2000 の keep-alive 機能に送られると、送信元に同じパケットを返信します。このようなパケットのソース アドレスを偽装することにより、2 台の SQL Server 2000 システム間で永続的なパケット交換を開始させることができる可能性があります。
SQL Server 2000 の keep-alive 機能とは何ですか?
SQL Server 2000 にはサーバーが動作中であるかどうかを確認するメカニズムがあります。これはkeep-alive パケットを UDP ポートの SQL Server 解決サービスに送り、応答をリッスンすることにより行われます。
SQL Server 2000 の keep-alive 機能の実装の何が問題になっていますか?
リクエストと応答が全く同じである keep-alive パケットを作成することができます。ある SQL Server が、このようなパケットを別の SQL Server に送る場合、これらがお互いに同じパケットを永続的に送る状態になります。この動作により 2 台のマシンの利用可能な帯域のほとんどを消費する可能性があります。
この状態は自然に発生する可能性がありますか?
いいえ、ありません。この脆弱性に関連するこのような状態は通常発生しません。SQL Server は通常、 keep-alive パケットを生成しません。しかし、攻撃者は、そのようなパケットを送信し、パケット交換を開始させ、その後、パケット交換を続けさせる状態とする可能性があります。
攻撃者はこれをどのように行うのですか?
脆弱性の影響を受ける 2 つの SQL Server があると仮定します。(それぞれ、サーバー 1、サーバー 2 とします。) そして、攻撃者が keep-alive パケットを作成し、パケットのソース アドレスを変更し、それがサーバー 1 のアドレスを含むようにします。次にそのパケットをサーバー 2 に送ります。サーバー 2 がサーバー 1 に応答し、サーバー 1 もサーバー 2 に応答するため、永続的な交換が開始されることになります。
この脆弱性により、攻撃者は何ができる可能性がありますか?
攻撃者はこの脆弱性を悪用し、2 つの SQL Server 2000 システムのリソースを同時に消費できる可能性があります。
この脆弱性は誰によって悪用される可能性がありますか?
影響を受ける SQL Server 解決サービスのポートにデータを送ることができるユーザーが、この脆弱性を悪用する可能性があります。
攻撃はどのくらい続きますか?
攻撃が開始されると、攻撃者はいずれかのマシンがパケットの送信を中止するまで攻撃を続行します。システムの再起動、SQL Server サービスの再起動、または 2 つのサーバー間の接続が切断されると、マシンはパケットの送信を中止します。
攻撃が終了すると、サーバー自体が通常の操作を再開しますか?
はい。
このような攻撃により、システム リソースはどの程度専有されますか?
攻撃の特性により異なります。たとえば、1 つのサーバーに対する攻撃に、複数のサーバーが使用される場合があります。同様に、システム間のネットワーク帯域、それぞれのマシンのプロセッサ速度などによっても異なります。
この更新プログラムはどのようにしてこの脆弱性を排除しますか?
この更新プログラムは、現在の keep-alive メカニズムを排除し、別のメカニズムにより、動作中のサーバーと停止中のサーバーを確認するようにします。この更新プログラムの適用後、SQL Server 2000 システムは keep-alive パケットに応答しなくなります。
既定のインスタンスのみが動作している場合も更新プログラムの適用が必要ですか?
必要です。既定のインスタンスで SQL Server をインストールしている場合も解決サービスが動作しているため、SQL Server (MSDE 2000) をインストールしているすべての環境で更新プログラムを適用する必要があります。
解決サービスが動作していることをどのように確認できますか?
SQL Server (MSDE 2000) が動作しているサーバーで、コマンド プロンプト、または DOS プロンプトから、 "netstat -a -n -p UDP" コマンドを実行することで確認することができます。解決サービスが動作している場合、UDP 1434 ポートが使用されているため、実行結果に UDP 0.0.0.0:1434 が表示されます。
ssnetlib.pdb が指定の場所に無い場合はどうするべきですか?
SQL Server 2000 を通常インストールした場合、 ssnetlib.pdb ファイルがインストールされることはありません。 そのため、更新プログラムに含まれる ssnetlib.pdb ファイルをご使用いただく必要はありません。また、readme.rtf ファイルで説明されている ssnetlib.pdb ファイルに関する作業は省略してください。
ssnetlib.pdb のバックアップのパスとコピー先のパスが異なってますが、正しいのでしょうか?
readme.rtf に記載されている手順には一部間違いがありました。お客さまにご迷惑をお掛けいたしましたこと、心よりお詫び申し上げます。
「修正モジュール標準インストール」 の手順 4 に 「Binn\Exe フォルダにそれぞれコピーします。」 と記載がありますが、
正しくは 「Binn\Dll フォルダにそれぞれコピーします。」 になります。