サポートされている Java コード・アノテーション

静的分析を使用して Java をスキャンする場合は、@ValidatorMethod@CallbackMethod、および @SuppressSecurityTrace メソッド・レベルのアノテーションがサポートされます。

アノテーションの使用

次の手順に従って、アノテーションを使用することができます。

  1. アノテーションのサポートは、デフォルトで有効にされています。アノテーション .jar ファイルは、抽出された SAClientUtil_<version>_<os>.zip ファイルの \annotation ディレクトリーにあります。
  2. プリコンパイル・クラス、.war ファイル、または .jar ファイルをスキャンする場合は、アノテーション付きソースが含まれる Java プロジェクトに \annotation\com.static.analyzer.annotation.jar を追加して、プロジェクトを再ビルドします。
  3. 静的分析プラグインがインストールされている統合開発環境 (IDE) でスキャンする場合は、Java クラス・パスに \annotation\com.static.analyzer.annotation.jar を追加します。
  4. 静的分析 CLI を使用する場合は、構成ファイルを生成し、そこに CustomBuildInfo additional_classpath="dependency_path" を設定すると、dependency_path\annotation\com.static.analyzer.annotation.jar ファイルの場所が含まれるようになります。

スキャンする前にアノテーションをソース・コードに追加することができます。もしくはスキャンの後や誤検出を特定し削除するトリアージ中に追加できます。静的分析プラグインがインストールされている IDE でスキャンする場合、スキャン・レポートでは「問題解決のヘルプ」ボタンが使用可能です。このボタンを選択すると、アノテーションを追加できるポイントが示されます。

アノテーションにより、セキュリティー・アノテーションの形式でソース・コードに直接知識を挿入することができます。アノテーションはコードが安全であることを宣言するために使用されることもあるので、注意して使用してください。セキュリティーの脆弱性をスキャンする必要があるコードには使用しないでください。アノテーションを使用する場合、セキュリティー・アナリストがアノテーションを無視するには、irgen-engine.apsettings ファイル内の機能を無効にします。このファイルは、抽出された SAClientUtil_<version>_<os>.zip ファイルの \config ディレクトリーにあります。このファイルで、以下の設定を見つけます。

<Setting 
  name="process_security_annotations"
  value="true"
  default_value="true"
  description="When turned on, method annotations will be processed - used by DotNet and Java LSPs"
  display_name="Process Security Annotations"
  type="bool"
/>

機能を無効にするには、value="true"value="false" に変更します。

注: value="false" に設定されているときに、アノテーションを使用したい場合、この設定を value="true" にします。

@ValidatorMethod

バリデーターは、入力データをチェックし、入力が有効かどうかを示すブール値を返すメソッドです。バリデーターを使用して入力の受け入れまたは拒否を行うのではなく、ユーザーの入力を受け入れ可能な形式に変更できます。これらのメソッドは、サニタイザーと呼ばれます。

@ValidatorMethod アノテーションを使用すると、アプリケーション・ソース・コードのすべてのバリデーターとサニタイザーのメソッドを識別できます。静的分析スキャン中、この情報は、それらのメソッドを通過したことで安全と見なされるようになったデータ・フローを削除するために使用されます。

注: 現在、どのアノテーション付きメソッドのパラメーターを検証済みと見なすか指定する条件はありません。静的分析スキャン中、すべての入力パラメーターが検証済みと見なされます。

@SuppressSecurityTrace

このアノテーションが付けられたメソッドを経由するすべてのトレースは削除されます。トレースの特定のグループが誤検出である、もしくは他よりも重要でないと識別された場合に便利です。このアノテーションを使用して、それらのトレースを除外するか、クラッターを削減する目的で非表示にします。

@CallbackMethod

このアノテーションを使用して、アプリケーションのコールバックまたはエントリー・ポイントを識別します。すべての引数は汚染を伝搬していると見なされます。