翻译文章 · 2023年7月26日 0

翻译文章 | IDC技术简介:交互式应用程序安全测试(连载二)

【简介】本文内容来源于:翻译IDC报告《IDC TechBrief: Interactive Application Security Testing》。作者将会持续连载,敬请关注后续更新。

运行多个工具需要时间,并且需要用安全专业知识来解释结果。此外,将来自不同工具的安全测试结果关联起来可能会很困难。静态工具报告源代码行号,动态工具报告 HTTP 请求,开源工具(例如,软件成分分析[SCA])报告库版本号。没有很好的方法来关联和规范化所有这些报告,以获得安全漏洞的清晰图景。这个问题催生了名为应用安全编排和关联(ASOC)的新工具,旨在管理安全工具的输出(参 见 IDC 市场概览:  DevSecOps,  1Q22,  IDC  #US48599722,  2022 年 2 月)。

通常, IAST 使用 APM 工具、代码分析器和调试器所利用的技术,用安全传感器检测应用程序和 API。传感器评估来自正在运行的应用程序的与安全相关的事件,并将事件数据传递给分析引擎。分析引擎收集这些事件并识别易受攻击的代码执行模式。

IAST 解决方案有两种方式:

被动式(完整)IAST:它使用一个单独的组件,一个监视 web 应用程序运行的传感器。被动式IAST 不模拟攻击,只需要一个检测组件,它作为运行时agent成为应用服务器的一部分。被动式 IAST 技术不需要攻击应用程序,也不需要发送专门设计的流量来进行安全测试。使用被动方法,IAST-Agent在应用程序内部等待应用程序开始执行,然后才开始产生结果。因此,被动式 IAST 工具是由实际的应用程序活动驱动的。

主动式 IAST:这涉及两个组件—— 一个生成攻击场景,另一个监视正在运行的 web 应用程序的行为。使用主动式 IAST,可以在应用程序中添加简单的检测工具,以使用诸如应用程序代码库中漏洞的位置等信息增强 DAST 扫描仪的结果。主动式 IAST 既需要向被测试的应用程序添加检测代理,也需要针对应用程序设置和运行 DAST 扫描。

本 IDC 技术简报主要关注被动式 IAST 解决方案的能力。

采用的观点

交互式应用安全测试:IDC 的采用视图

资料来源:IDC, 2022

IAST基本原理

IAST分析不同类型的信息,所有这些上下文信息使IAST能够执行比其它工具更广泛的规则数组,比其它工具更准确地识别漏洞,并生成详细的报告,使开发人员能够快速理解、发现和修复问题。IAST扫描范围包括:

HTTP :IAST询问HTTP请求和响应,并识别漏洞,在这个流量中使用类似于DAST的技术。

代码:IAST可以访问在应用程序中部署的所有源代码和二进制代码。编码传感器会对应用程序代码进行二进制静态分析,包括库和框架。

库和框架:IAST可以查看部署的每个库和框架,应用程序或API究竟是如何使用它们的,并评估已知漏洞(cve)的库。因为IAST知道应用程序使用了库的哪些部分,所以它可以过滤掉与从未被调用的库相关联的漏洞。

应用程序状态:IAST 可以在程序执行期间检查应用程序状态。例如,IAST 可以看到调用 安全方法来识别问题的参数。

数据流:IAST 跟踪来自不受信任的数据源的数据,从数据进入应用程序的位置,到数据在应用程序或 API 中可能流动的位置。IAST 收集的跟踪数据可以识别关键漏洞,例如注入缺陷。

控制流:IAST 理解应用程序的控制流,可以识别代表漏洞的应用程序行为模式。

连接:IAST 可以访问围绕每个后端连接的所有细节,例如数据库和操作系统(OS)调用。 它可以使用这些信息来识别架构缺陷和安全漏洞。

:IAST 可以访问应用程序、框架、服务器和平台配置选项,以确保它们为应用程序安全 性进行了适当的配置。

IAST几乎可以安装在任何应用程序上,只要可以安装agent即可。它不需要应用程序的源代码。然而,考虑IAST对这些应用程序的性能影响是很重要的。延迟通常足够短,在开发和测试环境中不会注意到;但是,即使在生产中额外的几毫秒也是不可接受的。

开发者参与安全建设

由于 IAST 不是扫描器,而是有效地成为应用程序的一部分, 因此在整个软件开发生命周期中,用户可以在应用程序运行的任何地方使用 IAST。它可以为开发人员在本地环境中构建和测试的代码提供即时反馈。IAST 的安全检测结果可能通过开发人员的 IDE、开发人员聊天通道或敏捷问题跟踪软件发送。这种灵活性使得 IAST 非常适合 DevOps, 因为不同的 DevSecOps 工具集合可能会减慢速度, 并与 DevOps 流程产生摩擦。

由于IAST可以提供确切的代码行、HTTP请求以及数据和控制流,所以它将开发人员定位可能存在风险的代码部分的时间最小化,并使开发人员更容易应对应用程序安全性。IDC的DevSecOps调查数据显示,当组织向开发人员提供正确的工具和培训时,结果是更安全的应用程序、更快的补救,以及开发人员拥有安全所有权(见DevSecOps采用、技术和工具调查,IDC#US47597321,2021年4月)。

主要优势

准确性:IAST安全评估比传统扫描器更准确,并且涵盖了在应用程序组合中并行运行的整个应用程序堆栈。IAST解决方案可以监视和查看应用程序中正在发生的事情。相比之下,DAST工具通常会产生误报,并且不会为已识别的漏洞提供代码级数据,这使得对结果进行分类并轻松消除误报变得更具挑战性。

可扩展性:由于 IAST 在后台运行的方式以及结果的速度和准确性,它可以使组织以最小的努力扩展其 DevSecOps 能力。这里的关键是, IAST 解决方案将为开发人员提供可操作的发现,而不是让他们被误报淹没。

盖范围:因为 IAST 可以访问代码,所以它可以对每一行运行的代码执行 SAST的能力。此外,由于 IAST 可以访问 HTTP 流量,因此它可以对每个请求和响应执行类似 DAST 的分析。

DevOps 集成:当IAST 在后台运行时,DevOps 团队可以构建、测试和部署代码,而不会给流程增加摩擦。 IAST 是唯一一种动态测试技术,它可以无缝集成到 CI/CD 流程中,而无需向流程中添加额外的步骤,同时有助于确保危险代码或第三方库不会向应用程序引入新的漏洞。

全保证:IAST 也可以用于 QA、测试或 CI/CD 阶段,以确保没有漏洞逃过开发环节。

行安全编码标准:一些 IAST 解决方案可以执行安全规则,并在开发人员引入不安全代码时向他们提供即时反馈。

审计和遵从性:IAST 解决方案提供了应用程序已经过安全测试的有力证据。 IAST 工具生成的报告可以证明应用程序经过了彻底的测试,并且没有发现漏洞。                      

保护遗留应用程序:遗留应用程序通常已经运行了很长时间,没有进行重大的开发工作或安全  测试。如果用户第一次尝试使用 SAST 和 DAST 扫描仪来测试这些旧的应用程序,可能会发现 许多误报,从而难以确定存在安全问题的地方。另外,IAST 测试将提供更准确的结果,更少的假阳性,识别可操作性的安全发现,从而帮助用户提高遗留应用程序的安全性。

潜在的挑战

:由于 IAST 使用类似代码分析器的方法,因此可能会有额外的应用程序启动时间和额外的运行时延迟,通常以毫秒为单位。这种额外的性能影响对大多数测试场景来说是不明显的,但可能不适合生产级扫描。

言支持:由于 IAST agent需要检测应用程序代码,因此 IAST 解决方案必须为每种受支持的编程语言和运行时环境提供不同的agent和安装包。当使用包含许多松耦合微服务的现代多语言应用程序时,这种约束也会产生开销。

开发:许多现代 web 应用程序利用开发框架(例如,Spring, Ruby on Rails, ExpressJS)与其他 AST(应用程序安全测试)工具一样, IAST 工具必须支持应用程序和 API 框架,因为  IAST agent必须能够检测底层框架,以理解应用程序的内部工作并提供适当的安全覆盖。寻找那些提供广泛平台、框架和库覆盖的供应商。

服务器端代理:应用程序的每个实例(即服务器、虚拟机或容器)都需要在其中部署一个 IAST agent,并且配置过程可能涉及某种级别的软件检测。最好的方法是将 IAST 添加到容器、黄金/克隆映像服务器和云环境中——这样它就出现在代码运行的任何地方。

测试覆盖率:被动式 IAST 通常由开发和 QA 测试驱动,单元和功能测试的代码覆盖率会影响安全性测试的范围。轻量测试覆盖范围的团队,只测试应用程序的主路径可能会错过潜在的边缘案例。然而,IAST 的实际应用程序代码覆盖率仍然可能高于从外部攻击应用程序的  DAST 解决方案。