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开发工具

MIT 许可证

9KB
90

JAZ - Git 仓库秘密扫描

博客文章:https://blog.jonaylor.xyz/discover-hidden-secrets-in-git-repos-with-rust

简介

随着开源软件的重要性日益增加以及像GitHub这样的公共代码仓库使用越来越频繁,防止意外提交秘密变得越来越重要。虽然删除密钥文件或从配置文件中移除oauth令牌似乎很容易,但关于git的一个苦乐参半的事实是它会保留这些秘密的历史记录。通过搜索git提交日志,攻击者可以找到并利用应用程序的秘密。本项目旨在创建一种自动查找git提交历史中隐藏的秘密的方法。

秘密扫描

目前我们正在根据常见的正则表达式模式扫描以下秘密。一旦开发了识别它们的正则表达式模式,就可以轻松添加更多。

  1. Slack Token
  2. RSA 私钥
  3. (OPENSSH) 私钥
  4. SSH (DSA) 私钥
  5. SSH (EC) 私钥
  6. PGP 私钥块
  7. Facebook Oauth
  8. Twitter Oauth
  9. GitHub
  10. Google Oauth
  11. AWS API密钥
  12. Heroku API密钥
  13. 通用秘密
  14. 通用API密钥
  15. Slack Webhook
  16. Google (GCP) 服务帐户
  17. Twilio API密钥
  18. 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-repodijininja/leakyrepo等类似的东西。一般来说,JAZ找到了所有或大部分的秘密。在dijininja/leakyrepo的情况下,我们发现了很多RSA私钥,这是可以接受的,但从技术上讲是一个误识别。对于Plazmaz/leaky-repo,我们找到了大部分的密钥,尽管我们又误识别了一些。

依赖项

约12MB
约291K SLoC