从策略层面来讲,安全测试工具可以融入 DevOps 工作流之内,并从本质上构成一套 DevSecOps 模型,借此在提高生产效率的同时最大程度降低软件开发成本。此类工具使您可以在整个软件开发生命周期(SDLC)以及软件交付之后的运行及维护阶段内,对包括潜在漏洞在内的各类问题进行测试与修复。启用 DevSecOps 模型将确保开发人员拥有安全的开发与交付周期,而不致因“强行塞入安全性”而影响 SDLC 并拖累生产效率。
在之前的文章中:DevOps研发模式下CI/CD实践详解指南 ,介绍过作者对DevOps的一些理解,对DevOps还不是很了解的读者,可以看一下。
DevSecOps 范式本身一直在不断发展,而且随着独特安全工具的出现,组织现在已经可以对软件开发及交付内的不同阶段进行分别测试与保护。DevSecOps 安全工具通常被分为静态应用程序安全测试(SAST)与动态应用程序安全测试(DAST)两种基本思路。在今天的文章中,我们主要讨论最常用的安全工具及方法。静态应用程序安全测试(SAST)
SAST 模型提供包含多种形式的源代码分析、二进制分析以及白盒测试技术。乍看之下,SAST 工具似乎主要负责在代码被推送至生产环境之前,对应用程序的源代码进行安全漏洞检查。SAST 源代码分析主要关注静态代码中是否存在易受袭击的缺陷,例如竞争条件、输入验证、数字错误等。另一方面,二进制分析则强调对已构建及编译完成的代码进行缺陷测试。我们需要同时使用多种 SAST 工具,有些仅负责测试源代码、有些测试已编译代码,有些则同时对这两类代码做出测试。以下是几款知名度较高的 SAST 工具:
1、LGTM.com
LGTM 是一套开源代码平台,可通过变体分析检查代码中的常见漏洞与披露(CVE),同时支持几乎所有主要编程语言,包括 C/C++、Go、Java、JavaScript/TypeScript、C# 以及 Python 等。LGTM 首先使用 CodeQL 技术识别问题、解决问题,并扫描类似的代码模式以避免出现进一步威胁。凭借多种 repo 系统提供的开源项目,LGTM 得以高效执行自动代码审查,借此识别源代码中的公开内容。作为一套开源平台,LGTM 还充分运用安全专家的知识,即使用数据科学与语义代码搜索等技术编写出可检测现有及新代码漏洞查询的自动化方案。2、SonarQubeSonarQube 是最著名的静态代码分析工具之一,旨在清理并保护 DevOps 工作流及代码。通过对代码质量的持续分析,SonarQube 会定期检查以检测出 bug 及安全问题。SonarQube 宣称可以扫描使用 27 种编程语言编写的代码,包括 Java、Python、C#、C/C++、Swift、PHP、COBOL 以及 JavaScript 等,因此其非常适合拥有不同编程背景或者需要在多个平台上运行应用程序的团队。更重要的是,SonarQube 可以在 GitHub、Azure DevOps 忣 BitBucket 等 repo 中直接分析您的代码,并在代码审查期间提供即时反馈。SonarQube 社区版是开源自由软件,也被普遍视为入门级 CI/CD 安全 DevOps 的完美选项。另一方面,其开发者、企业以及数据中心版则更为复杂精妙,适用于规模更大的部署场景。3、ReshiftReshift 的核心目标是在不影响开发速度的前提下发现安全问题,这也使其成为推广 DevSecOps 模型的重要选项之一。Reshift 与集成开发环境(IDE)相融合,因此非常适合识别漏洞并实时加以修复。作为一大核心功能,Reshift 允许用户在代码审查、编译时以及持续集成的过程中不断保护应用程序安全。Reshift 被众多技术专家视为完美的轻量化 DevOps 安全测试解决方案,适用于中小型企业、以及希望将安全保障整合至软件开发生命周期当中的各类初创软件公司。4、Insider CLI
Inside 是根据 OWASP Top 10 设计的另一款开源 SAST 工具,用于简化各类编程语言的安全自动化流程,适用于.NET 框架、JavaScript(Node.js)、Java(Android 与 Maven)、Swift 以及 C# 等。Insider 源代码分析工具是一款社区驱动型方案,通过在源代码层级扫描漏洞以支持敏捷且高效的软件开发方法。
借助 Inside Application Security,您可以通过自由、集成的 GitHub 操作直接在 GitHub 目录上保护代码,让整个安全保障体系变得易于实施。
动态应用程序安全测试 (DAST)
DAST 工具也被称为黑盒测试或漏洞扫描工具。这些工具将从局外人的角度测试应用程序,而不仅限于其并不熟悉的源代码本体。DAST 工具会模拟袭击向量的行为,在运行时测试应用程序以发现潜在的安全漏洞。这些工具无需人工干预即可运行,因此建立起一整套自动化测试流程。DAST 工具能够适应的漏洞相当广泛,包括内存破坏、跨站点请求伪造、远程文件包含、缓冲区溢出以及拒绝服务等。下面,我们将一起了解几款重要的商业及开源 DAST 工具。
1、Crashtest SecurityCrashtestSecurity 是一款漏洞评估工具,具有高级爬网功能,可无缝集成至开发管道以检测应用程序内的漏洞。CrashtestSecurity 将行业标准的高级扫描功能与用户友好型界面相结合,供您轻松进行安全测试。Crashtest 还能够对基于 JavaScript 的应用程序进行单页分析以识别漏洞模式,并采用基于文档的应用程序编程接口(API)扫描建立起一套全面的安全平面。2、OWASP ZAP开源 Web 应用安全计划(OWASP)推出的 Zed Attack Proxy(ZAP)是一款免费的开源渗透测试工具,专门用于测试 Web 应用程序。ZAP 将充当“中间人”袭击载体,以模拟方式对测试者浏览器与网络应用程序之间的通信加以拦截。ZAP 可以被安装在所有主要操作系统以及 Docker 之上,用户亦可选用 ZAP 市场中的各类附加组件进一步增强安全测试功能。 3、NPM AuditNode Package Manager(NPM)Audit 平台提供庞大且不断增长的工具注册表,并在全球范围内托管着数量庞大的共享 JavaScript 软件包。凭借着对平台及各类软件包的广泛支持,如果大家希望保护由远程分布式团队支持的 DevOps 管道,那么最好的配套选项无疑就是 NPM。NPM CLI 可用于配置软件包、审查实时应用程序源代码,同时访问 repo 以改善功能。这套解决方案能够自动识别并管理依赖项中的冲突,帮助您实时修复安全漏洞。4、ArachniArachni 是一款基于 Ruby 框架的免费高性能测试工具。其发行版中包含多个可移植软件包,您可以立即进行部署以评估应用程序安全性。您可以根据需求将其部署为 Ruby 库、CLI 扫描器、WebUI 或者分布式系统。通过 REST API,Arachni 能够轻松与大多数现代平台相集成,借此提供丰富的漏洞分析检查功能,同时由此获得最高水平的弹性、准确性与可靠性支持。Arachni 可以扫描 NoSQL 注入、代码注入、XSS 以及文件包含变体等漏洞,并为基于 JavaScript 框架的 Web 应用程序提供其他跟踪优化。这一切,使得 Arachni 成为具有多种功能且高度自动化的分布式渗透测试平台。