受支持的 .NET 源代码属性

使用静态分析来扫描 .NET 时,支持 [ValidatorMethod][CallbackMethod][SuppressSecurityTrace] 方法级别属性。使用这些属性时,也接受 [ValidatorMethod()][CallbackMethod()][SuppressSecurityTrace()]

使用属性

属性可通过完成以下这些步骤来使用:

  1. 缺省情况下,将启用属性的支持。属性 SecurityAttributes.dll 文件位于抽取的 SAClientUtil_<version>_<os>.zip 文件的 \annotation 目录中。
  2. 如果要扫描预编译的类、.exe 文件或 .dll 文件,请将 SecurityAttributes.dll 添加到包含附注释的源代码的 .NET 项目,然后重新构建项目。
  3. 如果要在安装了静态分析插件的集成开发环境 (IDE) 中扫描,请添加 SecurityAttributes.dll 作为引用。
  4. 如果要使用静态分析 CLI,请创建配置文件,并在配置文件中设置 CustomBuildInfo additional_classpath="dependency_path",以便 dependency_path 包含 SecurityAttributes.dll 文件的位置。

属性可以在扫描之前添加到源代码,也可以在扫描之后和分类期间进行添加,以识别并消除误报值。如果要在安装了静态分析插件的 IDE 中扫描,帮我修正该问题按钮将在扫描报告中可用。选择该按钮时,将显示可添加属性的可能的点。

提供属性是为了允许您将知识以安全性属性的形式直接插入到源代码中。因为属性可能用于声明代码安全的部分,所以使用时应小心。它们不应用于会被扫描以查找安全漏洞的代码。如果使用属性,安全分析人员可通过禁用抽取的 SAClientUtil_<version>_<os>.zip 文件的 \config 目录中 irgen-engine.apsettings 文件中的功能来忽略这些属性。在此文件中,找到以下设置:

<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()]

该属性用于识别应用程序的回调或入口点。所有参数都被认为包含污点。