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

开发者在开发代码的过程中,都会担心代码、依赖、项目打包成的镜像是否存在安全问题。而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扫描输出结果

公司通常都有相关工具和流程制度来进行代码审计、渗透测试,但是在开发的过程中也可以使用这些开源的安全工具进行自检,发现代码、依赖、配置、镜像里的各类安全问题,并及时进行修复。避免安全问题累积到较后阶段才暴露,提高项目的效率和整体安全性。
参考文献
[1] 5 Open Source Security Tools All Developers Should Know About
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author