从攻击视角看代码隐私安全,9款 Git秘密扫描工具盘点
作者: 日期:2022年04月06日 阅:4,415

Git是一个开源的分布式软件版本控制系统,用于敏捷高效地处理任何或小或大的系统开发项目。Git 存储库看上去就是一个文件夹,不过,在这个文件夹中不仅仅保存了所有应用系统的当前版本,也同时保存了所有的历史记录。Git存储库的开放性和便利性使其经常面临人为错误的影响,企业每天在公共Git存储库上泄露数以千计的重要代码信息,包括数据库密码、邮箱账号、管理URL等隐私信息等,造成了巨大损失。随着人们对这个问题的认识不断加深,一些新的安全工具和技术也不断涌现,以在整个软件开发生命周期(SDLC)中提供针对性的安全保护。

什么是Git秘密扫描(secret scanning)?

代码隐私信息泄露的危害性不容忽视。无论是错误放置的密钥,或是意外泄露的数据库密码都可能会转化为即时危机,带来沉重的经济损失。Git秘密扫描是从攻击者的角度出发,提前对需要上传至Git存储库的代码数据进行扫描或周期性的扫描,防止敏感信息泄露,并及时删除暴露的信息。Git秘密扫描有两种模式,每种模式都涵盖“持续集成”(Continuous Integration,简称CI)/“持续交付”(Continuous Delivery,简称CD)管道的不同阶段。

•  第一种模式侧重于预防

第一种模式试图从一开始就防止秘密泄露,这种Git秘密扫描模式通过集成到CI/CD管道中并实时监控开发人员的操作,拦截包含秘密的意外代码提交,阻止其公开暴露。

•  第二种模式侧重于及时检测

第二种模式则尝试检测可能已经暴露的秘密。恶意行为者一直在使用Git扫描技术,试图从公共和配置错误的Git存储库中提取秘密,并将其用于恶意活动中。如果没有像恶意攻击者所用的这般强大的扫描工具,企业可能根本不知道自己的秘密已被泄露。此外,还需要注意的是,秘密检测是一个不断发展的过程,必须定期更新。

Top 9秘密扫描解决方案

没人愿意沦为Git秘密泄露的受害者,以下列举了9款Git秘密扫描解决方案,帮助企业在软件开发生命周期(SDLC)的早期引入安全性,目标是让参与SDLC的每个人来开发更安全的应用程序。

1. gitLeaks

gitLeaks是在MIT许可下发布的开源静态分析命令行工具,主要用于检测本地和GitHub存储库(私有和公共)中的硬编码秘密,如密码、API密钥和令牌。

gitLeaks利用正则表达式(Regular expressions)和熵字符串编码(entropy string coding),根据自定义规则检测秘密,并以JSON、SARIF或CSV格式导出报告。

优点:gitLeaks是一个开源项目,由50多位贡献者积极开发所得,可免费使用。值得一提的是,gitLeaks还包含大多数开源项目中没有的集成、审计和克隆功能。

缺点:由于缺乏用户界面且只有有限的集成选项,gitLeaks比较适合安全专业人士、研究人员或专业开发项目。

2. SpectralOps

Spectral是较全面的秘密扫描解决方案,涵盖从集成到构建过程的各个方面。无论是静态构建、预提交到Git还是CI集成,Spectral都能提供简单的集成选项。

有趣的是Spectral能够扫描Git存储库,不仅可以扫描代码中的配置问题和秘密,还可以扫描代码库中的日志、二进制文件和其他容易忽略的潜在泄漏源。

优点:Spectral使用直观的用户界面,使其更易于访问并适合企业管理。Spectral秘密扫描技术所运用的AI和机器学习算法,可确保随着系统处理数据量的不断增加,检测率也能不断提高,并不断降低误报率。

缺点:Spectral不太适合小型项目或单个开发人员,它专为在大型代码库上进行协作的开发团队而设计。

3. Git-Secrets

Git-secrets是一种开发安全工具,可防止用户在Git存储库中包含机密和其他敏感信息。它会扫描提交代码和说明,当与用户预先配置的禁止表达式模式匹配,就会阻止提交。

优点:Git-Secrets可以集成到CI/CD管道中以实时监控提交信息。

缺点:Git-secrets使用相当简单的检测算法,主要为“正则表达式”(regular expression),这通常会导致许多误报。而且,该项目不再定期维护,可能不适合在专业开发环境中使用。

4. Whispers

Whispers是一种开源静态代码分析工具,旨在搜索硬编码凭据和危险函数。它可以作为命令行工具运行或集成到CI/CD管道中。该工具旨在解析结构化文本,例如YAML、JSON、XML、npmrc、.pypirc、.htpasswd、.properties、pip.conf、conf/ini、Dockerfile、Shell脚本和Python3以及声明指定的Javascript、Java、GO、PHP格式。

优点:Whispers开箱即用,支持多种秘密检测格式,包括密码、AWS密钥、API令牌、敏感文件、危险函数等。此外,Whispers还包括一个插件系统,可用于将其扫描功能进一步扩展到新的文件格式。

缺点:Whispers旨在配合其他秘密扫描解决方案,不对实际代码执行深度扫描,其扫描规则也只是基于正则表达式、Base64和Ascii检测的有限组合。

5. GitHub秘密扫描(Secret scanning)

当使用GitHub作为企业的公共存储库时,GitHub会提供自己的集成秘密扫描解决方案,以检测流行的API密钥和令牌结构。如果想要扫描私有存储库,企业需要获得高级安全许可证。用户可以通过提供“正则表达式”公式来扩展检测算法,以检测自定义秘密字符串结构。

优点:使用GitHub可以更轻松地进行可视化扫描、配置和集成。该服务包含对许多网络流行服务广泛API密钥和令牌字符串结构的支持,为任何安全评估提供坚实的基础。

缺点:目前,针对私有存储库的秘密扫描正处于测试阶段。整个服务的关注点非常狭窄,主要针对已知的字符串结构,例如API密钥和令牌,而忽略其他秘密,例如数据库密码、电子邮件地址、管理URL等。

6. Gittyleaks

Gittyleaks是一个简单的Git秘密扫描命令行工具,能够扫描和克隆存储库。它试图发现不应包含在代码或配置文件中的用户名、密码和电子邮件。

优点:Gittyleaks是一款简单的工具,可用于快速扫描存储库以查找明显的秘密。它比较简洁,不需要其他解决方案那样进行更复杂的配置。

缺点:鉴于其简单性和固定规则,Gittyleaks最适合作为介绍性工具,以帮助用户了解代码中的秘密。但是,它缺乏商业开发团队所需的强大功能和灵活性。

7. Scan

Scan是一个全面的开源安全审计工具。它可以与Azure、BitBucket、GitHub、GitLab、Jenkins、TeamCity等流行存储库和管道集成。此外,Scan还支持广泛的流行框架和语言,能够集成到CI/CD管道中以提供实时保护,并提供广泛的报告功能。

优点:由于其良好的开源性质,Scan可能是企业可以免费获得的最强大、最灵活的DevSecOps工具之一。

缺点:虽然Scan确实强大且灵活,但其并不友好的用户界面和复杂设置,使得只有少数安全专家才能真正使用Scan并从中受益。

8. Git-all-secrets

Git-all-secrets是一个开源的秘密扫描器集成项目。该工具目前依赖于两个开源秘密扫描项目,即truffleHog和repo-supervisor——这两个项目使用“正则表达式”和高熵(high entropy)算法进行秘密检测。Git-all-secrets汇总了两个扫描器的组合结果,以呈现更全面的视图。

优点:Git-all-secrets引入了一个有趣的概念,它试图通过不依赖单一算法的方式来增强秘密扫描结果。

缺点:虽然使用了一种新颖的方法,但Git-all-secrets底层扫描仍然依赖于基本算法,并且目前已经没有人再积极维护该项目了。该工具提供了更多的概念验证(proof-of-concept,PoC),将来可能会被其他项目利用。

9. Detect-secrets

Detect-secrets是一个积极维护的开源项目,专为企业客户设计。它的创建初衷是防止新的秘密进入代码库,检测预防措施是否存在缺陷,并提供一份秘密清单以在安全存储中进行维护。Detect-secrets的工作原理是定期比较“正则表达式”语句,以识别可能已提交的新秘密。

优点:Detect-secrets的扫描方法避免了扫描整个git历史文件,以及每次都需要扫描整个存储库的繁复任务。而且,它的插件支持也非常好,目前有18个不同的插件可用,涵盖AWS密钥、熵字符串、Base64编码、Azure密钥等等。

缺点:如果秘密被分成多行或不包含足够的熵,则Detect-secrets可能无法实时检测到它们。

小结

很明显,积极扫描Git存储库和开发人员提交文件以防止机密泄露,应该成为每个公司软件开发管道的强制性部分。每天,都会上演恶意行为者窃取个人身份信息和私人知识产权的戏码。而这些通常是由于缺乏代码安全实践或仅仅由于人为错误造成。企业用户可以通过使用直接集成到CI/CD管道中的秘密扫描技术,对与这些项目相关的Git存储库进行主动秘密扫描来缓解其中的许多问题。

原文链接:

https://blog.checkpoint.com/2022/03/18/top-9-git-secret-scanning-tools-for-devsecops/


相关文章