WBChain3/repo-guard
GitHub: WBChain3/repo-guard
一个预扫描GitHub仓库中恶意VS Code任务、git钩子和入侵指标的安全工具,用于防范APL定向攻击。
Stars: 5 | Forks: 0
# repo-guard
**GitHub 仓库预克隆安全扫描器。**
在一个我被朝鲜APT组织招募诈骗盯上的夜晚构建而成。
## 快速开始
```
pip install repo-guard
# 扫描公共仓库
repo-guard scan https://github.com/owner/repo
# 使用 GitHub 令牌以获得更高频率限制或访问私有仓库
repo-guard scan https://github.com/owner/repo --token ghp_xxxx
# 机器可读的 JSON 输出
repo-guard scan https://github.com/owner/repo --json
```
## 故事
## 差距
大多数安全工具专注于依赖项和已知恶意软件签名。
没有人扫描:
- `.vscode/tasks.json` 中的自动执行配置
- `.githooks/` 中隐藏的有效载荷传递
- 仓库元数据的信任信号(账户年龄、被暂停的贡献者、
强制推送历史)
这些正是开发者定向APT攻击活动使用的确切攻击向量。
`repo-guard` 填补了这一空白。它不是 Snyk、Socket.dev
或 npm audit 的替代品——那些在克隆后运行。这个在克隆前运行。
## 工作原理
repo-guard 通过 GitHub API 获取仓库元数据 **无需克隆**。
它运行四个独立模块并生成颜色编码的风险报告。
| 模块 | 检测内容 |
|--------|----------------|
| **信任评分** | 账户/仓库元数据启发式 — 年龄、关注者、贡献者、强制推送指标 |
| **钩子扫描器** | `.githooks/` 中的恶意 git 钩子 — 执行模式、base64 有效载荷、注释与代码比例 |
| **VS Code 扫描器** | `.vscode/tasks.json` 和 `.vscode/settings.json` 中的自动执行配置 — `runOn: folderOpen`, `allowAutomaticTasks` |
| **IOC 提取器** | 入侵指标 — URL、域名、以太坊地址、IP、base64 有效载荷 — 可选 VirusTotal 增强 |
## 用法
Usage: repo-guard scan [OPTIONS] GITHUB_URL
扫描 GitHub 仓库的安全风险而无需克隆。
Options:
--token TEXT GitHub 个人访问令牌(或设置 REPO_GUARD_TOKEN)。
--vt-key TEXT 用于 IOC 增强的 VirusTotal API 密钥(或设置 REPO_GUARD_VT_KEY)。
--json 以 JSON 格式输出结果。
--preview 在终端中预览可疑文件内容。
--recruiter TEXT 招聘人员上下文:LinkedIn URL 或消息文本。
--help 显示此消息并退出。
### 示例
```
# 使用招聘者上下文进行扫描
repo-guard scan https://github.com/owner/repo --recruiter "linkedin.com/in/recruiter"
# 无需下载即可预览标记文件
repo-guard scan https://github.com/owner/repo --preview
# 使用 VirusTotal 数据增强
repo-guard scan https://github.com/owner/repo --vt-key vt_xxxx
# 将 JSON 通过管道传输至 jq
repo-guard scan https://github.com/owner/repo --json | jq '.modules[].severity'
```
## 示例输出

## 架构
检测完全是确定性的——评分信号、正则表达式模式和 API 查询。
没有任何仓库内容被发送到外部 AI API。
默认仅限公共仓库。私有仓库扫描需要
GitHub 个人访问令牌(`--token`)。
## 限制
- 不能替代完整的安全审计
- 没有 `--token` 仅限公共仓库
- VirusTotal 免费层:每天500次查询
- `--preview` 和 `--recruiter` 标志已搭建框架,完整实现
将在 v0.2.0 版本中提供
## 要求
- Python 3.10+
- `requests`, `rich`, `click`(自动安装)
## 开发
```
git clone https://github.com/WBChain3/repo-guard
cd repo-guard
pip install -e ".[dev]"
# 运行测试
pytest
# 在覆盖率模式下运行
pytest --cov=repo_guard
```
所有测试使用模拟的 HTTP 和磁盘上的固定装置。没有实时 API 调用。
## 项目结构
```
repo_guard/
├── repo_guard/
│ ├── cli.py
│ ├── github_client.py
│ ├── models.py
│ ├── reporter.py
│ └── modules/
│ ├── trust_score.py
│ ├── hook_scanner.py
│ ├── vscode_scanner.py
│ └── ioc_extractor.py
├── tests/
│ ├── fixtures/
│ │ ├── flexpay_mock/
│ │ └── clean_repo/
│ ├── conftest.py
│ └── test_*.py
├── ARCHITECT_DECISIONS.md
├── IOC_FEED.md
└── pyproject.toml
```
## 已报告的IOC
参见 [IOC_FEED.md](IOC_FEED.md) 了解真实扫描的发现。
欢迎社区提交IOC - 请打开问题或PR。
## 许可证
MIT
开发此工具的原因
一位招聘人员在LinkedIn上联系我——虚假身份,不可能的职业经历, 声称是一家真实加密初创公司的首席执行官。提供了一份有偿顾问职位,并邀请我 审查一个GitHub仓库作为第一步。这是标准剧本。 在运行任何代码之前,我手动检查了代码。我发现: - `.vscode/tasks.json` 配置为在 VS Code 中打开项目时 静默执行代码——没有提示,没有警告 - `.githooks/post-checkout` 下载并执行来自外部服务器的远程载荷, 在 Mac、Linux 和 Windows 上同时运行,所有输出 被隐藏在40行欺骗性注释后面 - 通过 .env.local README 说明进行私钥社会工程, 作为恶意软件传递失败或被发现时的备用攻击向量 该活动与记录在案的针对 Web3 开发者的朝鲜 Lazarus Group / Contagious Interview 招聘骗局一致。已向 FBI IC3、RCMP、Vercel、GitHub、LinkedIn 和 Basescan 提交报告。 没有现有工具能检测到这一点。所以我开发了一个。标签:AMSI绕过, APT攻击防护, GitHub安全扫描, git钩子检测, IOC扫描, Lazarus集团, Python, VS Code安全, 仓库审计, 代码安全, 信任信号检查, 威胁检测, 开发者安全, 招聘骗局防护, 无后门, 漏洞枚举, 网络安全, 自动执行防护, 逆向工具, 配置扫描, 隐私保护