DAST、SAST和IAST的概述
关键要点
- 动态应用程序安全测试(DAST) 是一种黑盒测试方法,主要从外部对正在运行的应用程序进行测试。
- 静态应用程序安全测试(SAST) 是一种白盒测试方法,主要检查应用程序源代码以识别潜在的安全漏洞。
- 交互式应用程序安全测试(IAST) 处于动态分析和静态分析之间,结合了两者的优点。
- DAST和SAST各有优缺点,适合不同阶段的代码审核和安全性评估。
要了解这三种方法的定义,首先需要说明动态应用程序安全测试()是一种黑盒测试方法,通过外部对正在运行的应用程序进行评估。DAST工具爬取应用程序并检查运行时的漏洞,模拟攻击者的行为。相对应的,静态应用程序安全测试()是一种白盒测试的方法,通过检查应用程序的源代码来发现潜在的安全漏洞。
简单来说,DAST检查的是正在运行的Web应用,而SAST则关注其静态代码。
那么IAST是什么呢?
交互式应用程序安全测试(),有时也称为灰盒测试,位于动态分析(黑盒测试)和静态分析(白盒测试)之间。根据供应商的不同,IAST可以是一个独立的安全测试工具,增加SAST的一些动态测试能力,或者是为动态测试添加源代码洞察的一种方式。具体来说,Invicti的IAST作为服务器端代理实施,持续与核心漏洞扫描仪通信,以发现仅靠DAST工具无法捕获的内容(稍后将详细介绍)。
SAST和DAST在Web应用安全测试中的覆盖率
覆盖率是安全测试的一个基本属性,既适用于特定应用程序,也适用于整个Web应用环境。要准确评估应用程序的安全性,安全测试解决方案需要了解需要测试的内容以及如何解读所发现的结果。
SAST在应用程序源代码上进行工作,因此您需要拥有该代码以及支持特定编程语言和Web应用框架的工具。对于不同的技术栈,这可能意味着需要多种SAST工具。在更广泛的上下文中,SAST的覆盖率通常限于正在积极内部开发的应用程序,因为这需要同时拥有代码和正确的测试工具链。因此,尽管您可能会听到只有SAST提供完全测试覆盖率的观点,因为它测试的是所有代码,但这仅适用于特定应用程序的代码库,以及可以静态检测的有限子集的安全风险。
相比之下,DAST工具(例如漏洞扫描器)是技术无关的,因为它们从外部测试应用程序并检查其行为,而不是源代码。这使得DAST能够覆盖任意数量的应用程序,无论技术栈、开发状态或源代码是否可用,测试所有对访问者的浏览器外部可访问的内容。领先的动态扫描工具可以识别多种漏洞,包括错误配置和其他运行时问题。它们还支持现代认证方案,以访问仅对经过认证的用户可用的站点部分和功能。
获取有关的Invicti白皮书,了解为何这是Web安全的重要组成部分。
SAST与DAST的安全测试准确性和效率
假阳性在应用程序安全测试中始终是一个热门话题,无论是作为错误结果还是有效但无法采取行动的发现。尤其是SAST工具,常常由于技术上准确但在特定上下文中无关的安全问题而让开发人员陷入麻烦。这需要耗时的微调,以防止开发人员被无意义的假阳性报告淹没,从而浪费他们的时间,实际上这里面的问题很可能会被忽视。
DAST的一个显著优势是能够识别实际可利用的漏洞,而不仅仅是标记潜在的不安全代码结构。虽然一些早期的DAST工具在这方面的表现令人失望,但行业