上海探巡科技有限公司,软件供应链现代化领导者, 聚焦应用现代化和安全运营治理能力建设

软件供应链安全社区 检测评估组|软件供应链安全工具链研究系列——动态安全测试工具DAST

2023年09月27日

01 工具的简介

a) 基本能力

DAST(Dynamic Application Security Testing)是在应用程序处于生产阶段时发现安全漏洞的过程,它包括使用各种测试工具进行手动和自动化测试。DAST是一种黑盒测试方法,从外部对正在运行的应用程序进行测试,模拟黑客攻击探测运行时漏洞。测试人员无需了解应用的内部交互或设计,也无需访问或查看源程序,即可在系统层面,采用攻击特征库来做漏洞发现与验证。这种“黑盒”测试从外到内查看应用,检查其运行状态,并观察其对测试工具模拟攻击的响应。观察应用对这些模拟的响应有助于确定应用是否易受攻击,且易受真正的恶意攻击。

b) 基本原理

DAST工具模仿恶意攻击者行为,自动模拟攻击应用来开展测试,包括:

1) 通过爬虫发现Web应用结构,包括:目录、页面、页面中有哪些参数等;

2) 根据爬虫的分析结果,对发现的页面和参数发送修改的HTTP Request 进行攻击尝试;

3) 通过对于response的分析验证,发现可能被攻击者用于损害应用的预期之外的后果或结果。

DAST工具没有关于应用的内部信息,也没有源代码,因此会像外部黑客一样发起攻击。DAST工具针对编译后的可执行程序运行,以检测界面、请求、响应、脚本、数据注入、会话、身份验证等问题。除了可以扫描应用程序本身之外,还可以扫描发现第三方开源组件、第三方框架的漏洞。DAST会测试所有种类的endpoint,包括隐藏的endpoint,并触发不同种类的攻击以发现安全漏洞。

随着技术的演进发展,DAST从传统的版本指纹识别进行漏洞匹配开始,逐步增加了规则化模糊测试、精准POC验证等,融合了Web和API扫描、模糊测试、智能渗透测试等多种技术,以提高漏洞测试准确性,增加漏洞发现的价值。

相比较静态应用安全测试工具(SAST)的对于识别漏洞的高误报率,DAST工具所识别出的漏洞误报相对较低。另外,DAST工具可以识别运行时问题,即在应用未运行时无法发现的弱点。DAST工具还会分析应用如何对攻击作出实际响应,从而提供有用的反馈,说明该漏洞被操纵的可能性。

由于DAST技术对规则及POC数量的依赖,不可避免地存在疏漏,DAST工具在最大可能提供高质量自动化动态测试的同时,提供了手动动态测试能力,为应用安全测试团队提供手动的测试输入,以提升DAST测试的完整性。

02 工具的应用场景

随着新的应用程序、API和功能的不断增加,应用程序攻击面正在迅速扩大。这种增长促使攻击者使用易于访问的工具和实用程序,来利用具有已知漏洞或易感代码的应用程序。一旦应用程序遭到破坏,这些攻击者可能会获得未被检测到的机密客户数据、个人身份信息或其他可利用的资源的访问权限,使组织遭受代价高昂的信息泄露和客户信任丧失,因此,在软件开发生命周期的早期阶段进行安全测试对于在漏洞进入后期阶段甚至生产之前发现和修复漏洞至关重要。

由于DAST工具需要对运行态软件进行测试,软件开发测试人员可以在构建应用程序后,软件公开部署之前,对应用软件进行DAST测试。由于DAST可以对应用进行端到端的测试,而无需进入源代码,所以不需要事先了解所使用的编程语言,这使得DAST使用起来十分方便。DAST在运行时查找源代码中的漏洞,这意味着DAST不需要重新构建一个应用程序来测试漏洞。

当前主流的DAST工具厂商均提供了与CI工具等Devops工具集成的能力,可快速实现对运行态应用软件的漏洞发现检测。DAST工具通常会提供缺陷CWE类别、缺陷危险等级、缺陷表现、缺陷复现方法、缺陷修改建议、URL cookie、postdata、request及response内容,缺陷攻击状态等,以及基于缺陷发现的各类统计数据,以便于软件开发及测试人员对测试结果进行检查,更早的发现并解决问题。

03 工具应具备的能力建议

DAST工具作为黑盒测试工具,具有独立于应用程序、快速发现可能被利用的漏洞、不需要访问源代码、漏洞报告准确率高等优点,但是由于DAST工具采用外部攻击的方法对运行态应用进行检测,存在准备周期长,测试耗时长,无法给出漏洞在代码中的确切位置、解释报表需要安全知识、测试覆盖率低等弱点。而在这些问题中,生成高质量黑盒测试用例就是一个核心解决方式。

一方面,对于特定测试目标,基于已有的大规模原始数据,生成高质量的测试用例,保证能其够通过测试目标的语法与语义检查,从而执行到程序的深层次状态,并以此挖掘代码的深层次漏洞是一个有效的方法。

另一方面,分析测试目标的状态与行为并生成高鲁棒性模型,在此基础上可以生成基于模型的高效测试用例。