カスタム・ルール・ウィザードの使用

カスタム・ルール・ウィザードは、メソッドを AppScan® ソース・セキュリティー・ナレッジベース・データベース に追加するときに便利です。多くのカスタム・ルールの有効範囲はグローバル (すべてのプロジェクトに対して適用) です。カスタムのトレースなしの検出結果、ソース、シンク、汚染伝播元は常にグローバルです。カスタムの検証/エンコード・ルーチンはグローバルではありません。

注: カスタム・ルール・ウィザードは選択項目を検証しません。例えば、メソッドを汚染伝播元および有効なシナリオではないシンクとして識別するカスタム・ルールを定義することができます。

カスタム・ルール・ウィザードの説明に従うことにより、以下の項目を定義して ナレッジベース・データベースに追加することができます。

  • シンクとソース
  • 汚染伝播元
  • 汚染の可能性がないアプリケーション・プログラミング・インターフェース (API)
  • 脆弱性
  • トレースのない検索結果を生成する API
  • 検証/エンコード・ルーチンはグローバルではない API
  • 汚染されたコールバック
  • 情報項目

ソース (汚染)

プログラムへの入力を提供するメソッド (形式が正しくないまたは悪意のある可能性がある)。

シンク (汚染の可能性あり)

データをプログラムから (またはプログラムの可視部分から) ファイル、ネットワーク、データベース、その他のライブラリー、または悪意のある入力が疑われるデバイスに送信する API。

汚染伝播元

メソッドを汚染伝播元としてマークすることは、API への引数が検証されていない入力データ (汚染されたデータ) から抽出され、呼び出し後に、他の引数から参照されている一定ではないデータと戻り値も汚染している可能性があることを意味します。このようなデータは、シンクに送信する前に検証またはエンコードする必要があります。通常、この状況は、汚染された引数からのデータが他の引数にコピーまたは付加されたり、返されたりしたことによって発生します。

汚染の可能性なし

API を汚染の可能性なし (汚染伝播元ではない) としてマークすることは、検証されていない入力データ (汚染されたデータ) から抽出された引数を使用して API を呼び出しても API が安全でない動作または悪意のある動作をしないことを意味します。

汚染されたデータが呼び出しに到達して、その呼び出しが汚染の可能性なしとマークされた場合、 AppScan ソース は、トレースに関係するかぎり、呼び出しを無視します。 AppScan ソース・トレース は、消失トレースを報告せず、伝播されたデータを汚染済みとして処理しません。

注: 汚染されたデータが検証ルーチン、エンコード・ルーチン、シンク、または汚染伝播元ではないメソッド、または、汚染の可能性がないメソッドに到達した場合は、そのメソッドが消失トレースとして報告されます。一定ではない引数と戻り値は汚染されている場合とされていない場合があります。逸失トレースは、AppScan ソース・トレース の呼び出しグラフに表示されます。

トレースなしの検出結果

常に検出結果として表示されるが、トレースを生成しないメソッドまたは API。

検証/エンコード・ルーチンなし

API を「検証/エンコード・ルーチンなし」としてマークすると、この API がデータ検証を実行しないことが示されます。

汚染されたコールバック

コールバックとは、主に他の コードから (例えば、下位のフレームワーク内から) 呼び出されるコード内のルーチンです。コールバックは、他のコードに引数として渡されますが、後で、汚染された可能性のある引数を使用して呼び出される可能性があります。コールバックが汚染されたデータを引数に渡された可能性がある場合は、そのコールバックを汚染されたコールバックとしてマークすることができます。これにより、ルーチン経由の汚染されたデータの流れを可視化することができます。

汚染されたコールバックとしてマークされたルーチンは、コール・グラフのルートにある (つまり、不明な外部呼び出し元から呼び出された) 場合でも、汚染されたと見なされるすべての入力引数と一緒に分析されます。その結果、引数から汚染されたコールバックまでのトレースを使用して、AppScan ソース によって検出結果のレポートが作成されます。

同じルーチンがアプリケーション・コードから他のコンテキストで呼び出された場合は、そのルーチンが汚染について特別に考慮されることなく処理されます。このようなコンテキストでは、通常の分析が実施されます。

情報

情報検出結果として識別されたコード行は、汚染される可能性はありませんが、セキュリティー監査に含める必要があります。