marcos-saiz/ghvet
GitHub: marcos-saiz/ghvet
一个被动、零执行的 GitHub 供应链信任审查工具,用于在接受邀请或克隆 fork 前评估账号可信度、fork 完整性和文件安全性。
Stars: 0 | Forks: 0
# ghvet — GitHub fork 与邀请信任审查

-success)


**你收到了一封未经请求的 GitHub 组织邀请,或者你准备信任一个来自陌生人的 fork。这安全吗?** `ghvet` 可以通过几个被动命令来回答这个问题——在你点击*加入*之前,在你执行 `git clone` 之前,在你加载任何内容之前。
它故意*不*做另一个 GitHub 个人资料侦察工具——那个领域已经被很好地覆盖了(参见 [先前研究](#prior-art))。`ghvet` 填补了这些工具留下的空白:**针对供应链风险的信任审查** —— fork 完整性和安全 artifact 分流。
这个空白正是真实攻击发生的地方(参见 [为什么会有这个项目](#why-this-exists))。
## 它的功能
```
ghvet profile Quick account triage: age, social graph, empty-org
check, risk signals. (Triage, not deep recon.)
ghvet fork Fork integrity: resolve the upstream parent, compare
against it, and surface exactly what this fork ADDS
that upstream doesn't — the commits and files an
attacker would hide a payload in.
ghvet triage Safe static analysis of a committed artifact you've
quarantined: identify type, hash it, LIST archive
contents (never extracts), and scan text for risk
patterns (outbound calls, code-exec, base64, secrets,
install hooks). NEVER executes anything.
```
## 快速开始
```
# 无依赖 — 仅使用 Python 3.8+ 标准库。
curl -O https://raw.githubusercontent.com/marcos-saiz/ghvet/main/ghvet
chmod +x ghvet
./ghvet profile some-account
./ghvet fork some-user/some-repo
./ghvet triage ~/quarantine/suspicious.skill
```
未认证 API:每个 IP 每小时 60 次请求(适用于单个目标)。如需每小时 5000 次请求,请导出一个只读的 public-scope token —— `ghvet` 会自动识别它:
```
export GITHUB_TOKEN="..." # read-only, public data; never hard-code or commit it
```
## 设计原则
- **被动。** 读取 API 和列出归档不会通知目标。关注、标星和接受邀请则会——`ghvet` 绝不会做那些操作。
- **绝不执行。** `triage` 只负责列出和读取;它不会解压或运行。它也不会为你获取远程 artifact —— *由你*将文件下载到隔离区,从而确保人类参与到每次下载的流程中。
- **提供指标,而非结论。** 标记意味着*去查看这个*,而不是“这是恶意软件”。知名的 CDN 和仅本地存储是正常的;该工具会降低它们的权重,从而使*意外的*外部请求更加显眼。
- **单文件,零依赖。** 一个你可以从头到尾阅读并信任的脚本。
## 为什么会有这个项目
邀请或 fork 本身是无害的;风险在于你被诱导去运行后续的内容。这是一个活跃的、有据可查的攻击面:
- **XZ Utils 后门 (CVE-2024-3094)。** 一位贡献者花了约 2 年时间建立信任,然后将 payload 隐藏在提交给项目的**二进制测试文件**中——差一点就发布到了所有主流 Linux 发行版中。`ghvet fork` + `triage` 正是为这种形态构建的:由 fork 添加的不透明二进制大对象。
- **DPRK 针对安全研究员的行动 (Google TAG, 2021/2023)。** 国家级攻击者主动邀请研究员“合作”,然后提供了一个在构建时运行攻击者代码的项目。这就是 `ghvet profile` 进行分流的未经请求的邀请场景。
- **Apiiro 仓库混淆行动 (2024)。** 超过 10 万个仓库被克隆、感染,并被 **fork 了数千次**以显得合法。作为工业级攻击面的 fork 机制——这就是 `ghvet fork` 存在的理由。
请参阅 [`docs/threat-model.md`](docs/threat-model.md) 获取完整的映射和资源,以及 [`case-studies/`](case-studies/) 获取完整的调查示例(其结果是*良性的*——这正是关键所在:如果不做这些工作,你无法从外部判断)。
## 先前研究
对于深度的账户 OSINT——从提交中提取泄露的电子邮件、恢复 SSH key、跨平台身份枢纽转换——请使用成熟的工具;`ghvet` 并不试图取代它们:
- [gitrecon](https://github.com/GONZOsint/gitrecon) — 个人资料侦察 + 提交邮件泄露
- [octosuite](https://github.com/rly0nheart/octosuite) — GitHub OSINT 框架
- GitFive / Gitcolombo — 身份枢纽转换
`ghvet` 是它们未涵盖的那部分:*在我运行它之前,我应该信任这个 fork/邀请/artifact 吗?*
## 免责声明
仅用于防御和教育目的,使用通过 GitHub 官方公开 API 暴露的数据。不得用于骚扰、跟踪或在没有正当理由的情况下调查他人。请遵守 GitHub 的服务条款和适用法律。
标签:DevSecOps, Python, 上游代理, 云安全监控, 开源治理, 文档安全, 无后门, 逆向工具, 配置审计, 静态分析