​洞见RSA 2023:所有开发者都应该知道的5个开源安全工具
发布日期:2023-05-18      作者:       来源:      分享:

洞见RSA 2023:所有开发者都应该知道的5个开源安全工具

阅读 1

开发者在开发代码的过程中,都会担心代码、依赖、项目打包成的镜像是否存在安全问题。而 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    版权所有:北京软件和信息服务业协会

技术支持:中科服    内容支持:鑫网安

你知道你的Internet Explorer是过时了吗?

为了得到我们网站最好的体验效果,我们建议您升级到最新版本的Internet Explorer或选择另一个web浏览器.一个列表最流行的web浏览器在下面可以找到.