どのようなことが起こる可能性がありますか?
これはバッファ オーバーランの脆弱性で、マイクロソフトが提供する拡張ストアド プロシージャのいくつかに共通して確認されたものです。影響を受ける拡張ストアド プロシージャにおいて、攻撃者はこの脆弱性を利用して、データベースおよびサーバーそのものを制御できる可能性があります。最悪の場合、攻撃者はデータベースのデータを追加、変更、削除したり、またオペレーティング システムを再構成し、新しいソフトウェアをインストールし、ハード ドライブを再フォーマットすることができる可能性があります。
しかし、以下の最善策が講じられている場合には、この脆弱性の影響を大幅に軽減できる可能性があります。
| • | 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 ベースのクエリが実装されている場合、攻撃者は該当機能の呼び出しを含むデータベース コマンドを、データベース クエリパラメータに組み込むことができます。このため、データベース サーバーに入力パラメータを渡す前に、チェックすることが重要になります。
更新プログラムは何を修正しますか?
この更新プログラムは、該当する拡張ストアド プロシージャで適切なチェックが実行されるようにし、この脆弱性を排除します。