相关(混合分析)的工作方式

没有任何一种自动化分析技术可发现所有可能的漏洞;每种技术都有其自己的优点和弱点。动态分析安全测试 (DAST) 通过与黑客所使用的类似方法探测应用程序来测试正在运行的 Web 应用程序。静态分析安全测试 (SAST) 检查应用程序的源代码以发现可能的漏洞。

该图说明了每种技术可发现的漏洞的类型,以及它们之间为了实现相关而重合的地方。较大的绿色圆环指示 DAST、SAST 和手动测试可发现的所有潜在安全问题。

通过动态分析,更易于查看较大的范围,从而将漏洞与潜在利用联系起来。DAST 说明了应用程序中由其发送的测试可利用的区域;它将自动遍历应用程序并使用 HTTP 篡改来测试可能的输入(发送请求并接收浏览器中返回的响应)。但是,在动态分析中,安全分析人员将始终询问“我的测试覆盖范围是否正确?”DAST 面临的挑战在于查找所有页面和内容的路径,并覆盖所有攻击向量。

静态分析检查通过源代码的数据流,并可较早地在开发周期中使用,因为您无需处于运行状态的 Web 应用程序。而 DAST 仅限于查看通过 HTTP 传送的数据流,SAST 可查看后端中动态分析不可见的多个数据流,例如后端网络通信、文件系统访问等。因此,SAST 比 DAST 能找出更多问题,但并非所有这些问题对于组织都有较高的优先级,因为 SAST 的发现结果通常被解释为违反了安全编码最佳实践,而不一定是“利用的证据”。通过过滤可移除在组织的安全策略下不是特别严重的问题。SAST 面临的挑战在于划分问题的优先级。

DAST 查找从网络基础结构到 Web 服务器级别的所有内容。SAST 仅直接查看 Web 应用程序。

混合分析的挑战

混合分析(也称为相关)合并了DAST 与 SAST,从而使结果相关并验证结果。使用动态分析确定的问题可追溯至代码中有问题的行。可使用 DAST 信息自动为 SAST 问题划分优先级。

混合分析所面临的挑战是 DAST 依赖于数据反射回浏览器中,因此如果 SAST 数据流未作为 DAST 问题反射回浏览器中,那么它将不会出现在 AppScan® Enterprise 的“相关安全问题”报告中。

下图描述了该挑战。该 DAST 图显示了 SQL 注入作为来自用户角度的一个数据流。恶意代码被输入到 Web 页面中的用户名/密码字段内,并且一条错误消息显示在浏览器中。

在该 SAST 图中,从后端的视角出发,同一 SQL 注入攻击实际上是三个数据流。