动态应用程序安全测试(DAST)如何工作?为什么DAST很重要
动态应用程序安全测试 (DAST) 或动态代码分析旨在通过与正在运行的应用程序交互来识别漏洞。这使它能够识别只能在运行的应用程序中检测到的编译时和运行时漏洞。
动态应用程序安全测试 (DAST) 如何工作?
DAST 解决方案识别应用程序中的潜在输入字段,然后向它们发送各种异常或恶意输入。这可能包括尝试利用常见类型的漏洞——例如 SQL 注入命令、跨站点脚本 (XSS) 漏洞和长输入字符串——以及可能发现应用程序中输入验证和内存管理问题的异常输入。
根据应用程序对各种输入的响应,DAST 工具可以识别它是否包含特定漏洞。例如,如果 SQL 注入攻击提供对数据的未授权访问,或者应用程序因无效或格式错误的输入而崩溃,则表明存在可利用的漏洞。
为什么 DAST 很重要
DAST 解决方案旨在识别正在执行的应用程序中的潜在漏洞。这使得找到可能影响应用程序功能和安全性的配置或运行时漏洞成为可能。
优点和缺点
DAST 解决方案是企业应用程序安全策略的重要组成部分。DAST 解决方案的一些主要优点包括:
- 检测运行时问题:DAST 扫描器与正在运行的应用程序交互,使其能够检测应用程序中的编译时和运行时问题。
- 低误报率:DAST 通过利用漏洞来识别漏洞,使其能够验证潜在漏洞是否确实对应用程序的功能或安全构成威胁。
- 与语言无关:DAST 解决方案在黑盒评估中测试正在运行的应用程序,这意味着它可用于在任何环境下以任何语言编写的应用程序。
尽管有许多优点,但 DAST 并不是一个全面的解决方案。DAST 的一些主要缺点包括:
- 在 SDLC 中出现较晚:DAST 需要访问正在运行的应用程序,这意味着它只能在软件开发生命周期 (SDLC) 的后期执行,此时修复漏洞的成本更高。
- 漏洞位置:DAST 解决方案可以识别应用程序中存在的漏洞,但无法访问源代码,因此无法在代码库中找到确切位置。
- 代码覆盖率:DAST 解决方案评估正在运行的应用程序,这意味着它们可能会遗漏未执行代码部分中的漏洞。
DAST 与 SAST
静态应用程序安全测试 (SAST) 对应用程序的源代码进行分析,而不是与正在运行的应用程序进行交互。DAST 和 SAST 是应用程序安全性的互补方法。DAST 和 SAST 之间的一些主要区别包括:
- 测试类型:SAST 是一种白盒漏洞扫描,可以完全访问应用程序的源代码,而 DAST 是一种不了解应用程序内部结构的黑盒评估。
- 所需的代码成熟度:SAST 解决方案扫描源代码,这使它们能够在部分代码上运行。DAST 解决方案只能分析正在运行的应用程序,这需要更成熟的代码。
- SDLC 阶段:SAST 分析源代码的能力使其能够在 SDLC 中比 DAST 更早地执行,后者需要一个正在运行的应用程序。
- 补救成本:由于 SAST 分析发生在 SDLC 的较早阶段,因此与使用 DAST 相比,修复任何已识别漏洞的成本更低。SDLC 越晚,可能需要修复的代码越多,可用于修复的时间就越少。
- 漏洞覆盖率:DAST 解决方案能够识别 SAST 解决方案无法识别的运行时漏洞和配置错误,因为代码在 SAST 分析期间未运行。
- 漏洞位置:SAST 解决方案扫描源代码,因此它们确切地知道应用程序中漏洞所在的位置。DAST 只知道存在漏洞,但不能指向特定的代码行。
- 误报检测:DAST 与应用程序交互,使其能够确定潜在漏洞是否确实影响了应用程序的功能。SAST 仅基于应用程序模型工作,误报率较高。
使用 DAST 提高应用程序安全性
强大的应用程序安全实践对于保护基于云的工作负载免受利用至关重要。DAST 提供了检测范围广泛的漏洞的能力,尤其是在与 SAST 结合使用时。通过在漏洞被攻击者利用之前识别漏洞,SAST 和 DAST 显着降低了补救成本及其对组织及其客户的潜在影响。