样本筛选

此示例描述了安全分析人员所使用的 AppScan® 源代码 分类工作流程。筛选工作流程可能因您的业务需求而有所不同。

Jones 先生是公司的安全分析人员,他希望对自己的扫描结果进行分类。他希望对相似发现结果进行分组并划分优先级,然后将其提交至相应开发者以加以解决。

首先,Jones 先生扫描自己的应用程序的源代码,然后在“分类”透视图中打开评估。扫描产生约 2,000 条结果,均可在“结果”视图中复审。然而,Jones 先生希望首先大致浏览结果,然后打开“漏洞矩阵”视图,其中按严重性和发现结果类型(安全性或扫描覆盖范围)显示划分图。扫描覆盖范围发现结果和可疑安全性发现结果需要进一步调查以确认其风险。

在“脆弱性矩阵”中,Jones 先生看到八个高严重性的明确安全性发现结果。他单击指示八个明确发现结果的矩阵框,从而自动创建一个过滤器,并且导致“发现结果”视图也刷新以仅显示这八个关键问题。Jones 先生决定将这些问题视作错误。他选择了这八项,提交到缺陷跟踪系统。他随后从“漏洞矩阵”复位了其过滤器。

Jones 先生然后关注“评估摘要”视图。他注意到,这 2,000 个发现结果包含六个以上的脆弱性类型。他决定重点关注验证问题,并从“评估摘要”视图创建了另一个过滤器。他在图形上单击 Validation.EncodingRequiredValidation.Required,将“发现结果”视图中的发现结果数减少到约 500 个。

五百个结果仍然很难进行筛选。Jones 先生决定进一步过滤结果。在“过滤器编辑器”视图中,他通过对高严重性的需求增强了从“评估摘要”中创建的过滤器。发现结果表现在显示 150 个条目。

按文件名进行排序时,他发现有些发现结果位于第三方库中的代码。Jones 先生知道此库的使用是孤立的,因此不打算处理其安全问题。他排除了这些发现结果,从而使“发现结果”视图和度量立即更新。将来的扫描将检测到这些结果,但这些项目已隔离,将不再计入度量。

Jones 先生发现类型为 Validation.Required 的几个高严重性可疑安全性发现结果。他知道该数据在未经验证的情况下便被使用。因此他决定将这些结果从可疑提升为明确。进行此修改时,他决定添加说明以解释自己的更改,然后将这些发现结果通过电子邮件发送给自己,以提醒自己优先对其进行补救或在“已修改的发现结果”视图中对其进行复审。

接下来,Jones 先生再次按文件名进行排序,并注意到有些发现结果位于后端服务器中,而有些位于用户界面中。他选择了所有后端发现结果,并创建一个标签为 Backend Server - Validation Required 的新束。他随后选择余下的结果并置于标签为 UI - Validation Required 的束中。继续筛选,重点集中于具有高严重性的 Validation.EncodingRequired 类型。

一天下来,Jones 先生创建了十二个束。这一天中,他使用了图形、过滤器和脆弱性矩阵来将这些发现结果减少到视图中一次可管理的数量。有时他将这些个别结果放在束中。有时排除不重要的结果。他还不时针对特定发现结果创建新束;有时他向现有束添加发现结果。

现在 Jones 先生复审这十二个束。他决定应该将 Backend Server - Validation RequiredUI - Validation Required 束提交到自己的缺陷跟踪系统,以通知开发者这些需要关注的区域。

Jones 转至“束”视图,打开了 Backend Server - Validation Required 束。此时将打开名为 Backend Server - Validation Required 的新视图,其中包含他放置在该束中的发现结果的列表。然后,他将此束提交到缺陷跟踪系统。当晚稍后,当开发者登录到 Rational®ClearQuest® 并看到分配给自己的错误时,便可在 AppScan® Source for Development 中打开结果。

Jones 复审其他束。他将某些束提交到缺陷跟踪系统,并通过电子邮件将其他束发送给他的同事。不过,有些束包含进一步复审后对他来说不太重要的结果。他将这些不太重要的结果移动到两个新的束:By DesignIrrelevant。Jones 先生确定这些发现结果是可接受的,因而不打算更改其代码。除 By DesignIrrelevant 发现结果外,Jones 先生还发现所有 Cryptography.PoorEntropy 发现结果对其也不重要。他知道这些密码术调用的平均信息量可能不足,并且尽管速度比较快的计算机可以在不到一周的时间内破解密钥,但这对于应用程序来说并不重要,因为其中数据在加密数小时后便不再有用。因此,Jones 先生希望也将其除去。

然后,他将 By DesignIrrelevant 束添加到“属性”视图的已排除的束列表中。他还打开了“过滤器编辑器”,通过漏洞类型 Cryptography.PoorEntropy 创建了另一个过滤器,保存了名为 Crypto 的过滤器,并将 Crypto 过滤器的行为设置为反向(在“选择过滤器”对话框中,他选择了反向过滤器)。之后,他启动扫描并来到主页。只有在下次扫描之后,度量才会反映这些排除。