动态应用程序安全测试 (DAST) 是一种黑盒安全测试方法,从外部对应用程序进行测试。使用 DAST 的测试人员会在应用程序运行时检查应用程序,并尝试像攻击者一样破解它。另一方面是静态应用程序安全测试(SAST),它是一种白盒测试方法。使用 SAST 的测试人员从内部检查应用程序,搜索其源代码以查找可能存在安全漏洞的情况。

Acunetix 是一款动态扫描仪,我们坚信 DAST 和黑盒方法。这并不意味着白盒方法可以被忽视。这两种方法都有其优点和缺点,并且都应该成为每个有效的安全计划的一部分。本文旨在强调 DAST 的优势以及 Acunetix 如何解决其弱点。有关 SAST 的更多信息,您可以查阅OWASP wiki

技术覆盖范围

安全测试最重要的属性之一是覆盖率。为了评估应用程序的安全性,自动扫描仪必须能够准确地解释该应用程序。

SAST 扫描仪不仅需要支持语言(PHP、C#/ASP.NET、Java、Python 等),还需要支持所使用的 Web 应用程序框架。如果您的 SAST 扫描仪不支持您选择的语言或框架,您在测试应用程序时可能会遇到困难。

另一方面,DAST 扫描仪在很大程度上与技术无关。这是因为 DAST 扫描器与外部应用程序交互并依赖于 HTTP。它使它们可以与任何编程语言和框架一起使用,包括现成的和定制的。

环境配置错误

应用程序代码只是一系列复杂的互连 Web 服务器、代理、数据库、缓存等的构建块之一。假设 Web 安全测试应该只关注代码是一种幼稚的 Web 安全方法。错误配置会暴露很大的攻击面。

DAST 方法在这里也获胜。由于 DAST 测试是从外部完成的,因此扫描仪非常适合测试 Web 应用程序的数百个潜在配置问题。

IAST:框内思考

DAST 扫描仪首先抓取 Web 应用程序,然后再进行扫描。这使得扫描器可以找到 Web 应用程序中页面上所有暴露的输入,然后对这些输入进行一系列漏洞测试。SAST 扫描器在代码覆盖率方面具有优势,因为扫描器可以访问应用程序代码。这意味着它知道所有应用程序输入,包括未公开的隐藏输入。

为了解决这个问题,开发了灰盒方法。交互式应用程序安全测试 (IAST)结合了黑盒和白盒方法的优点。Acunetix 是首批使用此方法的 DAST 解决方案之一。

Acunetix AcuSensor(作为所有 Acunetix 产品的标准配置)的工作原理是在应用程序后端安装一个传感器,该传感器在 DAST 扫描期间激活。然后,传感器将有关执行代码的实时信息转发回扫描仪。这还包括扫描仪无法使用纯黑盒方法获取的隐藏输入、隐藏文件和配置信息。

OAST:带外并不意味着看不见

人们通常认为 DAST 扫描器只能测试带内漏洞(执行将立即响应返回到扫描器的测试)。大多数 DAST 扫描器可能都是这种情况,但 Acunetix 多年来一直能够测试带外漏洞。

心电监测仪

2013 年,Acunetix 推出了AcuMonitor,这是第一个支持带外漏洞测试的商业产品。此类漏洞测试现在称为带外应用程序安全测试 (OAST)。OAST技术可用于检测多种带外漏洞,例如盲跨站脚本(BXSS)带外SQL注入(OOB-SQLi)、带外远程代码执行等此类别中最有趣的是:服务器端请求伪造 (SSRF),其中包括XML 外部实体 (XXE)漏洞。

误报和结果验证

误报是指测试结果错误地表明存在漏洞,而实际上并不存在的情况。误报是每个首席信息安全官的噩梦,也是自动化安全测试的常见问题,尤其是在 SAST 工具的情况下。它们不仅令人讨厌,而且还大大降低了工具的实用性。您最终可能会花费更多的时间来清除误报而不是修复漏洞。它通常会导致禁用多个安全测试,只是为了避免误报并造成错误的安全感。

与 SAST 相比,DAST 解决方案报告误报的可能性较小。如果应用程序可以根据扫描器的意愿执行任意 SQL 查询,那么毫无疑问 – 我们知道该应用程序容易受到 SQLi 的攻击。IAST 的引入将误报率降低到接近于零。

SAST 工具还使得重现和演示某些安全问题变得更加困难。DAST 工具可以为您提供 HTTP 请求,该请求可以在您选择的手动工具中重播。这使您可以演示和评估漏洞对业务的影响。

将 DAST 与 SDLC 集成

许多开发人员认为 DAST 工具不能与问题跟踪器和持续集成管道等系统开发生命周期 (SDLC) 工具很好地配合使用。这不是真的; DAST 工具可以轻松、优雅地与流行的问题跟踪器(例如 Atlassian JIRA、GitHub 和 Microsoft TFS)集成。

此外,与任何其他类型的自动化测试工具一样,DAST 解决方案可以与 Jenkins 等 CI 平台集成。使用 Acunetix,您甚至可以安装Jenkins 插件:构建可以根据您设置的参数通过或失败。您还可以直接从 Jenkins 本身生成报告。当然,如果您不使用 Jenkins,您始终可以使用 Acunetix API 创建自己的集成。


进行演示以动态了解您的应用程序安全性。

如何在 SDLC 中包含 SAST 和 DAST

高效的 DevSecOps/SecDevOps SDLC 环境必须包括应用程序安全测试。SAST 和 DAST 工具在开发过程中都有特定的位置。以下是我们构建安全 Web 应用程序 SDLC 的最佳实践建议。


从计划扫描开始

第 1 步:从计划扫描开始

在 SDLC 中包含安全测试之前,您应该使用计划扫描来保护您的临时环境。您只能使用 DAST 工具来执行此操作 - SAST 不适合此目的。我们建议每周进行一次完整扫描,每天进行连续/增量扫描。


将 DAST 包含在 SDLC 中

步骤 2:将 DAST 包含在 SDLC 中

如果您开发 Web 应用程序并且希望降低消除漏洞的成本,请将 DAST 集成到您的 CI/CD 管道中。例如,您可以安装 Acunetix 插件来自动扫描每个 Jenkins 构建。这对于所有管道和所有开发语言都是可能的。


在 SDLC 中包含 IAST 或 SAST

步骤 3:在 SDLC 中包含 IAST 或 SAST

如果您希望开发人员了解有关该漏洞的更多信息,您可以使用基于 DAST 的 IAST(例如,Acunetix AcuSensor,可用于 PHP、Java 和 .NET)。您还可以为所有开发语言购买单独的 SAST/IAST 产品。请注意,SAST 将为开发人员提供更多信息,但也会导致更多误报。最终,由于在检查误报上浪费了过多的时间,可能会导致成本增加而不是减少。



上一篇:没有了!

下一篇:没有了!