通过过滤器筛选

AppScan® Source for Analysis 针对所有潜在安全性漏洞进行报告,并可能为中到大型代码库生成成千上万个发现结果。扫描时,您可能觉得发现结果列表中包含对您不重要的项。要从“发现结果”视图除去某些发现结果,可以选择预定义的过滤器,或者创建您自己的过滤器。过滤器可指定用于决定要从视图中除去哪些发现结果的条件。

过滤器概述

过滤器除去或限制满足过滤规则确定的条件的项,并有助于您在类选或报告期间管理扫描结果。过滤器可帮助您引导工作流程,并将安全分析员重点分配到发现结果子集的最关键区域。例如,在代码检测期间,分析员可以创建过滤器以避免查看低严重性发现结果。此外,分析人员还可能首选排除系统库 include 文件中的漏洞。过滤器可从视图中除去这些项,也可排除个别文件或先前调查过的文件。

可在扫描之前或之后应用过滤器:

  • 要在扫描之前应用过滤器,在项目或应用程序属性中设置全局过滤器,或通过包含过滤器的扫描配置进行扫描。在扫描之前应用过滤器时,无法显示未过滤的结果或在不再次进行扫描的情况下除去过滤器。
  • 各种视图(特别是“过滤器编辑器”视图)使您能在扫描之后应用过滤器。当这些视图用于过滤时,所有已过滤项都保留在扫描结果中,但仅会在选择了显示已过滤的发现结果显示已过滤的发现结果图标)切换按钮后出现在“发现结果”视图中。

AppScan® 包含多个可选择用于过滤扫描结果的预定义过滤器。

选择过滤器后,可对属性进行设置以将过滤器设置为排除。排除将影响扫描,除去与过滤器匹配的所有发现结果,或者不与过滤器匹配的所有发现结果。

过滤规则

每个过滤器都包含用于定义要在结果表的结果中限制(包含)或除去(排除)哪些发现结果的规则(对于跟踪规则,您可以根据跟踪属性对其加以限制或除去)。

  • 限制为规则(包含规则)将排除不包含指定条件的发现结果,并从结果表的可视结果中除去这些发现结果。
  • 除去规则(排除规则)除去扫描结果中包含条件的结果。除去规则将除去包含指定条件的所有结果,并从可视结果中将其除去。

过滤规则可能包括以下特征:

  • 严重性:标识个别发现结果的潜在影响或风险。严重性规则仅为限制。
    • :对数据的机密性、完整性或可用性和/或处理资源的完整性或可用性具有风险。高严重性情况应该优先予以立即修复。
    • :对数据安全性和资源完整性具有风险,但是此情况较不容易受到攻击的影响。中严重性情况应该予以复审,并在可能之处予以修复。
    • :对数据安全性或资源完整性具有极低的风险。
    • 参考:发现结果本身不易受到威胁的影响。更确切而言,它描述代码中使用的技术、体系结构特征或安全性机制。
  • 分类:根据本主题中描述的分类过滤发现结果。分类规则仅为限制。
  • 漏洞类型:按特定漏洞类别(如 BufferOverflow)进行过滤。当添加漏洞类型时,可以从所有可能的漏洞类型中进行选择,或者可以仅从已在当前评估中找到的那些类型中进行选择。要从已在当前评估中找到的漏洞类型中进行选择,请在“选择值”对话框中选择仅显示已打开评估中的值

    在为将来的扫描创建过滤器时,从所有可能的漏洞类型中进行选择很有用。要显示所有漏洞类型,请取消选中仅显示已打开评估中的值(如果没有任何已打开的评估,那么缺省情况下会显示所有漏洞类型,并且仅显示已打开评估中的值复选框不可用)。

  • API:过滤特定 API 的所有漏洞。
  • 文件:过滤特定文件中的所有漏洞。
  • 目录:过滤特定目录中的所有漏洞。
  • 项目:过滤特定项目中的所有漏洞。
  • 跟踪:允许您基于跟踪属性来过滤发现结果(请参阅源和接收器以了解有关跟踪属性的更多信息)。过滤器可包含根据跟踪属性同时进行限制和除去操作的跟踪规则。在任一部分(限制或除去)中单击添加时,将打开“跟踪规则条目”对话框。在该对话框中,可指定:
    • :在“源”部分的 API 正则表达式字段中,指定跟踪源或涵盖多个源的正则表达式(缺省条目是 .*,此正则表达式或通配符将返回全部内容)。如果要使用正则表达式,请在正则表达式类型字段菜单中选择类型(缺省正则表达式类型是 PERL)。如果不使用正则表达式,请在正则表达式类型字段菜单中选择完全匹配

      如果 API 正则表达式条目是有效的表达式,那么字段旁将显示一个绿色勾选图标。如果该条目不是有效的表达式,那么字段旁将显示红色的 X 图标,且将禁用对话框的确定按钮。将光标悬停在这两个图标的任意一个上均会看到有关验证结果的更多信息。如果已创建的条目不是有效的表达式,但仍希望继续使用它,请选中对话框底部的忽略以上验证错误复选框。此操作将启用对话框的确定按钮(只要表达式不为空),并且无效表达式旁的图标将更改为带有验证已禁用悬浮文本的绿色勾选符号。

      您还可以通过使用“源属性”部分中的添加 VMAT 属性按钮来按机制或技术优化过滤器(关于 VMAT 属性的更多信息在下面提供),但是,使用此功能来按漏洞进行限制不会有所需的效果,因为漏洞类型由接收器而不是源来决定。

    • 接收器:在“接收器”部分,可将接收器添加为过滤器(与指定源的方法相同)。

      您可以通过将过滤器限制为特定漏洞类型(将跟踪规则条目的影响限制为仅特定类型的漏洞、机制或技术)来优化过滤器。要完成此任务,请单击“接收器属性”部分中的添加 VMAT 属性按钮,然后在“选择属性”对话框中选择属性。使用过滤器字段可对属性列表进行过滤。

      VMAT 是对 AppScan® 应用于应用程序编程接口 (API) 的四种主要类型属性的分类。VMAT 属性类别包括:

      • 漏洞:可导致安全违例的利用或攻击媒介类型
      • 机制:用于阻止漏洞的安全性控制
      • 属性:这些属性当前在“选择属性”对话框中不可用
      • 技术:对于 API 所提供功能类型的一般描述

      过滤器示例:要对来自 HTTP(最高风险源)的所有 SQL 注入和 XSS 进行过滤,请在“源属性”部分中创建包含了 Technology.Communications.HTTP 过滤器的限制为跟踪规则,并在“接收器属性”部分中创建 Vulnerability.Injection.SQLVulnerability.CrossSiteScripting 规则。

    • 必需调用:在“必需调用”部分,将路径上必须存在的特定 API 调用从源添加到接收器。必须调用将发现结果限制为具有经由指定必需调用的跟踪。单击添加中间调用时,将打开“配置 API”对话框。在此对话框中,以指定源和接收器的方式来指定调用。
    • 已禁止调用:在“禁止调用”部分中,将路径上不可存在的特定 API 调用从源添加到接收器。禁止调用将发现结果限制为具有未经由指定已禁止调用的跟踪。以添加必需调用的方法添加禁用调用。
    提示:
    • 当按漏洞类型API文件目录项目进行过滤时,可以通过在“选择值”对话框顶部的过滤器字段中输入模式来对该对话框中显示的列表进行过滤。
    • 在任何发现结果表中,查看接收器列以了解要进行过滤的源和接收器。
    • 要了解希望过滤的源、接收器和调用属性,请查看任何发现结果表中的漏洞类型列。
    • 要查看可能要过滤的调用,请查看任何发现结果表中的 API 列中的条目。

过滤器示例

1. 过滤器示例
发现结果表中的过滤器行为 “过滤器编辑器”视图中的过滤器设置
结果表仅包含高严重性可疑安全性结果。
  • 在“严重性”部分,选中复选框,清除所有其他复选框。
  • 在“分类”部分,选中可疑复选框,并清除所有其他复选框。
发现结果表包含名为 ProjectA 的项目中的所有发现结果,但参考漏洞类型除外。
  • 在“漏洞类型”部分,选中除去单选按钮并单击添加。在“选择值”对话框中,选择 Vulnerability.Info
  • 在“项目”部分,选中限制为单选按钮并单击添加。在“选择值”对话框中,选择 ProjectA
仅显示包含跟踪的发现结果。 在“跟踪”部分中,单击限制为部分中的添加。接受“跟踪规则条目”对话框中的缺省条目,然后单击确定。对话框中的缺省值是:
  • API 正则表达式字段是 .*,正则表达式类型是 PERL。这样,AppScan® 将过滤带有源的任何发现结果(使用 Perl 正则表达式语法)。
  • 接收器 API 正则表达式字段是 .*,正则表达式类型是 PERL。这样,AppScan® 将过滤带有接收器的任何发现结果(使用 Perl 正则表达式语法)。
此发现结果表显示未经 java.lang.Integer.parseInt 从 HTTP 相关源传递到 SQL 注入相关接收器的跟踪。 在“跟踪”部分中,单击限制为部分中的添加。在“跟踪规则条目”对话框中,完成以下步骤:
  • 在“源”部分,单击添加 VMAT 属性。在“选择属性”对话框中,选择 Technology.Communications.HTTP。单击确定以添加 VMAT 属性,并返回到“跟踪规则条目”对话框。
  • 在“接收器”部分,单击添加 VMAT 属性。在“选择属性”对话框中,选择 Vulnerability.Injection.SQL。单击确定以添加 VMAT 属性,并返回到“跟踪规则条目”对话框。
  • 在“禁止调用”部分,单击添加中间调用。在“配置 API”对话框中的 API 正则表达式字段中输入 java.lang.Integer.parseInt.*。单击确定以添加中间调用,并返回到“跟踪规则条目”对话框,然后单击确定以添加跟踪规则条目。