4 个版本
0.0.4 | 2023年2月4日 |
---|---|
0.0.3 | 2022年1月26日 |
0.0.2 | 2019年11月27日 |
0.0.1 | 2019年11月27日 |
#1973 在 开发工具
9KB
90 行
JAZ - Git 仓库秘密扫描
博客文章:https://blog.jonaylor.xyz/discover-hidden-secrets-in-git-repos-with-rust
简介
随着开源软件的重要性日益增加以及像GitHub这样的公共代码仓库使用越来越频繁,防止意外提交秘密变得越来越重要。虽然删除密钥文件或从配置文件中移除oauth令牌似乎很容易,但关于git的一个苦乐参半的事实是它会保留这些秘密的历史记录。通过搜索git提交日志,攻击者可以找到并利用应用程序的秘密。本项目旨在创建一种自动查找git提交历史中隐藏的秘密的方法。
秘密扫描
目前我们正在根据常见的正则表达式模式扫描以下秘密。一旦开发了识别它们的正则表达式模式,就可以轻松添加更多。
- Slack Token
- RSA 私钥
- (OPENSSH) 私钥
- SSH (DSA) 私钥
- SSH (EC) 私钥
- PGP 私钥块
- Facebook Oauth
- Twitter Oauth
- GitHub
- Google Oauth
- AWS API密钥
- Heroku API密钥
- 通用秘密
- 通用API密钥
- Slack Webhook
- Google (GCP) 服务帐户
- Twilio API密钥
- URL中的密码
设计
在每个对象数据库中包含的对象中,我们通过数组提供的常见密钥的正则表达式模式进行扫描。如果找到任何秘密,脚本将简单地将秘密类型打印到控制台并提供对象ID。
改进
以下是一些将来可以添加的改进列表。总的来说,它们会使JAZ更好或更易于使用。
- 线程池
- 基于配置文件扫描
- 远程扫描
- 更好的CI/CD
- 自动GitHub仓库扫描
安装
从源码安装
~$ cargo build
默认情况下,这将构建在调试模式下的目标目录,如果项目使用cargo build --release
构建,则构建在发布模式下。
架构
~$ yay -S jaz
MacOS
~$ brew install jaz
Cargo
~$ cargo install jaz
执行
~$ ./jaz /path/to/repo
结果
我们扫描了常见的测试代码库,例如Plazmaz/leaky-repo和dijininja/leakyrepo等类似的东西。一般来说,JAZ找到了所有或大部分的秘密。在dijininja/leakyrepo的情况下,我们发现了很多RSA私钥,这是可以接受的,但从技术上讲是一个误识别。对于Plazmaz/leaky-repo,我们找到了大部分的密钥,尽管我们又误识别了一些。
依赖项
约12MB
约291K SLoC