SQL 拡張プロシージャ機能に未チェックのバッファが含まれる (319507) (MS02-020)

公開日: 2002年4月18日 | 最終更新日: 2002年4月26日

概要 :

このセキュリティ情報の対象となるユーザー :
Microsoft® SQL Server™ を使用しているデータベース管理者

脆弱性の影響 :
攻撃者の選択したコードが実行される

最大深刻度 :

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

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

Microsoft SQL Server 7.0

Microsoft SQL Server 2000

詳細

問題

技術的な説明 :
SQL Server 7.0 および 2000 は拡張ストアド プロシージャを提供しています。これは C 言語などのプログラミング言語で書かれている外部ルーチンです。これらのプロシージャは、ユーザーには通常のストアド プロシージャのように見え、同じ方法で実行されます。SQL Server 7.0 および 2000 には様々なヘルパー機能に使用される多くの拡張ストアド プロシージャがあります。

マイクロソフトが提供している拡張ストアド プロシージャのいくつかに共通の問題が存在します。すなわち、これらの拡張ストアド プロシージャは入力確認を正しく行いません。この結果、バッファ オーバランの影響を受ける場合があります。この問題を利用して、攻撃者は SQL Server サービスを異常終了させる、または SQL Server が実行されているセキュリティ コンテキストでコードを実行できる可能性があります。SQL Server は様々なセキュリティ コンテキストで実行するように構成することができ、既定でドメイン ユーザーとして実行されます。攻撃者が取得することができる具体的な特権はサーバーが実行されている特定のセキュリティ コンテキストにより異なります。

攻撃者はこの脆弱性を次のいずれかの方法で利用する可能性があります。第一の方法として、攻撃者は影響を受ける機能の 1 つを呼び出すデータベース クエリを読み込み、そして実行する可能性があります。第二の方法として、Web サイトまたはほかのデータベースのフロント エンドが任意のクエリにアクセスし、そして処理するように構成されている場合、攻撃者は不正なパラメータを使用し、問題となっている機能の 1 つを呼び出すことができるパラメータを使用したクエリを実行できる可能性があります。

問題を緩和する要素 :

この脆弱性の影響は SQL Server サービスの特定の構成により異なります。SQL Server は管理者が選択したセキュリティ コンテキストで実行されるように構成することができます。既定で、このコンテキストはドメイン ユーザーです。最小限の特権管理の規則に従っている場合、攻撃者によってもたらされる損害は最小限となります。

この脆弱性が利用される可能性はセキュリティ上の対応策を講じることにより阻止することができます。具体的には、信頼されていないユーザーがデータベース サーバー上で選択したクエリを読み込み、実行することが許可されるべきではありません。さらに、公的にアクセス可能なデータベース クエリは入力を処理する前に、すべての入力をフィルタする必要があります。

深刻度 :

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

SQL Server 7.0

SQL Server 2000

上記の評価はこの脆弱性の影響を受けるシステムの種類、システムの典型的な展開形式およびこの脆弱性がシステムに及ぼす影響に基づいています。この脆弱性を利用して攻撃者はサーバーでコードを実行できる可能性がありますが、セキュリティ上の最善策により、この脆弱性が利用される可能性と、攻撃が成功した場合にもたらされる損害が制限されます。

脆弱性識別番号 :
CAN-2002-0154

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

よく寄せられる質問

どのようなことが起こる可能性がありますか?

これはバッファ オーバーランの脆弱性で、マイクロソフトが提供する拡張ストアド プロシージャのいくつかに共通して確認されたものです。影響を受ける拡張ストアド プロシージャにおいて、攻撃者はこの脆弱性を利用して、データベースおよびサーバーそのものを制御できる可能性があります。最悪の場合、攻撃者はデータベースのデータを追加、変更、削除したり、またオペレーティング システムを再構成し、新しいソフトウェアをインストールし、ハード ドライブを再フォーマットすることができる可能性があります。

しかし、以下の最善策が講じられている場合には、この脆弱性の影響を大幅に軽減できる可能性があります。

SQL Server は、最小限の特権管理の規則に従って一定のセキュリティ コンテキストで実行するように構成することができます。既定で、SQL Server は、サーバー上で権限が非常に限定されたドメイン ユーザーのセキュリティ コンテキストで実行されます。その対策が講じられている場合、攻撃が成功した場合に攻撃者が実行できる操作を制限できる可能性があります。

この脆弱性を利用するには、攻撃者が作成したクエリをサーバー上で読み込み、実行するか、または任意の情報をシステム上の既存のクエリに渡す必要があります。両者に対応するためにセキュリティ上の最善策を講じることを推奨します。

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

この脆弱性は、SQL Server により提供されるいくつかの拡張ストアド プロシージャがユーザーの入力を正しく処理せず、入力を使用する前にその長さをチェックしないために発生します。これにより、該当するストアド プロシージャでバッファ オーバーランの状態が発生します。

SQL 拡張ストアドプロシージャとは何ですか?

拡張ストアド プロシージャでは、C 言語などのプログラミング言語で独自の外部ルーチンを作成することができます。拡張ストアド プロシージャは、ユーザーには通常のストアド プロシージャのように見え、同じ方法で実行されます。データベース クエリは、拡張ストアド プロシージャにデータを渡し、その拡張ストアド プロシージャは結果とリターン ステータスを返します。

SQL Server に含まれている標準の拡張ストアド プロシージャには、たとえば以下のような電子メール機能を提供するものがあります。

SQL メール クライアント セッションを開始する xp_startmail

電子メールまたはページを送信する xp_sendmail

拡張ストアドプロシージャの何が問題になっていますか?

マイクロソフトが提供する拡張ストアド プロシージャの中には、渡される情報に対してバッファの大きさが適切であることを確認しないものがあります。このため、攻撃者はバッファ オーバーランを発生させるデータを入力し、SQL Serverプロセス自体のメモリを上書きする可能性があります。

攻撃者はこれにより何をすることができますか?

攻撃者が選択したデータの種類によって、以下の 2 つのうちいずれかが起こる可能性があります。

データがランダム データの場合、SQL Server のプロセスが異常終了します。

データが綿密に選択されたものである場合、攻撃者は SQL Server のサービス アカウントのコンテキストでコードを実行できる可能性があります。

攻撃者がランダムデータを入力した場合、通常の操作を回復するためには何をする必要がありますか?

管理者は SQL Serverサービスを再起動する必要があります。

攻撃者が綿密に選択したデータを入力し、SQL Serverソフトウェアを変更した場合、そのソフトウェアで何をすることができますか?

SQL Server の構成によって異なります。既定で、SQL Server は特権を所有しないセキュリティ コンテキストで実行されます。 (具体的には、ドメイン ユーザーとして実行されます。) この方法で構成されたサーバーに対してこの脆弱性を利用する攻撃者は、データベースを制御することができるようになりますが、そのほかにはほとんど影響ありません。

しかし、管理者が SQL Server をより高い権限で実行するように構成している場合、攻撃者はそれらの権限を獲得できる可能性があります。このように、攻撃が成功した場合の潜在的な被害は、SQL Server の構成で最小限の特権管理の規則に従っている程度に比例します。

この脆弱性を利用して攻撃者は何をする可能性がありますか?

攻撃者がこの脆弱性を利用する方法はいくつかあります。最も直接的な攻撃方法は、攻撃者が影響を受ける機能を呼び出し、バッファオーバーラン攻撃を起こすクエリを作成することです。しかし、これを成功させるためには、信頼されていないユーザーが任意のクエリを読み込み、実行できるようにサーバーを構成する必要があります。信頼されていないユーザーが作成したクエリを読み込み、実行しないようにセキュリティ上の最善策を講じておくことを強く推奨します。

攻撃者がこの脆弱性を利用しようとする方法はほかにありますか?

攻撃者が直接クエリを読み込み、実行できない場合でも、システムに該当するストアド プロシージャを利用しているクエリが存在する場合、これをクエリを通じて脆弱性を利用することができます。

たとえば、データベースが Web ベースの検索ツールの一部であり、問題になっている機能の 1 つがその Web サイトで呼び出される場合、攻撃者はこの脆弱性を利用できるクエリを作成する可能性があります。しかし、このようなクエリを作成するためには、攻撃者は Web サイトの検索機能の内部に関する詳しい知識が必要になります。

あるサイトで入力の適切なチェックを行わない Web ベースのクエリが実装されている場合、攻撃者は該当機能の呼び出しを含むデータベース コマンドを、データベース クエリパラメータに組み込むことができます。このため、データベース サーバーに入力パラメータを渡す前に、チェックすることが重要になります。

更新プログラムは何を修正しますか?

この更新プログラムは、該当する拡張ストアド プロシージャで適切なチェックが実行されるようにし、この脆弱性を排除します。

更新プログラム

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

Microsoft SQL Server 7.0 :
この問題に対する修正は SQL Server 7.0 Service Pack 4 以降に含まれています。

なお、個別の更新プログラムは以下の Web サイトから入手できます。全ての言語環境に適用することができます。
この問題に対する更新プログラムは SQL 7.0 用の累積的なセキュリティ更新プログラムで、次のサイトからダウンロードできます。
http://support.microsoft.com/kb/318268

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 サイトから入手できます。
この問題に対する更新プログラムは SQL 2000 用の累積的なセキュリティ更新プログラムで、次のサイトからダウンロードできます。
http://support.microsoft.com/kb/316333

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

対象プラットフォーム :

SQL Server 7.0 用の更新プログラムは SQL Server 7.0 Service Pack 3 を実行しているシステムにインストールすることができます。

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

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

SQL Server 7.0 Service Pack 4

SQL Server 2000 Service Pack 3

再起動の必要性 :
この更新プログラムを適用する前に、SQL Server サービスを停止する必要があります。

更新プログラムに含まれる過去の修正 :
MS02-007

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

更新プログラムが正しくインストールされたかを確認するためには、サポート技術情報 http://support.microsoft.com/kb/318268 のファイル欄に記載されているファイルの日付/時間のタイムスタンプを参照して下さい。


SQL Server 2000 :

更新プログラムが正しくインストールされたか確認するためには、サポート技術情報 http://support.microsoft.com/kb/316333 のファイル欄に記載されているファイルの日付/時間のタイムスタンプを参照して下さい。

警告 :
なし

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

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

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

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

詳細情報 :

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

サポート技術情報 (KB) 文書番号 : 319507
SQL 拡張プロシージャ機能に未チェックのバッファが含まれる 

更新履歴 :

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

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

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


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