Pravatta/github-secret-scanner
GitHub: Pravatta/github-secret-scanner
一款用于扫描 GitHub 公开仓库中泄露凭证的安全研究工具。
Stars: 1 | Forks: 0
# 🔍 GitHub 密钥扫描器
一款安全研究工具,用于扫描 GitHub **公开**仓库中意外泄露的凭证和密钥。
## 检测范围
| 类型 | 严重性 |
|------|-----------|
| AWS Access Key / Secret Key | 🔴 严重 |
| GitHub 个人访问令牌 | 🔴 严重 |
| Stripe 密钥 | 🔴 严重 |
| Firebase 服务账户 | 🔴 严重 |
| RSA/EC 私钥 | 🔴 严重 |
| Slack Bot/用户令牌 | 🔴 严重 |
| OpenAI / Claude API 密钥 | 🟠 高危 |
| Google API 密钥 | 🟠 高危 |
| 数据库连接字符串 | 🟠 高危 |
| NPM / Docker 令牌 | 🟠 高危 |
| 硬编码的 JWT 密钥 | 🟠 高危 |
| 代码中的通用密码 | 🟡 中危 |
| 通用 API 密钥 | 🟡 中危 |
## 安装说明
```
pip install requests
```
## 使用方法
```
# 基础(无 token——速率限制每分钟 10 次请求)
python run.py
# 使用 GitHub token(推荐——速率限制每小时 5000 次请求)
python run.py --token ghp_SEU_TOKEN
# 扫描更多文件
python run.py --token ghp_SEU_TOKEN --max 500 --queries 20
# 自动生成 LinkedIn 帖子
python run.py --token ghp_SEU_TOKEN --linkedin
# 自定义输出
python run.py --token ghp_SEU_TOKEN --output meu_relatorio
```
## 输出结果
- `report.html` — 可视化仪表板,包含所有发现项
- `report.json` — 用于分析的结构化数据
- `report_linkedin.txt` — 可直接发布到 LinkedIn 的文本
## 工作原理
1. 使用 GitHub Code Search API 和特定查询条件
2. 下载找到的每个文件内容
3. 对每个文件应用 27 种正则表达式模式
4. 按严重性分级(严重 / 高危 / 中危 / 低危)
5. 映射到 MITRE ATT&CK 框架
6. 生成可视化 HTML 报告和 JSON 数据
## 为何会发生这种情况?
- 开发人员意外提交了 `.env` 文件
- 生成式 AI(如 ChatGPT、Copilot)生成的代码包含占位符凭证,后来被替换为真实凭证
- `.gitignore` 文件未正确配置
- 项目时间压力 → "能跑就行,先提交"
## 如何保护您的项目
```
# 1. 安装 git-secrets
git secrets --install
git secrets --register-aws
# 2. 使用环境变量
pip install python-dotenv
# 3. 公开前检查历史记录
git log --all --full-history -- "**/*.env"
# 4. 启用 GitHub Secret Scanning(公共仓库免费)
# 设置 → 安全 → Secret scanning → 启用
```
## 项目结构
```
github-secret-scanner/
├── run.py # CLI principal
├── scanner.py # Core: GitHub API + busca
├── patterns.py # 27 patterns de detecção
├── report.py # Geração de HTML/JSON/LinkedIn
└── README.md
```
标签:API密钥泄露, DevSecOps, GitHub API, GitHub安全扫描, MITRE ATT&CK映射, Python安全工具, StruQ, 上游代理, 代码安全, 代码泄露检测, 凭证泄露, 安全报告生成, 正则表达式匹配, 漏洞枚举, 秘密检测, 网络安全, 逆向工具, 隐私保护, 默认DNS解析器