ルールの追加

このタスクのトピックでは、カスタム・ルール・ウィザードを使用してカスタム・ルールを追加する手順について説明します。

このタスクについて

注: セキュリティーまたはスキャン範囲検出結果の追加または削除と重大度の変更がプロジェクトの V-Density に影響します。

手順

  1. 「カスタム・ルール」ビューで 「カスタム・ルール・ウィザードの起動」 ボタンをクリックして、ウィザードを開きます。
  2. 「アプリケーション、プロジェクト、およびファイルの選択」 ページで、ルールを適用する 「アプリケーション」「プロジェクト」 を選択します。ナレッジベース・データベースに追加したい項目のソース・コードに、現在のアプリケーションとプロジェクトが関連付けられていることを確認してください。利用可能な場合は 「構成」 を選択します。
  3. 「有効範囲」 セクションで、スキャンの有効範囲を設定します。スキャンする言語によって、以下の有効範囲オプションがあります。
    1. 言語別のプロジェクト・ファイル・オプション
    Language プロジェクト・ファイル・オプション
    .NET
    • プロジェクト全体を対象にメソッド・シグニチャーのスキャンを実行する
    • プロジェクト外部のファイルを 1 つ以上選択する

    .NET プロジェクトには、任意の有効なアセンブリーが格納されます (通常は、 .dll ファイルまたは .exe ファイル)。

    Java
    • プロジェクト全体を対象にメソッド・シグニチャーのスキャンを実行する
    • プロジェクト内のファイルを 1 つ以上選択する
    • プロジェクト外部のファイルを 1 つ以上選択する

    Java プロジェクトには、 .jar ファイルや .class ファイルまたはクラス・ファイルのディレクトリー階層が含まれています。

    C/C++
    • プロジェクト全体を対象にメソッド・シグニチャーのスキャンを実行する
    • プロジェクト内のファイルを 1 つ以上選択する
    Visual Basic FRM (フォーム) ファイル/ CLS (クラス) ファイル/ BAS (基本) ファイルをスキャンする
    Classic ASP ASP ファイルのみスキャンする
    • デフォルトのスキャン・モードは「プロジェクト全体を対象にメソッド・シグニチャーのスキャンを実行する」です。このモードは、プロジェクト全体をスキャンして、使用可能なすべてのシグニチャーを返します。このスキャン・モードでは処理が遅くなる場合があります。
    • 「プロジェクト内のファイルを 1 つ以上選択する」オプションは、カスタム・ルールを必要とするメソッドが含まれる特定のプロジェクト・ファイルを選択します。
    • 「プロジェクト外部のファイルを 1 つ以上選択する」オプションは、このプロジェクト外部のファイルをスキャン対象として指定します。
  4. 「キャッシング」 セクションで、変更されたプロジェクトまたは変更されたコードを再度読み取るチェック・ボックスを選択します。この場合、脆弱性分析キャッシュも消去されます (現在のプロジェクトが脆弱性分析をキャッシュするように設定されている場合、次回のスキャン時に脆弱性分析キャッシュが再作成されます)。
  5. 文字列分析: 文字列分析は、Java または Microsoft .NET プロジェクトでの文字列操作をモニターします。また、サニタイザーとバリデーターのルーチンの自動検出を可能にします。この検出を使用すれば、誤検出と検出漏れを減らすことができます。文字列解析を有効にするには、「文字列解析で検証プログラムやサニタイズ・プログラムの関数を検索できるようにする」チェック・ボックスを選択します。「インポートされたルールをグローバル・スコープに適用する」チェック・ボックスは、検出されたサニタイズ・プログラムまたは検証プログラムのルーチンを単一のプロジェクトに適用するか、あるいはグローバル・レベルで (すべてのプロジェクトに) 適用するかを決定します。
    注: 文字列解析のアプリケーションはスキャンに時間がかかる可能性があります。そのため、必ず、コード変更後に適用してから、以降のスキャンでは無効にすることをお勧めします。また、検出されたルーチンは 提案 として表示し、監査員がそれらを確認する必要があります。これらのルーチンは、「カスタム・ルール」ビューで表示できます。
  6. 「次へ」 をクリックして、ウィザードの次のページに進みます。
  7. 「メソッドの選択」 ページで、以下を行います。
    1. ナレッジベース・データベースに追加する 1 つまたは複数のメソッドを選択します。このメソッドは、脆弱 API の名前です。

      メソッドのリストは次の 2 つの方法でフィルタリングすることができます。

      • 自動フィルタリング:「フィルター」フィールドにフィルター・テキストを入力します。入力すると、フィルターが自動的にメソッドのリストに適用されます。これがデフォルトのフィルター・モードです。
      • 手動フィルタリング:「フィルター」フィールドにフィルター・テキストを入力してから、「フィルター」ボタンをクリックして (または Enter を押して) フィルターをリストに適用します。メソッドの数が多くて自動フィルタリングに時間がかかる場合に、手動フィルタリングを使用できます。

      どちらの場合も、アスタリスク (*) と疑問符 (?) をワイルドカードとして使用できます。アスタリスクは、連続した複数の文字 (文字数がゼロの場合も含む) を表し、疑問符は単一の文字を表します。

      フィルター・モードを変更するには、「フィルター」ボタンをトグルとして使用します。これは、「フィルター」ボタンをダブルクリックするか、またはキーボードを使用して「フィルター」ボタンにナビゲートしてからスペース・バーを押すことで行えます。手動フィルターをオンにすると、オンになっていない状態の「フィルター」ボタンと、その吹き出しヘルプ「フィルターを適用します (自動フィルタリングにする場合は、ダブルクリックするかスペース・キーを押します) (Apply filter (double-click or press space to filter automatically))」が表示されます。自動フィルタリングをオンにすると、オンになった状態のボタンと、その吹き出しヘルプ「手動フィルタリングにします (Filter manually)」が表示されます。

      メソッドのリストを見やすくするために、展開アクションと省略表示アクションを使用できます。ツリー全体を展開または省略するには、右クリックして「すべて展開」または「すべて省略」を選択します。パッケージまたはクラスとその下の項目すべてを展開するには、パッケージまたはクラスを右クリックして、「子を展開 (Expand Children)」を選択します。

      複数のメソッドを選択する場合は、キーボードの Ctrl キーまたは Shift キーcommand キーまたは shift キーを使用します。

      「フルシグニチャーを表示する」チェック・ボックスを選択すると、ツリーにメソッドの完全修飾シグニチャーが表示されます。例えば、完全修飾 Java シグニチャーには、 com.test.vulnerable.VulnClass.vulnerable(java.lang.string;int):intのように、パッケージ、クラス、メソッド、引数タイプ、および戻り値の型が含まれています。

    2. スキャンを実行したときに、メソッドを以下のいずれかのようにマークするかどうかを指定します。
  8. メソッドを 汚染の可能性なし検証/エンコード・ルーチンなし汚染伝播元、または 汚染されたコールバックとして追加する場合は、 「終了」 をクリックして、レコードを AppScan® ソース・セキュリティー・ナレッジベース・データベースに追加します。
  9. メソッドを ソース (汚染) または 情報 として追加する場合は、以下の手順を実行します。
    1. 「次へ」 をクリックして、 「ルール属性の割り当て」 ページに進みます。
    2. 追加したメソッドごとに、以下を行います: メソッドに割り当てる 1 つまたは複数のプロパティーを選択します。メソッドの 「タイプ」 列が、カスタム・ルールによって生成された検出結果の脆弱性タイプを示すように更新されます。
      ヒント: 同じプロパティーを複数のメソッドに追加するには、キーボードの Ctrl キーまたは Shift キーcommand キーまたは shift キー を使用して、メソッドを複数選択し、メソッドに割り当てるプロパティーを選択します。
    3. 「終了」 をクリックして、レコードを AppScan® ソース・セキュリティー・ナレッジベース・データベースに追加します。
  10. メソッドを シンク (汚染の可能性あり) として追加する場合は、以下の手順を実行します。
    1. 「次へ」 をクリックして、 「ルール属性の割り当て」 ページに進みます。
    2. 追加したメソッドごとに、以下を行います:
      • 脆弱性の影響の「重大度」レベルを選択します。「高」「中」、または「低」
      • 「脆弱性タイプ」を選択して、メソッドに適用します。
      ヒント: 同じプロパティーを複数のメソッドに追加するには、キーボードの Ctrl キーまたは Shift キーcommand キーまたは shift キー を使用して、メソッドを複数選択し、メソッドに割り当てるプロパティーを選択します。
    3. 「終了」 をクリックして、レコードを AppScan® ソース・セキュリティー・ナレッジベース・データベースに追加します。
  11. メソッドを トレースなしの検出結果 として追加する場合は、以下の手順を実行します。
    1. 「次へ」 をクリックして、 「ルール属性の割り当て」 ページに進みます。
    2. 追加したメソッドごとに、以下を行います:
      • 脆弱性の影響の「重大度」レベルを選択します。「高」「中」、または「低」
      • メソッドに割り当てる 「分類」 を選択します。「確定」「要確認」、または「構成」
      • 「脆弱性タイプ」を選択して、メソッドに適用します。
      ヒント: 同じプロパティーを複数のメソッドに追加するには、キーボードの Ctrl キーまたは Shift キーcommand キーまたは shift キー を使用して、メソッドを複数選択し、メソッドに割り当てるプロパティーを選択します。
    3. 「終了」 をクリックして、レコードを AppScan® ソース・セキュリティー・ナレッジベース・データベースに追加します。