绿盟科技研究通讯发布于 2023-05-18 09:24:19
开发者在开发代码的过程中,都会担心代码、依赖、项目打包成的镜像是否存在安全问题。而 RSAC 2023 议题《5 Open Source Security Tools All Developers Should Know About》,则推荐了 5 个开源的安全工具,覆盖代码扫描、依赖检查、基础设施扫描、容器扫描、运行时扫描 5 个方面。
在评估每种类别的安全工具时,列出了该类别下安全工具的候选集合,并综合多方面因素,最终评定出该类别下最优的安全工具。
在评估安全工具时,主要是从以下几方面进行综合裁决:
结果质量:开发视角下的结果准确度
易用性:可以命令行使用也可以与各类 IDE 整合,速度快,结果易理解
成熟度:社区支持情况、bug 修复情况、证书情况
可扩展:工具容易被扩展,以适用于开发者
每个类别推荐的工具如下:
表 1 每种类别推荐的开源工具
代码扫描
代码扫描,主要就是用于发现代码中存在的脆弱性问题。通常包括:
OWASP 十大安全风险
CWE 25 个最常见漏洞
机密信息
自定义规则(例如身份认证 / 授权信息等)
最终从如下候选工具集中,选出了 Semgrep。
图 1 代码扫描工具候选集
Semgrep 的规则整合了很多的安全工具(如 Gitleaks,Findsecbugs, Gosec 等),而且还支持超过 30 种语言。从易用性方面看,它是无需编译的,而且可以运行在任何环境上(命令行、Docker、IDE)。也是很容易扩展的,只需要编写规则就可以。Semgrep 有一个比较大的社区,贡献者也比较活跃。
图 2 Semgrep 支持的语言列表
如下图所示,便是用 Semgrep 来扫描代码,可以看到它的结果里显示 src/test.php 存在 eval ($arg) 这行代码,而这行代码存在命令注入漏洞:
图 3 Semgrep 扫描结果
依赖检查
依赖检查主要就是用于发现项目代码所依赖的具有漏洞的组件。主要步骤是,首先识别软件所使用的开源组件,然后与已知漏洞的数据库进行比较,从而检查出这些依赖是否存在任何公开披露的漏洞。这被称为 SCA,即软件组合分析(Software Composition Analysis)。
最终从如下工具集中,选出了 OSV-Scanner。
图 4 依赖检查工具候选集
OSV-Scanner 使用的是 Google 维护的 OSV 数据库(开源漏洞库),支持 13 种语言,可以扫描指定的 SBOM 和 lockfile 文件。OSV-Scanner 的受欢迎程度和社区支持度处于增长阶段:
图 5 OSV-Scanner 随时间变化打星的趋势图
如下图所示,即为使用 osv-scanner 扫描 npm lockfile。它扫描了 1531 个软件包,并发现了一些安全问题。每个问题都有一个 OSV URL(安全漏洞的 ID)来提供有关漏洞的更多信息,同时还列出了与每个漏洞相关的软件包名称、版本号。
图 6 使用 osv-scanner 扫描 npm lockfile 的输出
基础设施扫描
基础设施扫描,即将基础设施的配置和管理作为代码来处理,主要任务是在代码提交到云端之前检测出安全配置错误。这些错误可能包括:
缺少加密
宽泛的权限设置
缺少日志记录
默认设置
最终从如下工具集中,选出了 KICS。
图 7 基础设施扫描工具候选集
KICS 支持 18 种框架,并提供了 200 多种内置的修复方案,可以在任何地方运行(IDE 插件、本地)。
如下图所示,是用 Terraform 创建了一个 EBS 卷:
图 8 使用 Terraform 创建 EBS 卷
而 KICS 则可以扫描出其中存在的 2 个中危漏洞,一个是 IAM Access Analyzer 未定义,而另一个是 EBS 卷未启用加密。
图 9 KICS 扫描结果
容器扫描
容器扫描的主要就是检测容器镜像中的漏洞和配置问题。最终从如下工具集中,选出了 Trivy。
图 10 容器扫描工具候选集
Trivy 支持扫描容器镜像、文件系统、git 存储库、虚拟机等,还可以生成 SBOM。如下图,展示了利用 Trivy 扫描 wordpress 镜像发现的漏洞情况,总共发现了 3 个漏洞,分别为 CVE-2021-33574、CVE-2022-23218、CVE-2022-23219。
图 11 Trivy 扫描 wordpress 镜像结果
运行时扫描
运行时扫描,即在 Web 应用或者 API 运行时发现脆弱性问题。运行时扫描通常使用动态应用程序安全性测试(DAST)技术,模拟攻击并检测应用程序或 API 的漏洞。最终从如下工具集中,选出了 ZAP。
图 12 运行时扫描工具候选集
ZAP 可以检测 OWASP Top 10 风险,同时还包括 250 多个精选规则。同时 ZAP 也是 Github 排名前 1000 的项目之一,非常受欢迎,并拥有庞大的社区。如下图所示,即 ZAP 检测到了一个 XSS 漏洞,并给出了漏洞的描述、风险等级和可能的解决方案。此外,输出还包括有关漏洞的详细信息,例如漏洞发现的位置、参数、以及可以触发漏洞参数值。这些信息可以帮助开发人员更好地理解和修复漏洞。最后,输出中还包括了参考链接,这些链接提供了有关漏洞的更多信息。
图 13 ZAP 扫描输出结果
公司通常都有相关工具和流程制度来进行代码审计、渗透测试,但是在开发的过程中也可以使用这些开源的安全工具进行自检,发现代码、依赖、配置、镜像里的各类安全问题,并及时进行修复。避免安全问题累积到较后阶段才暴露,提高项目的效率和整体安全性。
通讯地址:北京市海淀区海淀南路甲21号中关村知识产权大厦A座2层206、207室 邮政编码:100080
电话:010-62565314 刘莉 京ICP证16064523号-2 版权所有:北京软件和信息服务业协会
技术支持:中科服 内容支持:鑫网安