サポートされている .NET ソース・コード属性

静的分析を使用して .NET をスキャンする場合は、[ValidatorMethod][CallbackMethod]、および [SuppressSecurityTrace] のメソッド・レベルの属性がサポートされます。これらの属性が使用されている場合は、[ValidatorMethod()][CallbackMethod()]、および [SuppressSecurityTrace()] も受け入れられます。

属性の使用

次の手順に従って、属性を使用することができます。

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

スキャンする前に属性をソース・コードに追加することができます。もしくはスキャンの後や誤検出を特定し削除するトリアージ中に追加できます。静的分析プラグインがインストールされている 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()]

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

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

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

[SuppressSecurityTrace] または [SuppressSecurityTrace()]

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

[CallbackMethod] または [CallbackMethod()]

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