主页
topics
DAST
发布日期:2024 年 4 月 8 日
撰稿人:Annie Badman、Amber Forrest
较之其他类型的应用程序安全 (AppSec) 测试,DAST 凭借其由外而内的方法脱颖而出。其他工具需要借助源代码和应用程序的内部访问权限才能评估安全漏洞,而 DAST 却可从外部在应用程序的运行时环境中对其进行测试,并使用模拟攻击来模仿恶意参与者。因此,DAST 有时被称为由外而内的测试或黑匣测试;这是一种无需测试人员在访问、调查甚至了解内部工作原理的情况下检查系统的测试方法。
当今的开发人员工作速度都很快,他们通常每天会多次更新特定的代码区段,而无法全面的了解整个代码库。同时,他们严重依赖第三方组件和开源组件,且经常难以与安全团队开展有效合作。此外,他们中的大多数人还致力于开发日益复杂的应用程序,其中附带众多功能、库和依赖项,同时还需管理不断演变的网络安全威胁。
如此一来,安全漏洞的表面积便会不断加大,从而加剧了编写安全代码和保护敏感信息免遭数据泄露的难度。开发人员亟需在工作时能对潜在漏洞进行测试的方法,同时又不影响他们的工作效率。
DAST 可通过自动运行安全测试流程来帮助实现这一目标。它的工作原理是模仿现实黑客的操作,以便从外部发现正在运行的应用程序中的潜在漏洞。DAST 允许开发人员测试其代码,并在其上线之前了解它对整体应用程序安全性有何影响;同时,它还善于查明安全问题,如身份验证错误和代码漏洞,而此类问题常会被其他测试方法(如,软件组成分析 (SCA))遗漏。
现代 DAST(见下文)工具还可无缝集成到 DevOps 与 CI/CD 管道中,以便为开发的所有阶段(包括应用程序开发工作流程的早期阶段)提供接口。
构建与部署集成是 DevOps 团队通常会在 DevOps/DevSecOps 环境中采用 DAST 的原因之一,且会作为“左移”方法的其中一部分。在此方法中,测试会在软件开发生命周期 (SDLC) 的早期阶段进行,以便实现更经济且更省时的修复。DAST 工具可增强的其他 DevOps 原则包括:优先考虑自动化、协作和持续反馈,以便开发人员和安全团队能在不影响安全性的情况下保持敏捷和高效。
由于 DAST 采用黑匣方法,因而它可模拟恶意威胁参与者在试图破坏 Web 应用程序时可能会执行的操作。
一般来说,DAST 包括以下五个步骤:
作为第一步,DAST 扫描器会通过发送各种 HTTP 请求来模拟用户与运行时应用程序的交互。此映射会通过 API 定义文档来识别 API 测试中定义的所有页面、链接、功能(适用于单页 Web 应用程序)和入口点。
发送请求时,DAST 工具便会开始分析应用程序的响应,从而查找可能表示 Web 应用程序漏洞的各种异常、错误消息和意外行为。当 DAST 扫描检测到任意潜在漏洞时,它会记录其位置和响应以备将来参考,以便必要时允许手动进行测试。
DAST 工具还会开始模拟 SQL 注入、跨站点脚本执行 (XSS) 和跨站点请求伪造 (CSRF) 等常见攻击,以便定位威胁参与者可能利用的安全漏洞,例如配置错误、数据泄露和身份验证问题。
分析并模拟攻击之后,DAST 工具会生成报告,其中概述了已识别的漏洞、其严重性以及潜在的攻击场景,从而为开发人员和安全团队提供指导。请记住,DAST 解决方案仅专注于识别安全问题,且会将所有修复操作留给开发团队去完成。
DAST 工具偶尔会产生误报,从而误将某些内容标记为漏洞。出现此情况时,通常需进行人工验证和确定优先次序。
虽然 DAST 测试工具没有任何官方子类型,但安全专家通常会将其划分为两种非正式类别—现代 DAST 工具和传统 DAST 工具,而二者的主要区别在于自动化/集成和漏洞验证。
旧版 DAST 工具通常缺乏自动化功能,虽然它们的扫描流程是自动化的。它们通常专注于基本测试(发送请求、接收响应和进行初步评估)且不提供完整的漏洞验证,而只提供潜在安全问题的清单。
现代 DAST 工具具有更高的自动化程度,且提供对 Web 应用程序漏洞的更彻底审查。
现代 DAST 解决方案可无缝集成到 SDLC 中并在后台透明运行。此外,自动化服务器可触发现代 DAST 工具并将扫描结果作为票证显示在开发人员的问题跟踪器中。此外,某些现代 DAST 工具甚至还提供攻击证据,从而免于渗透测试人员或安全专家进行费时的手动验证。
DAST 通常被视为 Web 应用程序安全测试的关键组成部分。它的部分独有优势包括:
尽管有这些优点,但 DAST 也可能存在局限性。虽然 DAST 善于识别正在运行的应用程序中的安全漏洞,但它可能无法发现所有漏洞,尤其是那些需要特定操作序列的漏洞。通过将 DAST 与其他方法(例如,静态应用程序安全测试(SAST,见下文)、交互式应用程序安全测试 (IAST)、软件组成分析 (SCA) 和手动渗透测试)相结合,可帮助完善 DAST 并提供更全面的安全计划。
DAST 的其他限制可能还包括:
DAST 和 SAST(静态应用程序安全测试)是用于识别 Web 应用程序中安全漏洞的两种测试方法。但是,DAST 被用于评估生产环境中的应用程序,从而模拟恶意用户攻击并识别安全问题;SAST 则被用于深入研究这些应用程序的源代码,从而搜索网站应用程序中是否存在漏洞。
网络安全专家通常建议在解决安全风险时同时使用 SAST 和 DAST,以便全面了解潜在漏洞。例如,在检查某一程序的源代码时,SAST 工具可发现 DAST 可能遗漏的各种安全漏洞,其中包括 SQL 注入、缓冲区溢出、XXE 攻击和其他 OWASP 十大风险。
使用 SAST 方法还可鼓励在开发期间进行早期测试,从而降低应用程序源代码在后续阶段出现安全漏洞的可能性,进而缩短开发时间并提高整体安全性。