使用“定制规则”向导

定制规则向导帮助您将方法添加到 AppScan® Source Security Knowledgebase。大部分定制规则的作用域是全局的(应用于所有项目)。定制无跟踪结果、源、接收器和感染传播器始终是全局的。定制验证/编码例程不是全局的。

注: “定制规则”向导没有验证您的选择。例如,您可能定义一条定制规则,该规则将某个方法标识为感染传播器和接收器,这不是有效的方案。

定制规则向导指引您完成定义以下项并将其添加到知识库的过程:

  • 接收器和源
  • 感染传播器
  • 不易感染的应用程序编程接口 (API)
  • 漏洞
  • 生成没有跟踪的结果的 API
  • 不是验证/编码例程的 API
  • 感染的回调
  • 参考性结果

(感染)源

向程序提供输入的方法,这些输入可能格式错误或者是恶意的。

(易受感染的)接收器

一个将数据从程序(或者程序的可见部分)发出到文件、网络、数据库、其他库的 API 或者易于收到恶意输入的设备。

感染传播器

将某个方法标记为感染传播器将暗示如果从未验证的输入数据(感染的数据)派生 API 的任何参数,调用后,其他参数引用的非常量数据以及返回值也可能受到感染。此类数据必须验证或编码,然后发送到接收器。因为来自感染参数的数据复制或附加到其他参数,或者被返回,所以通常发生此情况。

不易受感染

将 API 标记为不易于感染(非感染传播器)暗示使用从未验证的输入数据(感染数据)派生的参数调用 API 不会使 API 行为不安全或有恶意行为。

如果已感染数据接触到调用,但该调用标记为不易受感染,那么 AppScan® 会在跟踪方面忽略该调用。AppScan® Source 跟踪 不报告丢失的跟踪,并且不会将所传播的数据视为已感染。

注: 如果感染的数据访问验证或编码例程、接收器、感染传播器以外的方法,或不易于感染的方法,将此方法报告为丢失的跟踪。非常量参数和返回值不一定受到感染。AppScan® Source 跟踪调用图会显示丢失的跟踪。

非跟踪结果

始终显示为结果但不生成跟踪的方法或 API。

非验证/编码例程

如果将 API 标记为非验证/编码例程,即标识此 API 不会验证任何数据。

感染的回调

回调是您代码中一般由其他代码(例如,来自低级框架)调用的例程。将回调作为参数传递到其他代码,稍后以可能感染的参数来对其进行调用。如果怀疑回调可能将感染的数据传递到其参数,您可以将其标记为感染的回调。这使感染数据在例程内的分布变为可见。

对标记为感染回调的例程进行分析,就像该例程在调用图的根处一样(换言之,由某个未知的外部调用者调用),其所有输入参数被认为已感染。因此,AppScan® 将报告具有从已感染回调参数开始的跟踪的结果。

如果您的应用程序代码在其他上下文中调用同一例程,那么在对其进行处理时,不会有对感染的任何特殊考虑。在这些上下文中,将进行通常的分析。

参考

虽然标识为参考性结果的代码行可能不易受到攻击,但是应该包含在安全审计中。