SQL Server 用の累積的な修正プログラム (316333) (MS02-034)

公開日: 2002年7月11日 | 最終更新日: 2002年7月17日

概要 :

このセキュリティ情報の対象となるユーザー :
Microsoft® SQL Server 2000 または Microsoft SQL Server Desktop Engine (MSDE) 2000を使用しているデータベース管理者

脆弱性の影響 :
3 つの新しい脆弱性。最も深刻な脆弱性により、攻撃者が選択したコードがサーバー上で実行される可能性があります。

最大深刻度 :

推奨する対応策 :
影響を受けるシステムに更新プログラムを直ちに適用してください。

影響を受けるソフトウェア :

Microsoft SQL Server 2000 のすべてのエディション

SQL Server 2000 Desktop Engine (MSDE 2000)

詳細

問題

技術的な説明 :
これは累積的な更新プログラムで、SQL Server 2000 用に、過去にリリースされたすべての更新プログラムを含みます。さらに、SQL Server 2000 および MSDE 2000 に影響を及ぼす次の新しく確認された 3 つの脆弱性を排除しています。(SQL Server または MSDE の以前のバージョンはこれらの脆弱性の影響を受けません。)

バッファ オーバーランの脆弱性。この脆弱性は、SQL Server の資格情報を暗号化するために使用されるプロシージャに存在します。攻撃者がこの脆弱性を悪用し、データベースやサーバー自体で重要な制御を取得する可能性があります。(取得される制御は、SQL Server が実行されているアカウントにより異なります。)

バッファ オーバーランの脆弱性。この脆弱性は、SQL Server 上のテーブルへのデータ一括挿入に関するプロシージャに存在します。攻撃者がこの脆弱性を悪用し、データベースやサーバー自体での重要な制御を取得する可能性があります。

特権の昇格の脆弱性。この脆弱性は、SQL Server サービス アカウント情報が保存されているレジストリ キーに不適切なアクセス権限が与えられているために発生します。攻撃者がこの脆弱性を悪用し、システム管理者によって与えられたシステムでの権限よりも高い権限を取得する可能性があります。取得される権限は、オペレーティング システムと同じ権限である場合もあります。

問題を緩和する要素 :
パスワード暗号化プロシージャの未チェックのバッファ :

この脆弱性が悪用された場合の影響は、SQL Server サービスの構成によって異なります。SQL Server は、管理者が選択したセキュリティ コンテキストで実行されるように構成することができます。既定で、このコンテキストはドメイン ユーザーに設定されます。既定が選択されている場合、攻撃者が引き起こす可能性がある被害の程度を最小限にすることができます。

この脆弱性は次のセキュリティの最善策を講じることによって防ぐことができます。具体的には、信頼されないユーザーがデータベース サーバーで任意のクエリを読み込み、実行できないようにしておく必要があります。さらに、データベースが外部からアクセスできる場合、そのデータベースに対するクエリは、実行する前に入力をフィルタリグする必要があります。

一括挿入プロシージャの未チェックのバッファ :

この脆弱性が悪用されるには、攻撃者はすでにサーバーで重要な権限を所有していることが必要条件となります。この理由は BulkAdmin および sysadmin のみが、影響を受けるプロシージャを呼び出すクエリを読み込み、実行することができるためです。

この脆弱性が悪用された場合の影響は、SQL Server サービスの構成によって異なります。SQL Server は、管理者が選択したセキュリティ コンテキストで実行されるように構成することができます。既定で、このコンテキストはドメイン ユーザーに設定されます。既定が選択されている場合、攻撃者が引き起こす可能性がある被害の程度を最小限にすることができます。

次のセキュリティの最善策を講じることで、この脆弱性の影響を最小限にすることができます。具体的には、信頼されないユーザーがデータベース サーバーで任意のクエリを読み込み、実行できないようにしておく必要があります。さらに、データベースが外部からアクセスできる場合、そのデータベースに対するクエリは、実行する前に入力をフィルタリグする必要があります。

SQL Server サービス アカウント レジストリ キーの不適切なアクセス権限 :

攻撃者がこの脆弱性を悪用するには、システム上でクエリを読み込み、実行できることが必要条件となります。セキュリティ上の最善策に従い、この権限を管理者のみに制限することにより、ユーザーはこの脆弱性によって引き起こされる被害の状況を緩和することができます。

攻撃者がこの脆弱性を悪用するには、sysadmin または xp_regwrite 実行許可を与えられたユーザーを必要とします。

深刻度 :
パスワード暗号化プロシージャの未チェックのバッファ :

 インターネット サーバーイントラネット サーバークライアント システム

SQL Server 2000 (MSDE 2000 を含む)

一括挿入プロシージャの未チェックのバッファ :

 インターネット サーバーイントラネット サーバークライアント システム

SQL Server 2000 (MSDE 2000 を含む)

SQL Server サービス アカウント レジストリ キーの不適切なアクセス権限 :

 インターネット サーバーイントラネット サーバークライアント システム

SQL Server 2000 (MSDE 2000 を含む)

上記の評価はこの脆弱性の影響を受けるシステムの種類、システムの典型的な展開形式およびこの脆弱性がシステムに及ぼす影響に基づいています。「一括挿入プロシージャの未チェックのバッファの脆弱性」 の場合、BulkAdmin グループのメンバーのみが昇格したセキュリティ コンテキストでコードが実行される可能性があります。「SQL Server サービス アカウント レジストリ キーの不適切なアクセス権限の脆弱性」 の場合、攻撃者がこの脆弱性を悪用するには、クエリを読み込み、実行できることが必要条件となります。

脆弱性識別番号 :

パスワード暗号化プロシージャの未チェックのバッファ : CAN-2002-0624

一括挿入プロシージャの未チェックのバッファ : CAN-2002-0641

SQL Server サービス アカウント レジストリ キーの不適切なアクセス権限 : CAN-2002-0642

テストしたバージョン :
マイクロソフトは SQL Server 7.0 および SQL Server 2000 のテストを行い、これらの脆弱性による影響を評価しました。SQL Server 7.0 はこれらの脆弱性の影響を受けません。それより前のバージョンに関してはサポートの対象となっていないため、この脆弱性による影響は不明です。

よく寄せられる質問

この更新プログラムはどのような脆弱性を排除しますか?

これは累積的な更新プログラムで、適用することで、過去に解決したすべての脆弱性を解決しています。また、新しく確認された 3 つの脆弱性も排除しています。

SQL Server 認証のパスワード暗号化を処理するプロシージャに存在するバッファ オーバーランの脆弱性。これにより、攻撃者のコードが SQL Server と同じコンテキストで実行される可能性があります。

データベース テーブルの一括挿入を処理するプロシージャに存在するバッファ オーバーランの脆弱性。これにより、攻撃者のコードが SQL Server サービス アカウントのセキュリティ コンテキストで実行される可能性があります。

特権の昇格の脆弱性。これにより、攻撃者にオペレーティング システムのセキュリティ コンテキストで SQL Server のコマンドを実行する権限を取得される可能性があります。

MSDE とは何ですか? また、これは SQL Server とどのような関わりがありますか?

Microsoft Data Engine (MSDE) は SQL Server の技術に基づいて構築されたデータベース エンジンで、Microsoft Visual Studio および Microsoft Office Developer Edition などの、いくつかのマイクロソフト製品に同梱されています。MSDE のバージョンと SQL Server のバージョンは直接関連しています。MSDE 1.0 は SQL Server 7.0 の技術を基に構築されており、MSDE 2000 は SQL Server 2000 に基づいています。

ここで説明されている脆弱性は SQL Server 2000 の技術に基づいている MSDE 2000 を含んでいます。

パスワード暗号化プロシージャの未チェックのバッファ (CVE-CAN-2002-0624) : 1 番目の脆弱性でどのようなことが起こる可能性がありますか?

これはバッファ オーバーランの脆弱性です。攻撃者がこの脆弱性を悪用し、データベースやサーバー自体の重要な制御を取得する可能性があります。(取得される制御は、SQL Server を実行しているアカウントにより異なります。) 最悪のケースでは、攻撃者にデータまたはデータベースやオペレーティング システムの構成情報の追加、変更、削除を行われる場合があります。

この脆弱性が悪用されるのは、攻撃者に SQL Server での有効なログインがあり、およびサーバーでクエリを読み込み、実行できる場合です。またはシステム上の既存のクエリに制御されていない情報を渡すことができる場合です。セキュリティ上の最善策として、これらの操作が行われないようにすることを強く推奨します。

何が原因で起こりますか?

この脆弱性は、SQL Server 認証を使用するアカウントのパスワード暗号化を処理する SQL Server の機能に未チェックのバッファが含まれるために起こります。特殊なパラメータ指定でこの機能を呼び出すことにより、攻撃者はバッファ オーバーランの状態を発生させる可能性があります。

SQL Server 認証とは何ですか?

SQL Server のユーザーを認証する方法は次の 2 通りです。Windows に依存した ユーザーの資格情報の保存、認証を行う Windows 認証を介す方法、または SQL Server が SQL Server のテーブル内にローカルで保存されている情報に対し、ユーザー名とパスワードを比較することにより認証を行う SQL Server 認証を介す方法です。この脆弱性は、後者のタイプの認証に関連し、SQL Server 認証の資格情報の保存のサポートを提供する SQL Server 機能に関連するものです。

SQL Server のパスワード暗号化機能の何が問題になっていますか?

ここで問題となっている機能は、入力を処理するコードに含まれる未チェックのバッファによる影響を受けます。このため、攻撃者は、バッファ オーバーランが発生し、SQL Server プロセス内のメモリが上書きされるように、この機能を呼び出し、入力を提供することができるようになります。

この脆弱性により、攻撃者は何ができる可能性がありますか?

この脆弱性により、攻撃者は SQL Server の SQL Server サービス アカウントのコンテキストでコードを実行しようとする可能性があります。攻撃者のコードが行う特定の操作は、脆弱性が悪用される時点での SQL Server が実行されているセキュリティ コンテキストにより異なります。(下記で説明されている 3 番目の脆弱性により、SQL Server サービスのセキュリティ コンテキストを変更する方法が取得される可能性があることに注意して下さい。)

既定で、SQL Server はドメイン ユーザーとして、特権のないセキュリティ コンテキストで実行されます。既定で実行されているシステムに対し、この脆弱性が悪用されると、データベースでの制御が取得される可能性があります。可能性は低くなりますが、システム自体の制御が取得される場合もあります。SQL Server が特権のあるセキュリティ コンテキストで実行するように構成されている場合、この脆弱性が悪用されると、システムでさらに高い制御が取得される可能性があります。たとえば、サーバーが LocalSystem のコンテキストで実行されている場合、攻撃者のプログラムはオペレーティング システム自体と同じ権限を持ち、データの追加、変更、削除、セキュリティ設定の変更、特権を持つアカウントの追加など、システム上で任意の操作が行われる場合があります。

攻撃者はどのようにしてこの脆弱性を悪用するのですか?

ほんどの場合、攻撃者は、データベース サーバーに対して、問題となっている機能を呼び出し不正なパラメータでクエリを渡すことにより、この脆弱性を悪用しようとします。攻撃者はシステム上でクエリを作成し、実行できる必要があります。またはシステム上の既存のクエリの一部として不正なパラメータを入力する方法を見つける必要があります。どちらの状況でも、クエリが処理されると、バッファがオーバーランし、攻撃が開始されます。

この脆弱性の悪用を緩和するために何かできることはありますか?

はい、あります。この脆弱性が悪用されるのは、攻撃者が制御されていないデータをデータベース サーバーに渡す方法がある場合に限ります。これを制限するセキュリティ上の最善策が講じられている場合、この脆弱性が悪用されようとしても、それは緩和されるか、または完全に阻止されます。具体的には、データベース管理者が、承認されている管理者およびデータベース管理者のみがクエリを読み込み、実行できるようにします。更に、既存のクエリが、入力として受け取られたデータのチェックを厳格に行うようにしている場合、攻撃者がこの脆弱性を悪用しようとしても、それは完全に阻止できないとしても、著しく緩和されます。

さらに、これらのセキュリティ上の最善策は、Web に公開されたデータ ソースに対する SQL 挿入攻撃などの誤った構成が原因となる問題の発生を制限する手助けとなります。

更新プログラムはどのようにしてこの脆弱性を排除しますか?

この更新プログラムはパスワードの暗号化機能に含まれる入力バッファを正しく検証することにより、この脆弱性を排除しています。

一括挿入プロシージャの未チェックのバッファ (CVE-CAN-2002-0641) : 2 番目の脆弱性でどのようなことが起こる可能性がありますか?

これはバッファ オーバーランの脆弱性です。攻撃者がこの脆弱性を悪用し、データベースやサーバー自体の重要な制御を取得する可能性があります。最悪のケースでは、攻撃者にデータまたはデータベースやオペレーティング システムの構成情報の追加、変更、削除が行われる場合があります。

この脆弱性のケースでは、攻撃者は少なくとも BulkAdmin 固定サーバーロールのアカウントを所有し、サーバーでクエリを読み込み、実行できることが必要となります。これらの必要条件により、この脆弱性の発生は著しく制限されます。

何が原因で起こりますか?

この脆弱性は、一括データの挿入のために使用される SQL Server プロシージャに未チェックのバッファが含まれるために起こります。このため、攻撃者がこのプロシージャを呼び出すことができる場合、バッファ オーバーラン攻撃が行われる可能性があります。

「一括データの挿入」 とはどのような意味ですか?

SQL には、データ ファイルのデータをデータベース テーブルまたはユーザーが定義したビューに一括でコピーすることができるコマンドがあります。sysadmin および bulkadmin 固定サーバー ロールのメンバーのみがこのコマンドを実行することができます。

一括挿入機能の何が問題になっていますか?

ここで問題となっている機能には、入力を処理するコードに含まれる未チェックのバッファによる影響を受けます。このため、攻撃者は、バッファ オーバーランが発生し、SQL Server プロセス内のメモリが上書きされるように、この機能を呼び出し、入力を提供することができるようになります。

この脆弱性により、攻撃者は何ができる可能性がありますか?

この脆弱性により、攻撃者がこのプロシージャを呼び出すことができる場合、SQL Server サービス アカウントのコンテキストでコードを実行する可能性があります。上記で説明したように、SQL Server のアカウントは既定でドメイン ユーザーの権限のみを持ちます。しかし、さらに高い権限で実行されるように構成することができます。

攻撃者はどのようにしてこの脆弱性を悪用するのですか?

攻撃者は影響を受ける機能を呼び出すクエリを読み込み、実行することにより、この脆弱性を悪用しようとします。この脆弱性についても、攻撃者は BulkAdmin 固定サーバーロールのメンバーであることが必要条件となることに注意して下さい。既定で、このグループにはメンバーが存在しません。

深刻度の表によると、SQL 7.0 はこの脆弱性による危険にさらされないとのことですが、これはなぜですか?

SQL 7.0 にも一括挿入プロシージャがあり、バッファ オーバーランが発生しますが、この脆弱性がシステムを攻撃するために悪用されることはありません。SQL 7.0 では、管理者グループのメンバーのみが一括挿入プロシージャを呼び出すことができます。しかし、管理者はすでにサーバーでフル コントロールを所有しているため、新たに取得されるものはありません。

更新プログラムはどのようにしてこの脆弱性を排除しますか?

この更新プログラムは一括挿入プロシージャの入力バッファの正しいチェックを実装することにより、この脆弱性を排除します。

SQL Server サービス アカウント レジストリ キーの不適切なアクセス権限 (CVE-CAN-2002-0642) : 3 番目の脆弱性でどのようなことが起こる可能性がありますか?

これは特権の昇格の脆弱性です。攻撃者はこの脆弱性を悪用して、システム管理者により与えられた権限よりも高い権限を取得する可能性があります。取得される権限は、オペレーティング システムと同じ権限である場合もあります。

この脆弱性が悪用されるのは、攻撃者がデータベース サーバーでクエリを読み込み、実行できる場合に限ります。さらに、攻撃者が昇格した権限を取得する前に、サービスを停止し、再起動する必要があります。

何が原因で起こりますか?

この脆弱性は SQL Server が実行されているサービス アカウントに関する情報を含むレジストリの一部に不適切なアクセス権限が割り当てられているために起こります。SQL Server サービスはレジストリに書き込み、LocalSystem などの異なるサービス アカウントを指定する可能性があります。このため、SQL Server サービスはシステム管理者により与えられた権限よりもさらに高い権限を持つ異なるアカウントで実行される可能性があります。

SQL Server サービス アカウントとは何ですか?

Windows のセキュリティ モデルでは、システムでのすべての操作はセキュリティ アカウントのコンテキストで行われます。これにより、システムでの各操作がチェックされ、確実に承認、監査されるようになります。たとえば、オペレーティング システム自体により行われたすべての操作は LocalSystem アカウントのコンテキストで行われます。

SQL Server がインストールされる時、すべての操作を行うセキュリティ アカウントは管理者により指定されなければなりません。管理者が SQL Server が使用するアカウントを指定した後、この情報はサービスが起動する時に使用されるレジストリに保存されます。

SQL Server は既定で、オペレーティング システムで特権を持たないユーザーのコンテキストで実行されます。つまり、既定で、SQL Server サービス自体はシステムでほとんど操作を行うことはできません。

レジストリとは何ですか?

レジストリ (英語情報) とは Windows がオペレーティング システムとアプリケーションについての構成情報を保存する中央レポジトリです。

レジストリはオペレーティング システム設定 (デバイス情報、起動シーケンス、ネットワーク構成)、アプリケーション設定 (調整情報、構成パラメータ) およびユーザー設定 (ユーザーの選択、最近使用されたショート カット) などが保存される単一の場所です。

SQL Server サービス アカウント情報が保存される方法の何が問題になっていますか?

SQL Server サービス アカウント情報が保存されているレジストリの一部に不適切なアクセス権限が割り当てられています。具体的に、SQL Server サービス アカウントにはこの情報を変更する権限が割り当てられています。この結果、SQL Server プロセスが LocalSystem (これはオペレーティング システム自体の完全な特権を持つアカウントです。) など、異なるサービス アカウントを指定する可能性があります。この変更が行われた後、次に SQL Server サービスが起動する時、そのアカウントのコンテキストで実行されます。これによる最終的な影響として、SQL Server サービスが、システム管理者が与えた権限よりも高い権限で実行される可能性があります。

この脆弱性により、攻撃者は何ができる可能性がありますか?

この脆弱性により、攻撃者は SQL Server サービスの権限をオペレーティング システム自体の権限と同等にまで昇格させる可能性があります。SQL Server は、オペレータに代わって、それ自体のセキュリティ コンテキストでオペレーティング システムのコマンドを実行する手段を提供します。このため、この脆弱性の最終的な影響として、攻撃者がクエリを読み込み、実行できる場合、オペレーティング システム自体の権限と同じ権限で、コマンドを実行する可能性があります。このようにして、攻撃者はオペレーティング システムの構成の変更、管理者アカウントの追加、システムのセキュリティ設定の変更を行う場合があります。

攻撃者はどのようにしてこの脆弱性を悪用するのですか?

攻撃者は、レジストリ内のサービス アカウント情報を変更するクエリを SQL Server で読み込み、実行することにより、この脆弱性を悪用する可能性があります。

しかし、この攻撃の影響は、攻撃後にサービスが起動されるまで現れません。サーバーは再起動されるまで、引き続き元のセキュリティ コンテキストで実行されます。サーバーが再起動されると、新しく指定されたサービス アカウントのコンテキストで実行されます。この時点で、SQL Server が実行するオペレーティング システムのコマンドは新しいサービス アカウントの権限と許可で実行されます。

更新プログラムはどのようにしてこの脆弱性を排除しますか?

この更新プログラムはレジストリ キーでのアクセス権限を変更し、SQL Server がこの設定を変更できないようにしてこの脆弱性を排除しています。

更新プログラム

この問題に対する日本語版更新プログラムは、次のサイトからダウンロードできます。

Microsoft SQL Server 2000:
この問題に対する修正は SQL Server 2000 Service Pack 3 以降に含まれています。SQL Server 2000 日本語版の最新の Service Pack は、以下の Web サイトから入手できます。
http://www.microsoft.com/japan/sql/prodinfo/previousversions/downloads/2000/sp3.mspx

なお、個別の更新プログラムは以下の Web サイトから入手できます。
http://support.microsoft.com/kb/316333
リンク先で 「日本語版 : 8.00.0650_jpn.exe」 をクリックしてダウンロードしてください。

更新プログラムに関する追加情報

対象プラットフォーム :
SQL Server 2000 用の更新プログラムは SQL Server 2000 Service Pack 2 を実行しているシステムにインストールすることができます。

この修正を含む予定のサービス パック :
この問題に対する更新プログラムは SQL Server 2000 Service Pack 3 に含まれています。

再起動の必要性 :
なし。更新プログラムの適用後、SQL Server サービスの再起動のみが必要です。

更新プログラムに含まれる過去の修正 :
この更新プログラムは、マイクロソフト セキュリティ情報 MS02-020 で提供された累積的な更新プログラムを含みます。

更新プログラムが正しくインストールされたか確認する方法 :
SQL Server 2000 :

この更新プログラムが、マシンに正しくインストールされたことを確認するためには、サポート技術情報 316333 のファイル欄の日付、タイム スタンプを参照し、各ファイルを確認して下さい。

警告 :
このパッケージには Microsoft Data Access Component または Analysis Services 用のセキュリティ更新プログラムは含まれません。

ローカライズ :
サポートされている SQL Server の各言語用のパッケージが利用可能です。インストール情報については、ローカライズされた Readme.txt ファイルが各パッケージに含まれています。

他のセキュリティ更新プログラムの入手先 :
前述のように、これらの脆弱性は SQL Server 7.0 には存在しません。SQL Server を実行している場合、そのほかの脆弱性が解決された SQL Server 7.0 Service Pack 4 を実行しているかどうかを確認して下さい。SQL Server 7.0 用の Service Pack 3 を実行している場合、Service Pack 4 にアップグレードするか、または 318268 で、Service Pack 3 アップデートを適用する必要があります。

他のセキュリティ問題を解決する更新プログラムは以下のサイトから入手できます。

セキュリティ更新プログラムはマイクロソフト ダウンロード センターからダウンロードすることができます。「security_patch」 のキーワード探索によって容易に見つけることができます。

コンシューマー プラットフォーム用の更新プログラムは、Microsoft UpdateWeb サイトからダウンロードできます。

更新プログラムについてのご質問は、マイクロソフト プロダクト サポート までご連絡ください。マイクロソフトでは、ご質問の内容が弊社製品の不具合が原因の場合、サポート料金はいただきません。それ以外の場合には、サポート料金を請求させていただきますのでご注意ください。
マイクロソフト プロダクト サポートへの連絡方法はこちらをご覧ください。

詳細情報 :

US マイクロソフトセキュリティ情報(MS02-034)
http://www.microsoft.com/technet/security/bulletin/ms02-034.mspx

サポート技術情報 (KB) 文書番号 : 316333
[INF] SQL Server 2000 Service Pack 2 のセキュリティ アップデート 

更新履歴 :

2002/7/11: このセキュリティ情報ページを公開しました。

2002/7/17: この問題に対する日本語版 KB を公開しました。

本セキュリティ情報に含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation 及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation 及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。


ページのトップへページのトップへ