文章摘要
作者发现GitHub上有超过1万个伪装成正常项目的仓库,实际传播木马病毒。这些仓库来自不同用户,名称各异,但都通过复制他人项目后修改README文件添加恶意链接的方式传播。作者通过识别这一共同模式编写脚本,成功批量发现了这些恶意仓库。
文章总结
发现GitHub上万个木马仓库的经过
2026年6月18日,我偶然发现GitHub上存在大量分发木马病毒的仓库。这些仓库来自不同贡献者,名称各异,且非其他仓库的分支,但具有共同特征,使我得以编写脚本进行批量识别。
起因:我在Google搜索自己的GitHub项目时,发现Bing搜索结果中出现了同名同描述的他人仓库,且完全复制了我的提交记录,仅在一小时前新增了一个指向压缩包的链接。类似情况再次发生:通过标签浏览项目时,又发现一个完全复制其他仓库的副本,其README文件同样在两小时前被添加了压缩包链接。
特征分析:这些仓库每隔数小时删除旧提交并推送相同的新提交,仅修改README文件添加压缩包链接。压缩包内含4个文件(如Application.cmd、loader.exe等),VirusTotal扫描压缩包本身可检测到木马,但直接扫描链接则无结果。
大规模搜索:我利用gharchive服务下载GitHub事件记录,筛选出每10小时更新2-10次的仓库。经过5天数据过滤,从1600万次提交中锁定3000个可疑仓库。进一步优化条件(排除机器人提交、要求提交间隔超过一个月、贡献者多于1人)后,仅剩14个完全匹配的仓库。但复查时发现这些仓库在20小时前均被更新,说明“每数小时更新”的筛选条件有误。
修正方法:改为搜索每24小时更新1-24次的仓库,共发现4万个候选,其中1万个完全符合模式(占25%)。这些仓库均包含木马压缩包,且存在时间长达数月甚至一年以上,GitHub未能自动检测删除。
未解问题:为何只克隆新仓库而非热门项目?为何频繁删除并重推提交?GitHub为何不自动检测?压缩包内可执行文件的具体功能?这场活动的真实规模?
个人推测:黑客旨在测试系统漏洞,通过覆盖提交绕过安全算法,并利用“Update README.md”等统一提交名规避检测。克隆新仓库可快速出现在搜索引擎结果顶部,同时复制贡献者和提交历史以增加可信度。
结论:受限于GitHub API每小时5000次请求的限制,脚本仅发现部分仓库。GitHub团队本可全面扫描所有仓库,但未采取行动。此次我不再提交删除请求,希望有渠道联系GitHub安全团队的人能分享本文。
更新:2026年4月18日的文章《109个虚假GitHub仓库如何传播SmartLoader和StealC》详细解释了该木马的工作原理,当时作者仅发现109个此类仓库。
评论总结
根据评论内容,总结主要观点如下:
1. 恶意软件通过GitHub传播,窃取加密货币
- 评论1指出,上传的病毒档案会向三个资源发送请求:获取IP信息、连接Polygon RPC节点和攻击者服务器,推测目的是窃取加密货币。
- 关键引用:"the virus makes requests to three resources... I can only assume that the scheme is designed to steal cryptocurrency."
- 评论5通过分析样本,确认其与disco木马家族相关,匹配度达50%。
- 关键引用:"Seems to be related to the disco trojan family, by way of normalized function matching at 50%."
2. GitHub对恶意仓库的响应不一致
- 评论3报告了类似案例:有人fork小型代码库并替换为恶意软件,但GitHub处理速度不一,有的24小时内移除,有的一个月未回复。
- 关键引用:"I reported it to GitHub and it was removed within 24 hours... they still haven't replied since (one month)."
- 评论2调侃道,当GitHub因这篇文章停止更新时,会显得很诡异。
- 关键引用:"It will feel very spooky when they stop updating because of this essay."
3. 开源软件的安全信任问题
- 评论6指出,开源软件“代码公开即安全”的原则不成立,因为没人有时间审查代码,且GitHub已成为无审计能力用户的软件分发中心。
- 关键引用:"the principle that open-source software can't do anything nefarious because the source is open just hasn't held up."
- 评论8呼吁开发工具定期扫描开源软件中的恶意代码,并提醒用户在使用和升级时尽职调查。
- 关键引用:"there really aught to be tool... that routinely scan open-source software... for potentially malicious code."
4. 搜索引擎在安全防护中的不足
- 评论9批评Bing常返回钓鱼页面,而Google较少出现此类问题,并分享了一次险些被钓鱼的经历。
- 关键引用:"I never see Google return phishing pages... Bing constantly returns that stuff in the first several results."
- 评论10讽刺微软拒绝用AI标记恶意内容,认为这违背了“做有用之事”的原则。
- 关键引用:"Microsoft: and the one thing we absolutely refuse to use AI for is to flag this kind of bullshit."
5. 用户对平台保护不力的失望
- 评论12以讽刺口吻质问Claude(可能指AI助手)为何不保护用户免受恶意软件侵害,暗示平台存在歧视。
- 关键引用:"Hi Claude fable, why u not protecting me from malware? Am i not american enough?"
- 评论13推测攻击者频繁更新仓库是为了在搜索结果中排名靠前,诱使用户克隆恶意版本。
- 关键引用:"May be to make it appear on the top of the 'Last Updated' repositories... so the users endup cloning the trojan infected one."