現在オフラインです。再接続するためにインターネットの接続を待っています

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

はじめに
この資料では、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 サイトを参照してください。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 インジェクションに対する脆弱性が存在するかどうかを分析します。

パラメータ一覧

パラメータオプション説明
/GlobalAsaPathpathGlobal.asa ファイルのパスを表します。
/IncludePathspathsファイルを解決する場合に、含まれるパスを仮想パスを使用してセミコロンで区切られたパスで表します。
/inputasp 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 サイトを参照してください。

制限事項

このツールには、以下の既知の制限事項があります。
  • このツールでは、VBScript で記述された ASP コードのみが認識されます。現時点では、Jscript などの他の言語で記述されたサーバーサイド コードは認識されません。
  • このツールの開発工程の一環として、新しい ASP パーサーが開発されました。ただし、このパーサーは ASP 構造体のすべてに対応するものではありません。そのため、解析エラーが発生することがあります。
関連情報
Microsoft Source Code Analyzer for SQL Injection ツールをダウンロードするには、次のマイクロソフト Web サイトを参照してください。さまざまな推奨事項に関する資料の詳細については、次のマイクロソフト Web サイトを参照してください。ASP での SQL インジェクションの防止の詳細については、次のマイクロソフト Web サイトを参照してください。SQL インジェクション攻撃の詳細については、次のマイクロソフト Web サイトを参照してください。 このツールの詳細については、次のマイクロソフト Web サイトを参照してください。
プロパティ

文書番号:954476 - 最終更新日: 06/07/2013 22:40:00 - リビジョン: 2.0

Microsoft ASP.NET 2.0

  • atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
フィードバック
varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("