ASP コードに存在する SQL インジェクションに対する脆弱性を検出する Microsoft Source Code Analyzer for SQL Injection ツールについて

文書翻訳 文書翻訳
文書番号: 954476 - 対象製品
すべて展開する | すべて折りたたむ

目次

はじめに

この資料では、Microsoft Source Code Analyzer for SQL Injection ツールについて説明します。この静的コード分析ツールを使用すると、ASP コードに存在する SQL インジェクションに対する脆弱性を検出できます。

詳細

Microsoft Source Code Analyzer for SQL Injection ツールは静的コード分析ツールであり、ASP (Active Server Pages) コードに存在する SQL インジェクションに対する脆弱性を検出するために役立ちます。この資料では、このツールの使用方法、ツールによって生成される警告、およびツールの制限事項について説明します。詳細については、ツールの Readme ドキュメントを参照してください。

必要条件

このコマンド ライン ツールでは、以下のソフトウェアが必要です。
  • .NET Framework 3.0

ASP コードにおける SQL インジェクションの問題

ASP コードの Request.Form コレクションまたは Request.Querystring コレクションによって取得されたユーザー入力データを使用して、データの検証を行わずに動的 SQL ステートメントが構築される場合、攻撃者が SQL コマンドを SQL ステートメントに挿入して悪用できます。これは、一般に "first-order SQL インジェクションの脆弱性" として知られています。

ある ASP ページを使用してユーザー入力がデータベースに保存された後、そのデータベースから取得したユーザー入力を使用して、別の ASP ページで動的 SQL ステートメントが構築される場合、攻撃者が SQL コマンドを SQL ステートメントに挿入して悪用できます。これは、一般に "second-order SQL インジェクションの脆弱性" として知られています。

これらの脆弱性を低減するには、パラメータ化された SQL クエリを使用することを推奨します。ASP に存在する SQL インジェクションに対する脆弱性、およびこれらの脆弱性を低減する方法の詳細については、以下のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ja-jp/library/cc676512.aspx
Microsoft Source Code Analyzer for SQL Injection ツールを使用すると、これらの問題のいくつかが自動的に検出されます。

使用方法

ここでは、このツールの使用方法について説明します。

構文

このツールでは、以下の構文を使用します。
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

説明

このツールは、ASP コードに SQL インジェクションに対する脆弱性が存在するかどうかを分析します。

パラメータ一覧

元に戻す全体を表示する
パラメータ オプション 説明
/GlobalAsaPath path Global.asa ファイルのパスを表します。
/IncludePaths paths ファイルを解決する場合に、含まれるパスを仮想パスを使用してセミコロンで区切られたパスで表します。
/input asp file 分析する必要がある ASP ファイルの絶対パスを表します。
/suppress warnings 警告は報告されません。
/nologo ツールのロゴは表示されません。
/quiet 解析エラーは表示されません。/nologo スイッチおよび /quiet スイッチを使用している場合は、警告メッセージのみが表示されます。

MSSCASI_ASP /input="c:\source\logon.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp" /IncludePaths="C:\virtualdirectory1;C:\virtualdirectory2"
MSSCASI_ASP /input="c:\source\webitems\display.asp" /suppress="80406;80407"

出力内容の確認

このツールでは、以下の警告が生成されます。
元に戻す全体を表示する
警告 説明
80400 入力に対する検証が行われない場合に、Request オブジェクトから読み取られたデータを利用した SQL インジェクションの脆弱性が存在する可能性があります。この警告は、修正が必要な問題が存在する可能性が高いことを示します。
80406 データの検証を実行できる不明な関数呼び出しによって入力データが渡される場合に、Request オブジェクトから読み取られたデータを利用した SQL インジェクションの脆弱性が存在する可能性があります。関数呼び出し内でデータの検証が実行されない場合は、問題が存在する可能性が高いことを示します。それ以外の場合、この警告は誤検知です。
80403 バックエンド サーバーから取得されるデータを利用した SQL インジェクションの脆弱性が存在する可能性があります。別の Web サイトを通じて、データがエンドユーザーによって制御されている場合は、問題が存在する可能性が高いことを示します。ただし、データの信頼性が高い場合は、問題が存在しない可能性があります。その場合でも、多層防御の戦略の一環として、これらのクエリをパラメータ化することを推奨します。
80407 バックエンド サーバーから取得されるデータ、および不明な関数呼び出しによって渡されるデータを利用した SQL インジェクションの脆弱性が存在する可能性があります。別の Web サイトを通じて、データがエンドユーザーによって制御されている場合、およびこのデータに対してデータの検証が行われない場合は、問題が存在する可能性が高いことを示します。
80420 関数パラメータを利用した SQL インジェクションの脆弱性が存在する可能性があります。この警告は関数スコープに対して生成されます。そのため、関数パラメータの値が信頼できるソースから取得されている場合、この警告は誤検知です。パラメータの値がエンドユーザーによって制御されている場合は、問題が存在する可能性が高いことを示します。関数パラメータの注釈に __sql_pre_validated を使用すると、エンドユーザーがこのコードを使用可能かどうかを検出できます。
80421 関数パラメータを利用した SQL インジェクションの脆弱性が存在する可能性があります。この関数パラメータは、データ検証を実行できる不明な関数呼び出しによって渡されます。関数パラメータの注釈に __sql_pre_validated を使用するか、検証関数の注釈に __sql_validate を使用すると、エンドユーザーがこのコードを使用可能かどうかを検出できます。

このツールによって生成されるすべての警告のうちで、実際の問題が存在する可能性が最も高いのは、警告 80400 です。ASP Web 開発者は、パラメータ化されたクエリを使用してこれらの問題を修正する必要があります。ASP コードでパラメータ化された SQL クエリを使用する方法の詳細については、以下のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ja-jp/library/cc676512.aspx

制限事項

このツールには、以下の既知の制限事項があります。
  • このツールでは、VBScript で記述された ASP コードのみが認識されます。現時点では、Jscript などの他の言語で記述されたサーバーサイド コードは認識されません。
  • このツールの開発工程の一環として、新しい ASP パーサーが開発されました。ただし、このパーサーは ASP 構造体のすべてに対応するものではありません。そのため、解析エラーが発生することがあります。

関連情報

Microsoft Source Code Analyzer for SQL Injection ツールをダウンロードするには、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
さまざまな推奨事項に関する資料の詳細については、次のマイクロソフト Web サイトを参照してください。
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
ASP での SQL インジェクションの防止の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ja-jp/library/cc676512.aspx
SQL インジェクション攻撃の詳細については、次のマイクロソフト Web サイトを参照してください。
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
このツールの詳細については、次のマイクロソフト Web サイトを参照してください。
http://blogs.msdn.com/sqlsecurity

プロパティ

文書番号: 954476 - 最終更新日: 2013年6月7日 - リビジョン: 2.0
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 2.0
キーワード:?
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com