サポートされている Java コード・アノテーション
静的分析を使用して Java™ をスキャンする場合は、@ValidatorMethod
、@CallbackMethod
、および @SuppressSecurityTrace
メソッド・レベルのアノテーションがサポートされます。
アノテーションの使用
次の手順に従って、アノテーションを使用することができます。
- アノテーションのサポートは、デフォルトで有効にされています。アノテーション .jar ファイルは、抽出された
SAClientUtil_<version>_<os>.zip
ファイルの \annotation ディレクトリーにあります。 - プリコンパイル・クラス、.war ファイル、または .jar ファイルをスキャンする場合は、アノテーション付きソースが含まれる Java プロジェクトに
\annotation\com.static.analyzer.annotation.jar
を追加して、プロジェクトを再ビルドします。 - 静的分析プラグインがインストールされている統合開発環境 (IDE) でスキャンする場合は、Java クラス・パスに
\annotation\com.static.analyzer.annotation.jar
を追加します。 - 静的分析 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
このアノテーションを使用して、アプリケーションのコールバックまたはエントリー・ポイントを識別します。すべての引数は汚染を伝搬していると見なされます。