在上篇文章中,我们了解了 SAST 的概念、优劣和使用的工具,并在文章里提到了另一个软件安全领域里的重要技术 DAST。本文将会详细介绍 DAST 的概念、重要性及其工作原理。
这是一种黑盒测试的类型,测试者无需了解架构、网络或者代码,而是从一个恶意攻击者的角度来测试应用程序。应用程序依赖于输入和输出运行,这意味着如果用户的输入有疑点,在响应上会有反馈。
DAST 测试可以在正式投入使用之前帮助你在软件中发现漏洞。它不是为特定软件而设计的,而是在易受攻击的应用层上工作。
为什么动态应用安全测试(DAST)如此重要?
南半球的蝴蝶扇动一下翅膀就能在北半球引发一场台风,开发人员轻微的安全错误(例如,用户输入验证不当、服务器版本泄露和使用易受攻击的软件库等)也有可能导致重大的安全问题。
而采用 DAST,可以让开发人员在构建应用程序时不必完全依赖自己的知识和过往经验。通过在软件开发生命周期(SDLC)中执行 DAST,开发人员可以在软件公开部署之前捕获应用程序中的漏洞。如果不检查这些漏洞而直接部署应用程序,可能会导致数据泄露,进而造成重大的经济损失和损耗品牌声誉。在软件开发生命周期(SDLC)的某个阶段,人为错误将不可避免,而在 SDLC 中越早发现漏洞,修复的成本就越低。
当 DAST 成为 CI/CD 流水线的一部分时,DevSecOps 就诞生了。对 Fortify on Demand(FoD)漏洞数据的分析显示,在超过11000个网络应用程序中,94%的程序含有安全功能的漏洞,而代码质量和 API 滥用问题在过去4年里大约增加了一倍。
DAST 的2种类型
大部分人认为DAST是一个自动化的方式,但事实并非如此。在广泛意义上,动态应用安全测试被分为两类:
- 手动 DAST:当涉及到保护应用程序的安全时,软件漏洞扫描工具和渗透测试工具可以在很大程度上发挥作用,但它们也会存在疏漏。这就是手动 DAST 施展拳脚的地方,他们可以利用自己的经验和相关知识来发现自动扫描工具可能会忽略的漏洞。手动测试包括安全专业团队测试应用程序的漏洞,这些漏洞通常被自动漏洞扫描工具所遗漏。
- 自动 DAST:自动化动态测试包括使用软件测试应用程序并为其提供所需数据。这种类型的测试包括使用爬虫、Fuzzer 和 Regex 等方法来寻找和替换重要的关键词,模拟一次真正的攻击从而导致不同类型的漏洞,如SQL注入、跨站脚本攻击和服务器端请求伪造等。
DAST 工作原理
假如应用程序是一栋大楼,那么 DAST 扫描工具可以被认为是一个保安。并且这个保安不仅仅是确保门窗已锁好,还会身体力行地测试各种闯入大楼的方法,例如撬开门锁或打破窗户。完成这项检查后,保安会向大楼经理汇报并解释他是如何闯入大楼的。
DAST 会测试所有种类的 endpoint,包括隐藏的 endpoint,并触发不同种类的攻击以发现安全漏洞。DAST 的自动化测试工具通过模拟对应用程序的恶意攻击识别出漏洞,这是在日常使用过程中难以发现的。
由于 DAST 可以对应用进行端到端的测试,而无需进入源代码,所以不需要事先了解所使用的编程语言。这使得 DAST 使用起来十分方便。其他应用程序安全测试方法并未涵盖广泛的漏洞测试。此外,DAST 在运行时查找源代码中的漏洞,这意味着 DAST 不需要重新构建一个应用程序来测试漏洞。
将 DAST 集成到 SDLC 中
将 DAST 工具集成到 SDLC 中,也是构建一个安全的应用程序的关键。
DAST 的主要关注点是在 SDLC 早期阶段识别出漏洞,从而使开发团队能够在问题变得更严重之前解决它们。DAST 被引入到软件开发生命周期(SDLC)中, 可以让开发人员在黑客利用漏洞之前将漏洞修复。
开发者、测试者以及项目经理在整个软件开发生命周期期间采用不同的扫描技术。而在 DAST 解决方案兴起之前,对于团队而言将扫描结果集成到开发生命周期中是十分困难的。将 DAST 整合到 SDLC 过程中的企业比那些没有整合的组织更具竞争优势。动态应用安全测试是一个全面的应用安全计划的重要组成部分,它可以检测和防止漏洞被引入到软件应用中,也可以检测现有的漏洞。
DAST 的6大优势
DAST 是一种相对较新的测试实践,它侧重于在运行时评估软件应用程序的安全性,它可以在生产环境中进行测试,因此它有以下6大优势:
与其他应用安全测试方法相比,DAST 扫描工具导致的误报非常少,因为无论组件、语言和平台如何,都是端到端测试。
总 结
当提到安全,没有比测试更重要的维护安全的方式了。动态应用安全测试可以帮助你在漏洞酿成大祸之前发现并修复它。通过本文,我们对 DAST 有了基本的了解,那么在未来的文章中我们会继续介绍软件安全领域的相关内容,保持关注吧!