サポートされる注釈と属性

コードの装飾に使用される一部の注釈および属性は、スキャン中に処理されます。スキャン中に、サポートされる注釈または属性がコード内で検出されると、装飾されたメソッドに、汚染されたコールバックとしてマークを付けるために、その情報が使用されます。汚染されたコールバックとしてマークされたメソッドは、すべての引数に汚染されたデータがあるものとして扱われます。その結果、トレースでより多くの検出結果が得られます。このヘルプ・トピックでは、サポートされる注釈および属性のリストを示します。

サポートされる Java™ アノテーション

表 1. サポートされる Java アノテーション
アノテーション 省略形
javax.xml.ws.WebServiceProvider @WebServiceProvider
javax.jws.WebService @WebService
javax.jws.WebMethod @WebMethod

サポートされる AppScan® ソース Java アノテーション

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

AppScan ソース アノテーションの使用

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

  1. アノテーションのサポートは、デフォルトで有効にされています。アノテーションの .jar ファイルは <install_dir>\lib\SecurityAnnotations.jar (<install_dir>AppScan ソース インストールの場所です) です。
  2. プリコンパイル済みクラスの .war ファイルまたは .jar ファイルをスキャンしている場合、アノテーション付きソースが含まれる Java プロジェクトを検索してください。
  3. SecurityAnnotations.jar をプロジェクトのクラス・パスに追加します。
  4. プロジェクトを再ビルドします。

スキャンする前にアノテーションをソース・コードに追加することができます。もしくはスキャンの後や誤検出を特定し削除するトリアージ中に追加できます。

アノテーションにより、セキュリティー・アノテーションの形式でソース・コードに直接知識を挿入することができます。アノテーションはコードが安全であることを宣言するために使用されることもあるので、注意して使用してください。セキュリティーの脆弱性をスキャンする必要があるコードには使用しないでください。アノテーションを使用する場合、セキュリティー・アナリストがこれらを無視するには、<data_dir>\config\scanner.ozsettings (<data_dir>AppScan ソース プログラム・データの場所です。詳細は インストールとユーザー・データ・ファイルの場所) の機能を無効にします。このファイルで、以下の設定を見つけます。

<Setting
name="process_security_annotations" 
value="true"
default_value="true" 
description="When turned on, security annotations in the 
     source code will be processed by AppScan Source." 
display_name="Process Security Annotations" 
type="bool" 
/> 

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

@ValidatorMethod

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

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

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

@SuppressSecurityTrace

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

@CallbackMethod

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

サポートされる Microsoft™ .NET 属性

表 2. サポートされる Microsoft .NET 属性
属性 省略形
System.Web.Services.WebServiceAttribute WebService
System.Web.Services.WebMethodAttribute WebMethod