作者:新思科技软件质量与安全部门技术布道师Tim Mackey
当今世界,软件与我们的联系越来越密切。软件给我们带来便利的同时也使我们面临软件安全问题,如果软件出现质量和安全问题,那么造成的风险影响就会越来越大。因此,选择智能全面的软件安全解决方案来提高软件质量和安全性至关重要。
交互式应用安全测试(IAST)和软件组件分析(SCA)是应用程序安全测试中两款强大、但相对来说比较新的技术。使用动态测试(即运行时测试)技术可以发现正在运行的Web应用的漏洞。IAST解决方案旨在帮助企业识别和管理与这些漏洞有关的安全风险。
SCA是市场分析师创造的一个术语,描述了自动识别代码库中开源组件的过程。一旦识别出组件,就可以对比已知的安全问题,判断组件是否存在这些隐患,了解在一个应用里面是否存在组件的不同版本。另外,SCA还可以帮助识别组件的年份,确定是否需要维护。除了安全方面的问题,SCA还可以发现开源代码中的许可证合规性问题。
IAST和SCA结合的必要性
根据2018年Verizon数据泄露调查报告,Web应用程序攻击仍然是数据泄露最常见的载体。Web应用程序是黑客试图访问敏感IP/数据和个人数据(比如用户名和密码、信用卡账号和患者信息)的首选攻击界面。企业需要确保他们开发的web应用程序是安全的,最好是在投产之前就已经确保安全性,并且当关键漏洞被发现时,开发者可以快速将其修复。
Web应用程序很少仅由专有代码组成。事实上,相反来说,开源代码组件在商业和内部应用程序中无处不在。新思科技开源研究和创新中心发布的2018年开源安全和风险分析报告(OSSRA)显示在1,100个被扫描的应用程序中有96%存在开源组件,每个应用程序中平均有257个组件。因为企业通常不知道他们使用多少甚至使用什么开源组件,当开源组件的漏洞被发现时,他们可能不知不觉中已经成为攻击者的目标。OSSRA报告显示,78% 被检查的代码库中至少包含一个漏洞,每个代码库平均包含 64个漏洞。
虽然开发和安全团队经常使用静态应用安全测试工具(SAST)和软件组件分析解决方案(SCA)来识别web应用程序中的安全缺陷和漏洞,但只有通过动态测试才能检测正在运行的应用程序中的许多漏洞,从而推动了动态应用安全测试工具(DAST)的发展。尽管与传统的DAST和渗透测试工具有相似之处,IAST在软件开发生命周期(SDLC)早期发现漏洞的能力要优于前两者,在修复漏洞时更容易、更快速且成本更低。随着时间的推移,IAST很有可能会取代DAST。这有两方面的原因:第一,IAST在软件开发生命周期早期反馈漏洞信息并迅速提供补救指南方面具有强大优势;第二,它还可以更轻松地集成到CI/CD和DevOps工作流程中。
往软件开发生命周期左端推移
IAST通常用在软件开发生命周期的测试和质量保证(QA)阶段。采用IAST可以有效地将测试往软件开发生命周期左端推移,尽早发现问题并且降低补救成本,减少产品发布延迟。当重新编译更改的代码并重新测试正在运行的应用程序时,最新一代的IAST工具能即刻反馈结果。
IAST从应用程序内部进行分析,可以访问应用程序代码、运行时控制和数据流信息、内存和堆栈追踪信息、网络请求和响应、库、框架和其它组件(通过与SCA工具集成)。该分析不仅可以使开发人员查明已识别漏洞的来源,而且可以快速解决问题。
IAST工具需要具备哪些功能?
我们要依据哪些标准来挑选一款IAST工具?它可以执行应用程序代码审查。而且这些应用程序是以你现在使用的编程语言编写的;它还需要与软件使用的底层框架兼容;还有一点很重要,它必须可以轻松、快速地进行部署,并与CI/CD工作流程无缝集成;此外,我们希望IAST工具还可以与任何类型的测试方法兼容,包括 现有的自动化测试、手动QA/开发测试、自动网络爬虫、单元测试等等。
有效的IAST工具可以为DevOps团队提供识别安全漏洞的能力,并且可以告知该漏洞是否会被利用。现在任何IAST工具都应该包括web APIs,使DevOps能够将测试集成到持续集成构建中。这些构建过程会使用到Jenkins等持续集成工具。
随着软件中开源代码使用的普及,有效的IAST工具需要了解所测试的应用程序的开源组件。SCA工具负责分析开源组件。
了解在指定的应用程序中的开源漏洞是否会被利用,需要了解易受攻击的组件是否存在、漏洞的利用如何运作、以及应用程序如何利用该组件。只有高效的IAST和SCA工具组合才能有效识别该级别的软件风险并指导开发人员解决问题。集成的IAST和SCA解决方案可以帮助开发团队构建更安全的软件、最大限度地降低风险,同时最大限度的加快开发速度和产量,并且提高软件的质量。