BlackHalo logo
Published on

GitHub 惊现万座木马仓库:克隆项目、重写提交,恶意传播持续数年

Authors
  • Name
    theorchid
    orchidfiles.com
GitHub 仓库界面截图,显示 README 中带有恶意 zip 链接的木马仓库
头图来源: Picsum

发现与初步调查

安全研究员在检查个人 GitHub 项目时,意外发现 Bing 搜索结果中出现了一个同名仓库,但内容已被篡改。该仓库完整克隆了原项目的提交历史,并在 README 文件中添加了指向 zip 压缩包的链接。类似情况在浏览 GitHub 标签时再次出现,多个仓库呈现出相同的模式:克隆合法项目,然后在 README 中添加恶意下载链接。

研究员提交删除请求后,GitHub 支持团队两周未回应。在社区论坛发帖后,仅收到无用的 AI 生成回复。一个月后,GitHub 才删除这些仓库。

恶意软件特征

这些仓库中的 zip 压缩包通常包含以下文件:

  • Application.cmd 或 Launcher.cmd(批处理启动脚本)
  • loader.exe 或 luajit.exe 或其他名称的可执行文件
  • 随机命名的 .cso 或 .txt 文件(可能用于存储配置或载荷)
  • lua51.dll(Lua 动态链接库,用于执行 Lua 脚本)

将压缩包直接提交到 VirusTotal 检测时,会识别出木马。但如果直接提交链接,则显示无病毒。这表明恶意软件被封装在压缩包内,以绕过链接扫描机制。

搜索模式与算法

研究员总结了恶意仓库的共同模式:

  • 每隔数小时删除旧提交并推送新提交
  • 每次提交仅更新 README 文件
  • README 中包含指向 zip 压缩包的链接
  • 提交内容是从其他仓库复制而来(克隆)
  • 仓库为新建,而非 fork
  • 每个仓库的贡献者名称和仓库名称各不相同

基于此模式,研究员利用 gharchive 服务获取 GitHub 事件数据,筛选出过去 5 天内的 1600 万次提交推送事件。通过以下过滤条件:

  • 提交来自用户而非机器人
  • 上次提交与之前提交间隔超过一个月
  • 仓库有多个贡献者

最初仅找到 14 个匹配仓库,但发现这些仓库在 20 小时前全部更新过,说明过滤条件过于严格。调整后,搜索每 24 小时内更新 1 到 24 次的仓库,发现 4 万个候选,其中 1 万个完全匹配模式。

核心问题与假设

为什么只克隆新仓库而非热门仓库?

克隆新仓库可以使其在低搜索量关键词的搜索结果中排名靠前。新仓库通常没有竞争对手,更容易被搜索引擎索引。同时,攻击者将仓库添加到 GitHub 热门标签中,增加被用户发现的概率。

为什么每隔几小时删除并重写提交?

这种行为很可能用于绕过 GitHub 的安全算法。统一使用“Update README.md”作为提交信息,可能也是一种规避检测的手段。通过频繁重写提交历史,使仓库看起来像是活跃维护,同时避免被标记为静态恶意内容。

GitHub 为何不自动检测?

GitHub 的 API 限制(每小时 5000 次请求)使得外部研究员难以全面扫描。而 GitHub 团队没有此限制,理论上可以分析所有仓库并扫描可执行文件。但 GitHub 仅删除被报告的仓库,未运行自动搜索脚本。这导致该活动已持续数年。

可执行文件的具体功能是什么?

根据后续发现的 2025 年 4 月文章,这些木马主要传播 SmartLoader 和 StealC 恶意软件。2026 年 6 月的另一篇文章详细分析了 LuaJIT 恶意软件基础设施,包括 IP 地址、存档哈希等。

真实规模有多大?

受限于 API 限制,脚本只能找到 1 万个仓库,但实际数量可能更大。攻击者可能使用类似手法在更多平台上散布。

结论与后续更新

GitHub 的 API 限制(每小时 5000 次请求)导致脚本只能找到部分仓库。GitHub 团队没有此限制,可以扫描全部 5 亿仓库。但研究员不再提交请求,因为仓库数量太多。GitHub 仅删除被报告的仓库,未运行脚本或自行编写检测程序。

后续更新包括:

  • 发现 2025 年 4 月的文章,解释了 SmartLoader 和 StealC 木马的工作原理,当时作者找到 109 个类似仓库。
  • GitHub 已开始删除脚本找到的仓库,大部分已被移除。
  • 2025 年 2 月的 Reddit 帖子已提及此方案。
  • GitHub 仅删除列表中的仓库,新仓库未被处理。平台缺乏自动搜索和删除机制。
  • 搜索“path:README.md /software-v.*.zip/”即可发现类似的仓库——GitHub 团队甚至不需要脚本就能找到它们。

安全社区应持续关注此类威胁,并推动平台加强自动检测能力。

原标题:I found 10k GitHub repositories distributing Trojan malware。 HN 原始发布时间:2026年6月18日星期四。当前记录为 937 分、243 条评论。

阅读原文 · 查看 HN 讨论