社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

从攻击视角看代码隐私安全,9款 Git秘密扫描工具盘点

安全牛 • 4 年前 • 745 次点击  

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/


相关阅读

GitHub删除概念验证漏洞利用代码引发争议



合作电话:18311333376
合作微信:aqniu001
投稿邮箱:editor@aqniu.com





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130596