主页

topics

DAST

什么是动态应用程序安全测试 (DAST)?
探索 IBM Security MaaS360 注册以获取安全主题更新
云、手机、指纹和复选标记的象形图

发布日期:2024 年 4 月 8 日
撰稿人:Annie Badman、Amber Forrest

什么是 DAST?

动态应用程序安全测试 (DAST) 是一种网络安全测试方法,它可用于识别 Web 应用程序、API 和移动应用程序(最近才为其实现此功能)中的漏洞和错误配置。

较之其他类型的应用程序安全 (AppSec) 测试,DAST 凭借其由外而内的方法脱颖而出。其他工具需要借助源代码和应用程序的内部访问权限才能评估安全漏洞,而 DAST 却可从外部在应用程序的运行时环境中对其进行测试,并使用模拟攻击来模仿恶意参与者。因此,DAST 有时被称为由外而内的测试或黑匣测试;这是一种无需测试人员在访问、调查甚至了解内部工作原理的情况下检查系统的测试方法。

DAST 为何十分重要

当今的开发人员工作速度都很快,他们通常每天会多次更新特定的代码区段,而无法全面的了解整个代码库。同时,他们严重依赖第三方组件和开源组件,且经常难以与安全团队开展有效合作。此外,他们中的大多数人还致力于开发日益复杂的应用程序,其中附带众多功能、库和依赖项,同时还需管理不断演变的网络安全威胁。

如此一来,安全漏洞的表面积便会不断加大,从而加剧了编写安全代码和保护敏感信息免遭数据泄露的难度。开发人员亟需在工作时能对潜在漏洞进行测试的方法,同时又不影响他们的工作效率。

DAST 可通过自动运行安全测试流程来帮助实现这一目标。它的工作原理是模仿现实黑客的操作,以便从外部发现正在运行的应用程序中的潜在漏洞。DAST 允许开发人员测试其代码,并在其上线之前了解它对整体应用程序安全性有何影响;同时,它还善于查明安全问题,如身份验证错误和代码漏洞,而此类问题常会被其他测试方法(如,软件组成分析 (SCA))遗漏。

现代 DAST(见下文)工具还可无缝集成到 DevOpsCI/CD 管道中,以便为开发的所有阶段(包括应用程序开发工作流程的早期阶段)提供接口。

构建与部署集成是 DevOps 团队通常会在 DevOps/DevSecOps 环境中采用 DAST 的原因之一,且会作为“左移”方法的其中一部分。在此方法中,测试会在软件开发生命周期 (SDLC) 的早期阶段进行,以便实现更经济且更省时的修复。DAST 工具可增强的其他 DevOps 原则包括:优先考虑自动化、协作和持续反馈,以便开发人员和安全团队能在不影响安全性的情况下保持敏捷和高效。

DAST 是如何工作的?

由于 DAST 采用黑匣方法,因而它可模拟恶意威胁参与者在试图破坏 Web 应用程序时可能会执行的操作。

一般来说,DAST 包括以下五个步骤:

扫描

作为第一步,DAST 扫描器会通过发送各种 HTTP 请求来模拟用户与运行时应用程序的交互。此映射会通过 API 定义文档来识别 API 测试中定义的所有页面、链接、功能(适用于单页 Web 应用程序)和入口点。

分析

发送请求时,DAST 工具便会开始分析应用程序的响应,从而查找可能表示 Web 应用程序漏洞的各种异常、错误消息和意外行为。当 DAST 扫描检测到任意潜在漏洞时,它会记录其位置和响应以备将来参考,以便必要时允许手动进行测试。

攻击模拟

DAST 工具还会开始模拟 SQL 注入、跨站点脚本执行 (XSS) 和跨站点请求伪造 (CSRF) 等常见攻击,以便定位威胁参与者可能利用的安全漏洞,例如配置错误、数据泄露和身份验证问题。

报告

分析并模拟攻击之后,DAST 工具会生成报告,其中概述了已识别的漏洞、其严重性以及潜在的攻击场景,从而为开发人员和安全团队提供指导。请记住,DAST 解决方案仅专注于识别安全问题,且会将所有修复操作留给开发团队去完成。

解决误报问题

DAST 工具偶尔会产生误报,从而误将某些内容标记为漏洞。出现此情况时,通常需进行人工验证和确定优先次序。

DAST 工具的类型

虽然 DAST 测试工具没有任何官方子类型,但安全专家通常会将其划分为两种非正式类别—现代 DAST 工具和传统 DAST 工具,而二者的主要区别在于自动化/集成和漏洞验证。

旧版 DAST

旧版 DAST 工具通常缺乏自动化功能,虽然它们的扫描流程是自动化的。它们通常专注于基本测试(发送请求、接收响应和进行初步评估)且不提供完整的漏洞验证,而只提供潜在安全问题的清单。

现代 DAST

现代 DAST 工具具有更高的自动化程度,且提供对 Web 应用程序漏洞的更彻底审查。

现代 DAST 解决方案可无缝集成到 SDLC 中并在后台透明运行。此外,自动化服务器可触发现代 DAST 工具并将扫描结果作为票证显示在开发人员的问题跟踪器中。此外,某些现代 DAST 工具甚至还提供攻击证据,从而免于渗透测试人员或安全专家进行费时的手动验证。

DAST 的优缺点

DAST 通常被视为 Web 应用程序安全测试的关键组成部分。它的部分独有优势包括:

  • 多功能性。用户可在软件开发生命周期的各个阶段部署 DAST—DAST 可用于测试正在运行的 Web 应用程序以及已部署且无需修改的应用程序,从而更易于评估旧系统。
  • 自动化。DAST 工具可轻松集成到 DevOps 与 CI/CD 管道中,从而可在开发流程的早期运行自动化安全测试,并大幅降低修复成本。
  • 与语言无关。由于 DAST 的作用方向为由外向内,因此它不依赖于应用程序中使用的编程语言,且可在众多框架上运行。DAST 可有效测试 Web 界面和 API,从而模拟攻击者如何发现漏洞。
  • 减少误报。较之 SAST 等其他方法相比,DAST 在模拟用户操作时通常会产生较少的误报和漏报。
  • 现实且可重复的测试。由于 DAST 会模拟真实的攻击者行为,因此它是一种实用的解决方案,可用于识别恶意参与者可能利用的漏洞。此外,DAST 还具备可重复测试的优势,从而可随着应用程序的发展进行持续的漏洞评估。
  • 全面的漏洞发现。DAST 可发现各种漏洞,包括 SQL 注入、XSS 和配置错误。
  • 与行业标准保持一致。企业常使用 DAST 来遵守行业标准并协助完成监管报告,例如 PCI 合规性。很多公司将“OWASP 十大风险”榜单用作应用程序安全风险的合规性基准。

尽管有这些优点,但 DAST 也可能存在局限性。虽然 DAST 善于识别正在运行的应用程序中的安全漏洞,但它可能无法发现所有漏洞,尤其是那些需要特定操作序列的漏洞。通过将 DAST 与其他方法(例如,静态应用程序安全测试(SAST,见下文)、交互式应用程序安全测试 (IAST)、软件组成分析 (SCA) 和手动渗透测试)相结合,可帮助完善 DAST 并提供更全面的安全计划。

DAST 的其他限制可能还包括:

  • 专注于可执行代码。由于 DAST 主要会测试已部署 Web 应用程序的组成部分(即,已可运行的代码),因此它可能会错过仍在开发中的部分。
  • 身份验证挑战。对于非标准的身份验证和复杂的业务逻辑,DAST 可能会效果较差,但专业的 DAST 工具包含针对这些情况的指导模块。
  • 运营影响。如果未进行适当的调整,DAST 测试可能会影响正常的应用程序运行,且可能会引入样本数据或减慢应用程序速度。因此,很多企业会在暂存或生产克隆环境中运行 DAST,而不是在实时生产环境中运行。
DAST 与 SAST

DAST 和 SAST(静态应用程序安全测试)是用于识别 Web 应用程序中安全漏洞的两种测试方法。但是,DAST 被用于评估生产环境中的应用程序,从而模拟恶意用户攻击并识别安全问题;SAST 则被用于深入研究这些应用程序的源代码,从而搜索网站应用程序中是否存在漏洞。

网络安全专家通常建议在解决安全风险时同时使用 SAST 和 DAST,以便全面了解潜在漏洞。例如,在检查某一程序的源代码时,SAST 工具可发现 DAST 可能遗漏的各种安全漏洞,其中包括 SQL 注入、缓冲区溢出、XXE 攻击和其他 OWASP 十大风险。

使用 SAST 方法还可鼓励在开发期间进行早期测试,从而降低应用程序源代码在后续阶段出现安全漏洞的可能性,进而缩短开发时间并提高整体安全性。

相关解决方案
IBM Security MaaS360

利用 AI 驱动式统一终端管理 (UEM) 来管理和保护移动劳动力。

探索 IBM Security MaaS360

数据安全解决方案

更好地保护各种混合云环境中的数据,并简化合规性要求。

深入了解 IBM 安全解决方案

应用程序安全解决方案

通过将 DevOps 转变为包含人员、流程和工具的 DevSecOps,随时随地安全地构建、部署和迭代应用程序。

探索应用安全服务
资源 什么是漏洞管理?

了解漏洞管理解决方案如何帮助安全团队主动发现 IT 资产中的安全漏洞、确定其优先级并加以解决。

什么是渗透测试?

渗透测试会利用模拟攻击来查找计算机系统中的漏洞。

渗透测试方法和标准

了解用于查找安全漏洞和降低网络风险的顶级渗透测试方法。

采取后续步骤

随着灵活的工作模式成为新常态,员工需要随时随地在任何设备上以受保护的方式保持高效工作。从端点管理到本机安全,IBM Security MaaS360 提供端到端的 UEM 解决方案。

探索 MaaS360 预约实时演示