所有文章 > 技术杂货铺 > 动态应用程序安全 测试(DAST)工具 概述和指南
动态应用程序安全 测试(DAST)工具 概述和指南

动态应用程序安全 测试(DAST)工具 概述和指南

动态应用程序安全测试概述

动态应用程序安全测试(也称为 DAST)是一种测试应用程序运行版本以识别潜在安全漏洞的方式。借助 DAST,扫描程序会向您的应用程序发送模拟恶意攻击者的请求,并评估从应用程序收到的响应以判断是否存在安全漏洞。在运行模拟攻击测试套件时,任何潜在漏洞都会被记录下来以供审查。

DAST 扫描器长期以来一直是企业安全团队、软件工程团队和渗透测试人员最喜爱的工具。这种形式的测试可以发现您的团队在软件交付周期中引入的漏洞以及应用程序中使用的开源组件中可利用的漏洞。它通常与静态应用程序安全测试 (SAST) 和软件组合分析 (SCA) 工具一起使用。DAST 以其低误报率和精确显示应用程序安全风险而闻名。

工作原理

DAST 扫描器首先指向运行应用程序的主机。这可能是一个公开的网站或 Web 应用程序,但通常建议针对预生产环境运行 DAST 扫描。鉴于扫描器模拟攻击者,它可能会修改或删除生产环境中的数据,这会产生明显的负面影响(在我们的文章中详细了解为什么不应该针对生产环境运行 DAST 以及如何为 DAST 扫描植入数据库)。

一旦扫描仪指向主机,HTML 蜘蛛就会识别所有可能的路径和操作。根据工具的不同,它还可能使用 AJAX 蜘蛛来处理单页应用程序,使用 OpenAPI 规范来测试您的 REST API,甚至查看 GraphQL 自省端点来识别您的 GraphQL API 查询树。理想情况下,您的工具应尽可能多地覆盖您的应用程序和支持 API,并且应以自动化的方式进行。

然后,扫描程序开始运行一套测试,向所有已识别的路径/端点发送请求,并寻找可能表明存在安全漏洞的响应。任何发现都会显示在 DAST 扫描程序的报告或平台中,理想情况下还会显示开发人员修复漏洞所需的相关信息。

发现了什么

DAST 扫描器无需直接查看应用程序的源代码即可发现各种安全漏洞。这些漏洞包括 SQL 注入、跨站点脚本 (XSS)、跨站点请求伪造 (CSRF) 以及许多其他漏洞。这些扫描器可以发现大多数 OWASP Top 10 漏洞。要查看 DAST 扫描器识别的漏洞类型的示例,请查看开源 ZAP(最流行的应用程序安全测试工具)运行的测试。

DAST 扫描器未发现 OWASP Top 10 漏洞,是因为这些漏洞无法在通用自动化测试中找到。不过,一些 DAST 工具引入了自定义脚本支持,允许测试复杂的业务逻辑或识别特定于您的应用程序的漏洞。例如,身份验证或跨租户检查失败。

DAST 选项:入门和评估工具

动态应用程序安全测试的一个好处是入门简单。借助工具内的自动化测试,您只需将扫描仪指向主机即可开始。

无论您是想扩展企业应用程序安全程序,还是刚开始进行首次应用程序安全测试,都有解决方案可以为您提供支持。以下信息提供了该领域领先的解决方案列表以及选择工具时需要考虑的标准

DAST 产品和工具

市场上有许多 DAST 工具,包括几个开源或免费选项。以下是可用于测试的该领域领先工具的列表。

  • StackHawk: StackHawk 是一款专为 CI/CD 自动化而构建的现代 DAST 工具。对于希望在投入生产之前发现漏洞并将安全测试集成到工程工作流程中的团队来说,StackHawk 是首选。StackHawk 建立在开源 ZAP 项目之上,为工程团队提供简化的自动化、漏洞分类和修复安全发现。
  • ZAP: ZAP 是一个开源 DAST 扫描器。ZAP 是最广泛使用的应用程序安全扫描器,已成为10 年来的行业标准,并且专为自动化而构建。ZAP 支持使用桌面应用程序进行扫描,还支持通过 API 自动扫描 Web 应用程序。
  • Burp Suite: Burp Suite 是 PortSwigger 的一款产品,是一款渗透测试工具。适用于希望进行手动扫描的渗透测试人员或内部应用程序安全团队。还有一个利用代理部署的企业版。
  • Detectify: Detectify 是 DAST 领域中较新的参与者,尽管它利用众包方法来识别漏洞。DAST 扫描器会按计划针对生产应用程序运行。
  • Netsparker: Invicti 开发的 Netsparker 是一款成熟的 DAST 工具,支持企业安全团队。Netsparker 具有本地部署和专业服务部门来领导部署,适合尚未投资 DevSecOps 的企业。
  • Rapid7: InsightAppSec 是另一个长期存在的企业安全平台 Rapid7 提供的 DAST 解决方案。InsightAppSec 支持本地部署和生产计划扫描,使其成为尚未投资 DevSecOps 的企业的另一种选择。
  • Veracode: Veracode 是一个企业应用安全平台,具有 SAST、SCA、IAST 和现在的 DAST 解决方案。对于优先考虑单一平台满足所有应用安全需求的大型企业来说,Veracode 可能是正确的选择。

如何选择 DAST 工具

一旦您决定开始进行动态应用程序安全测试,这个过程中最困难的部分可能是决定哪种工具适合您。以下是选择工具时需要考虑的几点。

扫描频率:自动、计划或手动

考虑一下您希望多久启动一次扫描。以下选项是最常见的扫描方法。

CI/CD 自动扫描

应用程序安全的未来是自动化的,并与 DevOps 管道(许多人称之为 DevSecOps)集成。借助 CI/CD 管道中的自动安全扫描,可以带来许多好处,从而更快地发现和修复安全威胁,包括:

  • 在投入生产之前,开发人员会收到有关新漏洞的警报,可以选择中断构建以确保在发布之前进行审核。
  • 可以针对底层服务和 API 而不是面向客户的应用程序进行测试,从而在发现错误时更快地识别底层问题。
  • 通过对每个拉取请求进行测试,可以测试较小增量的变更,从而允许开发人员在他们正在处理的代码环境中快速修复漏洞。

计划扫描

尚未准备好采用应用程序安全自动化的团队可能会选择定期对应用程序进行扫描。虽然在外部基础设施上运行扫描程序并启动扫描可能更简单,但这种动态应用程序安全测试方法存在一些问题:

  • 定期扫描通常针对生产站点执行。鉴于 DAST 扫描器会主动攻击应用程序,因此安全测试的范围通常会受到限制,以避免影响生产环境。然而,这种方法会使应用程序容易受到一些最恶意的攻击。
  • 当发现漏洞时,必须采取低效的内部流程来发现漏洞的根本原因。
  • 生产应用程序包含针对 BOT 类型活动的保护措施,例如速率限制,这使得扫描仪更难有效地运行测试。

手动扫描

手动扫描通常很容易上手,但缺乏跨团队的可扩展性。此外,对于通常部署修复程序的个人来说,这些扫描的结果不太可重现。然而,从自动测试中继承共享配置的手动扫描在验证修复程序方面非常有益。

已验证扫描

如果您的应用程序需要用户登录,您将需要一个支持身份验证扫描的扫描仪。如果您使用的是自动或计划的扫描仪,这可能会更加困难。您需要确保供应商支持您的身份验证扫描形式,例如基于 cookie、外部令牌和持有者令牌。

应用目标:生产现场与预生产现场

如上所述,与生产应用程序相比,扫描预生产有很多好处,包括能够在漏洞生效之前捕获漏洞,不必绕过速率限制器、防火墙和 WAF,以及缩短修复时间。

虽然运行这些扫描的能力部分取决于公司的部署流程,但构建用于支持预生产扫描的扫描仪具有价值。

工具用户:安全分析师或工程团队

在选择工具时,首要考虑因素之一应该是使用该工具的人。虽然测试和修复应用程序安全漏洞和漏洞通常需要安全团队和开发团队的共同努力,但以开发人员为中心的安全工具正日益流行。

这些工具越来越多地被使用,使开发人员能够在其现有工作流程中做出分类决策并部署修复,而安全团队的责任则转向基于风险的指导监督。

API 安全测试

过去几十年来,应用程序安全测试格局发生了变化,API 成为主要的潜在攻击媒介。如果您针对现代应用程序运行应用程序安全测试,请确保您选择的工具支持 API 测试作为该工具的一流部分。

此外,如果您使用GraphQL作为技术堆栈的一部分,则需要确保您的 DAST 工具支持 GraphQL API 测试。您还需要确保该工具支持扫描联合 GraphQL 实现。

单页应用程序安全测试

近年来,基于React或Angular等框架构建的单页应用程序 (SPA)迅速流行起来。如果没有静态 DOM,传统的 HTML 爬虫就无法识别要针对其运行动态应用程序安全测试的各种路径。测试 SPA 需要支持 AJAX 爬虫的工具以及可以扫描底层 API 的工具。

部署模型:本地部署与 SaaS

在确定正确的应用程序安全测试工具时,您应该考虑组织的部署模型。大多数公司会选择 SaaS 解决方案,但有些公司仍然需要本地解决方案。

结论:开始测试

动态应用程序安全测试是确保您交付安全的应用程序并避免违规风险的绝佳方法。入门相对简单,并且有许多免费和开源工具可支持您的测试。DAST 通过帮助识别安全漏洞和生成高质量的漏洞评估报告,为开发人员提供了显着的安全优势。这里的要点是开始测试!

文章来源:Dynamic Application Security Testing (DAST) Tools Overview & Guide

#你可能也喜欢这些API文章!