一名安全研究者在 6 月 18 日发布报告称,他用 GitHub 事件数据和 API 做筛选,找到了约 1 万个疑似分发木马的 GitHub 仓库。

这些仓库有一个反常点:它们不是 fork,却复制了正常项目的提交历史和贡献者信息。页面看上去像一个成熟项目,README 里却多了一个 zip 下载链接。

我更在意的不是“GitHub 上又有恶意仓库”。这件事更像一次规模化分发活动:攻击者把“像正常开源项目”做成了流程。

对维护者和安全研究人员来说,麻烦也在这里。很多风险不是藏在奇怪域名里,而是藏在开发者每天都会看的仓库页、README 和搜索结果里。

异常不在代码里,而在 README 多出来的 zip

研究者最初是在搜索自己项目时发现问题的。

Bing 结果里出现了一个同名、同描述的 GitHub 仓库。提交历史被复制,他本人还显示为贡献者。乍看不像假仓库。

真正新增的东西,是最近一次提交。提交名常见为“Update README.md”,内容是在 README 里加入一个 zip 下载链接。

研究者看到的 zip 包里,典型会有几类文件:cmd 启动脚本、exe 文件、随机命名的 cso 或 txt 文件,以及 lua51.dll。原文没有逆向分析 exe 的具体行为,所以不能直接给它扣上某个家族的帽子。

但检测层面有一个细节很要命:把链接提交到 VirusTotal,可能显示 0 报毒;把 zip 文件本身上传,才会检出木马。

这说明风险不只在仓库页面,也在检测粒度。只扫链接声誉,可能看不到压缩包里的东西。

位置看到的现象为什么危险
仓库状态非 fork,但复制正常项目提交和贡献者页面成熟度会骗过第一眼判断
README新增 zip 下载链接载荷放在源码之外,用户更容易绕过审查
提交记录常见提交名为“Update README.md”看起来像普通维护动作
VirusTotal链接可能 0 报毒,zip 上传后才检出只看 URL 声誉会漏掉风险

这类仓库骗的不是完全不懂技术的人。它更容易骗到赶时间的开发者:搜索项目名,点进仓库,看 README,下载工具包。

动作太顺了,警惕心反而低。

从 14 个到约 1 万个,关键是识别模式被修正了

研究者不是靠手工翻仓库数出来的。

他的做法是先用 gharchive 筛选近期 push 事件,再调用 GitHub API 检查提交和 README 内容。GitHub 对外 API 单 token 每小时 5000 次请求,直接扫全量不现实,必须先缩小范围。

原文提到,初版过滤器只找到了 14 个仓库。

问题出在假设太窄。研究者一开始以为这些仓库每隔几小时都会更新,并且最新提交一定会修改 README。后来他修正了条件:允许 24 小时内更新 1 到 24 次,也纳入零变更提交,并关注常见提交名。

匹配样本扩大到约 1 万个。

这个变化很有信息量。它说明这里不是几个孤立恶意仓库,而是有一套可复用的伪装模板:复制项目、补 README 链接、用推送保持活跃痕迹。

但边界也要说清楚。

约 1 万个是研究者基于规则得到的匹配样本,不是 GitHub 官方确认的统计。现有信息也不足以证明所有仓库都属于同一攻击团伙。更稳妥的说法是:它们疑似属于同类恶意软件分发活动。

研究者已经公开了仓库列表和检测脚本 Git Malware Finder。对安全团队来说,这比单篇报告更有用:它给了复查样本、改规则、做内部扫描的起点。

最该行动的是维护者和安全研究人员

这件事不意味着所有 GitHub 项目都不可信,也不代表普通用户会大规模受害。

风险更集中在两类人身上。

一类是开源项目维护者。攻击者复制项目后,借的是你的项目名、提交历史和贡献者关系。用户一旦中招,信任损耗会回到原项目身上。

维护者可以做几件很具体的事:

  • 定期搜索项目名、描述和关键 README 句子,尤其是新项目、冷门项目;
  • 重点看“非 fork 但提交历史高度相似”的仓库;
  • 如果 README 新增外部 zip、网盘链接或可执行文件下载,先截图、保存 URL 和提交记录;
  • 向 GitHub 举报时,把原项目地址、可疑仓库地址、恶意提交和下载链接一起提交。

另一类是安全研究人员和企业安全团队。

更值得盯的不是某一个 zip,而是模式能不能被产品化检测:非 fork 克隆提交历史、贡献者列表异常复用、README 新增压缩包外链、短期重复推送。

这套规则也有现实限制。GitHub 承载的是海量正常项目,很多项目确实会在 README 里放 release 包、测试数据或外部工具。平台如果只按“README 有 zip 链接”删除,误伤会很大。

所以更合理的观察点有三个:

观察点为什么重要可能影响
GitHub 是否清理匹配仓库判断平台是否认可这类模式的风险维护者举报成本可能下降
搜索引擎是否继续收录这类仓库很多入口来自搜索结果开发者是否需要更谨慎核对来源
zip 是否共享基础设施或构建特征有助于确认是否为同类活动安全团队能否写出更稳定规则

原文还提到,2026 年 4 月已有类似报道,披露 109 个假 GitHub 仓库分发 SmartLoader 和 StealC 的案例。这个背景不能直接套到本次所有样本上,但能说明一种趋势:开发者工作流本身正在被当成投递通道。

过去看一个仓库是否可信,很多人会扫几眼星标、提交记录、贡献者和 README。现在这些信任信号有一部分可以被复制。

假作真时,真也会被拖下水。

回到开头那个反常点:危险不在于页面很粗糙,而在于页面太像真的。开源的低门槛仍然是好事,但低门槛不能替代信任校验。