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 ``` ## 故事
开发此工具的原因 一位招聘人员在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 提交报告。 没有现有工具能检测到这一点。所以我开发了一个。
## 差距 大多数安全工具专注于依赖项和已知恶意软件签名。 没有人扫描: - `.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' ``` ## 示例输出 ![repo-guard 扫描示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/a563c02e29112441.jpg) ## 架构 检测完全是确定性的——评分信号、正则表达式模式和 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
标签:AMSI绕过, APT攻击防护, GitHub安全扫描, git钩子检测, IOC扫描, Lazarus集团, Python, VS Code安全, 仓库审计, 代码安全, 信任信号检查, 威胁检测, 开发者安全, 招聘骗局防护, 无后门, 漏洞枚举, 网络安全, 自动执行防护, 逆向工具, 配置扫描, 隐私保护