copyleftdev/long-shadow
GitHub: copyleftdev/long-shadow
该项目是对一起大规模 GitHub 仓库洗白与供应链欺诈行动的完整取证调查,包含证据数据集、可复现的分析工具链以及持续监控方案。
Stars: 1 | Forks: 0
# “长影”行动
[](ARTICLE.md)
[](REPLAY.md)
[](ARTICLE.md)
[](METHODOLOGY.md)
[](HASHES.txt)
**“长影”** 是一次包含四个集群的 GitHub 仓库洗白行动的代号,该行动通过在 2037 年埋下伪造的 commit,将洗白后的仓库推送到所有基于 AI 构建的代码搜索的顶部。本仓库记录了这项调查:对一家真实的印度 AI 初创公司进行的大规模 3,112 个仓库的抢注、对 Allen Institute for AI 论文的实时窃取、两个重新发布的加密货币钱包,以及一项在为真实的中国 AI 初创公司刷星的同时进行充值的付费机器人服务。
这个名字来源于操作者的标志性手法——每个“长影”仓库都会将日期提前的 commit 抛向未来,最远的时间达到了 **2037 年 6 月**,距离本报告撰写之日已经过去了十一年。
**所有原始数据均位于本仓库中。每一项声明都可以在 [REPLAY.md](REPLAY.md) 中找到对应的命令,并在 [HASHES.txt](HASHES.txt) 中找到对应的哈希值以供验证。**
## 摘要(数据截至捕获日期 2026-04-25)
| 指标 | 数值 |
|---|---|
| 已确认的不同操作者集群 | **4** (A, B, C + D 付费刷星服务) |
| 已确认的操作者 GitHub 账号 | **17+** (4 + 8 + 1 个组织 + 6 个机器人,加上 `delby-ai` 操作者) |
| 已确认的洗白仓库 | **3,150+** (仅一个操作者就有 3,112 个) |
| 已识别的马甲作者邮箱 | **9** 个独立身份,5 种提供商模式 |
| 已确认的真实 OSS 上游受害者 | **9 个具名项目** + GitHub Classroom 学生作业 + Nano-X Window System + 2 个加密钱包 |
| 被冒充的真实组织 | Allen AI, European Synchrotron, Anthropic, Nota Inc., Columbia U, **Delby Intelligence (全面品牌抢注)** |
| 针对最新学术发布进行洗白的时间 | 最短仅需 **4 天** |
| GitHub `Co-Authored-By: Claude` 搜索前 1000 名的污染率 | **43%** 可追溯到一个操作者的两个仓库 |
| 机器人刷星服务客户(真实的中国 AI 初创公司) | **≥4 家初创公司,合计虚增约 19,000 颗星** |
## 您将在这里看到什么
```
long-shadow/
├── README.md (this file)
├── ARTICLE.md publication-ready investigative draft
├── METHODOLOGY.md how the investigation actually unfolded
├── REPLAY.md every reproduction command, in execution order
├── HASHES.txt sha256sum of every artifact
├── docs/index.html single-file kinetic data-viz long-read
├── catalog/
│ ├── CATALOG.md full evidentiary catalog
│ ├── operators.csv every confirmed operator account, one per row
│ ├── farm_repos.csv 16 farm repos with HEAD SHA + tree SHA + commit count + upstream
│ ├── sock_puppet_emails.csv 9 sock-puppet emails with reach across GitHub
│ ├── upstream_victims.csv every real OSS / company impersonation victim
│ └── bot_star_customers.csv paid star-service customer list
├── data/
│ ├── manifests/ raw count manifests
│ ├── enumeration/ all GitHub-search enumeration outputs (raw)
│ ├── kraken/ kraken JSON outputs for both Operator A seeds
│ ├── entropyx/ entropyx tq1 scans of both top-2 farm repos
│ └── scans/ entropyx-derived findings
├── evidence/
│ ├── git_tree_sha/all_repos.tsv immutable HEAD + tree SHAs at capture time
│ └── commit_history/ per-repo TSV: SHA, dates, author, subject (6,503 commits)
├── disclosures/ drafted notification emails to affected parties
├── scripts/ reproduction shell scripts (paced for rate limits)
└── tools/
└── vet.py heuristic detector for repo-laundering signatures
```
## 复现调查结果
大多数复现工作只需执行一条 `gh api ...` 或 `git clone ... && diff -rq ...` 命令即可完成。请参阅 [REPLAY.md](REPLAY.md) 获取按执行顺序排列的确切命令。
使用的取证工具:
- **`entropyx`** (Rust) — 用于分析 git 历史的时间/结构/作者动态
- **`kraken`** (Rust) — 通过 GraphQL 进行 GitHub 身份图谱情报分析
- **`vajra`** (Rust) — JSON 数据的结构化分诊
- **`gh`** CLI + `git log` + `diff -rq` 承担了大部分核心工作
## 验证完整性
`data/`、`evidence/`、`catalog/`、`disclosures/` 中的每个文件以及根目录下的 markdown 文档,其哈希值均已记录在 `HASHES.txt` 中。验证方式:
```
sha256sum --check HASHES.txt
```
如果文件的哈希值不匹配,说明该文件在发布后已被修改。`evidence/commit_history/` 中的 TSV 引用了*不可变的 Git commit SHA*——即使操作者删除了他们的仓库,我们证据中的 SHA 仍将与删除前进行的任何其他克隆相匹配。
## 试用工具
使用七启发式评分器**检测单个仓库**:
```
GITHUB_TOKEN=$(gh auth token) python3 tools/vet.py luliguyu/cmbd-book
# 结论:T0-adversarial (得分 4/7)
```
**监视被洗白的加密货币钱包**以防止恶意修改(操作者控制着这些仓库,随时可能推送有害的更改):
```
python3 tools/wallet_watcher.py --workdir /var/lib/farmwatch-wallets
# 对比当前 laundered 仓库与 allow-list 及当前 upstream。
# Exit 1 = 自上次运行以来的新可疑发现。
```
**监视操作者账号**以发现新的农场活动:
```
GITHUB_TOKEN=$(gh auth token) python3 tools/farm_watcher.py --workdir /var/lib/farmwatch
# 记录每个 operator 账户的仓库列表快照;对新仓库和账户暂停发出警报。
```
**监视机器人刷星服务**以发现新客户:
```
GITHUB_TOKEN=$(gh auth token) python3 tools/star_watcher.py --workdir /var/lib/farmwatch-stars
# 追踪 bot-account 的 starring 活动及 customer-repo 的 star 激增。
```
所有四个工具都是零依赖的,或者只需 `pip install requests`。专为通过 cron 部署并配合 webhook 警报而设计。请参阅 [tools/README.md](tools/README.md) 获取完整的操作者手册。
通过 Docker Compose 进行**单命令持续监控**:
```
cp .env.example .env
$EDITOR .env # set GITHUB_TOKEN + (optional) WEBHOOK_URL
docker compose up -d
docker compose logs -f farmwatch
```
容器将按推荐计划 (`docker/crontab`) 运行所有三个监视器,在重启后持久化状态,并在出现新发现时向 Slack / Discord / 通用 JSON webhook 发送警报。完整的部署指南请参见 [docker/README.md](docker/README.md)。
## 披露状态
发送给所有受影响具名方的通知草案邮件位于 [disclosures/](disclosures/) 中。在本仓库首次发布时,这些邮件尚未发送——本次发布本身就是一种披露。如果您是任何受影响组织的代表,请前往 [disclosures/CONTACTS.md](disclosures/CONTACTS.md) 查看建议采取的行动以及关于我们所发现的您项目问题的简短摘要。
## 本报告中提及的受影响方
真实组织冒充 / 知识产权窃取(按优先级排序):
- **Allen Institute for AI** — `allenai/WildDet3D` 在发布 4 天后被克隆为 `luliguyu/WildDet3D`
- **Anthropic** — 在 8 个 Cluster B 仓库中伪造了 `claude-code@anthropic.local` 作者身份
- **The Quantum Resistant Ledger** — `theQRL/zond-web3-wallet` 被重新发布为 `luliguyu/dimatura`
- **Narwallets / NEAR** — `narwallets-extension` 被重新发布两次(版本陈旧,暂无主动恶意行为)
- **yikart** — `AiToEarn` 被 `kyasbalme` 和 `tusmart-grouptt` 重新发布
- **Delby Intelligence**(位于 delby.ai 的真实印度 Physical AI 公司) — 被 `DelbyIntelligence` GitHub 组织进行了 3,112 个仓库的品牌抢注
- **European Synchrotron Research Facility** — `esrfdev` GitHub 账号名被冒充
- **`blu3mo`**(真实日本研究员) — 其个人资料网站被 `kyasbalme` 冒充
- **真实的 `dimatura`、`ssaavedrad`、`sachinDevloop`** GitHub 用户 — 被用作仓库名个人 fork 的伪装
- **iflytek, MemMachine, 53AI, aiflowy** — 你们的星标数被一家同时也服务于重新发布农场的机器人服务虚增了;你们可能并不知情
- **GitHub Trust & Safety** — 可提供批量证据包
## 许可证与道德声明
所有取证证据均从公开的 GitHub API 和公开的 Git 历史中捕获。未访问任何私人数据,未对任何系统执行任何漏洞利用。操作者账号名和机器人账号昵称均被原样复制,因为它们本身就是公开的 GitHub 用户名;我们不会指名道姓地提及任何我们无法验证其身份的个人。
如果您是上述具名账号之一操作者,并认为自己被误认,请提供确凿证据与我们联系——我们将发布更正声明。
本文件采用 **CC-BY-4.0** 协议发布。`vet.py` 工具采用 **MIT 许可协议**。
## 致谢
- **StarScout** 团队 (Hao He, Haoqin Yang, Philipp Burckhardt, Alexandros Kapravelos, Bogdan Vasilescu, Christian Kästner — CMU + NCSU + Socket) 感谢他们发表的 ICSE 2026 论文*《GitHub 上的六百万(疑似)虚假星标》*。我们的调查建立在他们的方法论和虚假星标账号分类学的基础之上。[github.com/hehao98/StarScout](https://github.com/hehao98/StarScout)
- Anthropic 的 Claude 助手为取证综合分析提供了支持。调查工作本身、所有命令的构建以及所有取证解读均由作者本人完成。
标签:Cutter, 可视化界面, 威胁情报, 开发者工具, 数字取证, 欺诈检测, 自动化脚本, 请求拦截, 逆向工具, 配置审计