交互式应用安全测试(IAST)是一个自动识别和诊断应用程序和 API 漏洞的技术,它结合了 SAST 和 DAST 的优势,可以从应用内部持续监测漏洞。在整个开发生命周期中,IAST通过你在开发和测试中使用的工具实时提供告警。
IAST 的显著特性是它借助插桩(Instrumentation)直接从运行的代码中收集安全信息和遥测,以识别和诊断应用程序和 API 中的漏洞。但这并不意味着你需要等到生产阶段才开始进行 IAST,而是在你写下第一行代码的时候就开始在 IDE 中使用它。
由于 IAST 可以直接访问代码本身,它可以对每一行代码执行 SAST。此外,因为 IAST 可以访问 HTTP 流量,它可以对每个请求和响应进行类似 DAST 的分析。因此,IAST 结合了 SAST 和 DAST 工具的安全功能。
IAST 包含以下两个主要功能:
- 自有代码安全测试:IAST 可以自动分析应用程序和 API 的自有代码,找出之前没被发现的漏洞。IAST 能够识别各种各样类型的漏洞,不仅包含十大安全漏洞列表(OWASP Top 10)中的漏洞,还能识别出其他更复杂的漏洞。
- 开源安全测试:IAST 还可以通过两种方式来测试开源代码库和框架的安全性。首先,IAST 可以识别困扰开源软件的已知漏洞(通常以 CVE 的形式发布)。其次,IAST 还可以识别开源软件中未知的(“新的”或者“潜在的”)漏洞。
IAST 为敏捷环境提供哪些优势?
1、测试左移
由于该安全技术有助于快速跟踪问题报告和修复期之间的窗口期,所以可以有效减少开发过程中的延误。
安全和开发团队都需要在开发阶段使用 SAST 和 SCA 工具,而 IAST 实在测试阶段使用的安全工具。每当 IAST 发现安全问题,都会被反馈给开发人员,让他们在开发阶段修复这些漏洞。
每个组织都希望有一个安全工具能在应用程序的所有内部流程方面为他们提供准确的报告,而不是提供虚假报告。
虽然 DAST 返回低误报并不难,但很难定位到与漏洞相关的代码行。但 IAST 和 SAST 可以提供详细信息,例如带有漏洞的代码位置,以帮助安全和开发团队进行修复。
反馈不仅快速而且清晰,并且提供了可执行的操作(如漏洞类型、发现漏洞的代码行)。
QA 团队也可以从 IAST 识别安全漏洞的方式中受益,因为反馈结果是清晰的和可执行的。安全专家也可以借助这一工具而省去查找漏洞位置的时间和精力。
IAST 工具类型
SAST/IAST 工具 (被动型 IAST)
这类工具保留了静态分析的最大弊端:缺乏对第三方组件的关注。因此,如果使用一个被动式 IAST 解决方案,必须使用另一个工具——软件成分分析(SCA),或者全然信任第三方组件,后者显然是不现实的。
被动式 IAST 工具另一个缺点是它们只能在被单元测试或第三方爬虫激活的功能中发现漏洞。这意味着,这类工具不能保证整个应用程序都被检测,这可能导致很多漏洞被遗漏。
作为 SAST 产品的扩展而开发的 IAST 工具仍然是被动式扫描程序,它不会进行任何攻击或主动抓取。与纯粹的 SAST 工具相比,它无疑是一种改进,但并不能满足对 Web 漏洞扫描程序的需求。
不过,动态分析工具是在运行的应用程序上实时工作,所以它们无法直接访问源代码。但它们可以访问编译器和解释器。假如使用的编程语言是 PHP,一个主动型 IAST 工具可以直接定位到导致漏洞的具体代码行。如果是预编译的语言,它可以在字节码中准确定位问题,从而加快在应用程序代码中发现问题的速度。
总而言之,不能指望带有 IAST agent 的 DAST 解决方案完全取代专门的源代码扫描程序,但它引入了 SAST 的一些优势,甚至提升了动态测试的效率。
IAST 在软件开发周期中的重要性
就其性质而言,SAST 工具是作为 CI 的一部分来使用的。DAST 工具经常被误认为不适合自动化,但实际上,领先的 DAST 解决方案被许多企业成功地用于 CI/CD 流水线中。尽管在软件开发周期中引入 IAST agent 会变得更复杂,但这一切是值得的。
被动型 IAST 和主动型 IAST 都同样适用于 SDLC。然而,被动型 IAST 安全测试的误报率更高,更依赖测试团队的技术水平(需要单元测试来执行爬虫的功能),并且不会检测开发中使用的第三方元素。另一方面,检测更彻底的主动型 IAST 可能需要更多的计算资源。
IAST 需要一个成熟的测试环境、现代软件开发环境以及标准的架构,以获得最佳性能。
IAST 常见使用阶段
IAST 在 SDLC 的所有阶段都非常有用,我们将介绍其中3个较为常见的用例。
因此,有了这个工具,即使在生产环境中你也能保证应用程序的安全,因为它为你提供关于补丁的信息,以优先修复非常严重的问题,并帮助监控整个系统的稳定性。
总 结
交互式应用安全测试(IAST)是近几年来的新型技术,它仍然在寻找自己的立足点以被安全和开发者社区接受。每一种测试技术都有其独特的优势,有时使用其中一种而舍弃另一种可能并不完全正确。因此,如果您的团队有足够的预算,十分建议您同时使用 SAST、DAST 和 IAST,因为它们能检测出99.9%的漏洞。