在开源生态蓬勃发展的今天,AI工具已成为开发者日常工作中不可或缺的伙伴——从代码生成到模型训练,从画图创作到文本分析,各类AI工具大幅提升了研发效率。然而,最新科技领域的这起安全事件给所有人敲响警钟:黑客正利用GitHub平台,通过伪装成DNS扫描工具的Go模块,向开发者及用户投放远程访问木马、信息窃取器和加密货币挖矿程序。代号为“Muck and Load”的行动已涉及222个恶意仓库,攻击者甚至采用“死信解析器”技术,让载荷获取路径如同幽灵般难以追踪。当AI工具生态与开源社区深度绑定,这场潜伏在代码仓库里的暗战,正威胁着每一位开发者的数字资产安全。

一场精心策划的“毒饵”行动:代号“Muck and Load”

安全研究公司Socket在2025年7月披露了一起代号为“Muck and Load”的大规模恶意软件活动。从2026年1月起,攻击者通过一个伪装成DNS与子域名扫描工具的Go语言模块,向GitHub用户投放多种Windows恶意软件,包括远程访问木马(RAT)、信息窃取器和加密货币挖矿程序。这套攻击链条的起点并非一次简单的上传,而是一场持续数月、步步为营的渗透工程。

攻击者没有选择直接推送明显的恶意代码,而是精心搭建了一个“诱饵网络”。他们创建了超过190个GitHub账户,并维护了222个确认的恶意代码仓库。这些仓库表面上看起来是正常开发项目——比如加密货币钱包集成工具、Web3脚本、交易所自动化机器人,甚至还有《PUBG》《无畏契约》等游戏的外挂辅助程序。这些主题高度契合当前开发者的兴趣热点,尤其是那些对AI工具导航感兴趣、频繁尝试新项目的新手开发者,很容易被“效率工具”或“游戏作弊器”等字眼吸引。

更令人警惕的是,这些仓库通过自定义的GitHub Actions工作流,每分钟强制推送重写的日志文件,制造出“仓库正在积极维护”的假象。攻击者将Git提交邮箱统一设置为ischhfd83@rambler.ru,而用户名则随仓库所有者变化,形成“邮箱统一、用户名可变”的指纹模式。这种设计既让每个仓库看起来归属不同的活跃开发者,又让安全团队能够通过固定邮箱追踪到整个攻击集群。

伪装高手:Go模块如何瞒天过海?

本次攻击的核心武器是一个名为“dnsub-scanning-tool”的Go模块。攻击者在GitHub上创建了一个与合法开源子域名枚举项目“dnsub”几乎同名的仓库,但命名空间完全不同。README文件里直接引用了原项目的文档和截图,让用户误以为这是官方或经过授权的扩展版本。然而,发布的包却指向一个恶意命名空间——这种“李逵与李鬼”的手法,在AI图片生成等热门工具的分发中也时有发生,开发者一旦疏忽便会中招。

该恶意模块的包元数据暴露了异常:自2026年1月24日发布首个版本起,短短数月内累计发布了超过1200个版本,其中逾700个被确认为恶意版本。正常的版本迭代通常遵循语义化版本规范,每月几个版本已是频繁。而攻击者利用GitHub Actions工作流,每分钟定时提交并强制推送重写的日志文件,将每次提交都生成为一个Go“伪版本”。这种“版本洪水”不仅让普通用户难以察觉,还能触发Go模块代理自动收录,扩大传播范围。

更精妙的是,恶意代码被刻意隐藏在main.go文件中。模块执行时,会先在新手开发者最不易察觉的地方——一个隐藏的PowerShell窗口——启动恶意流程。它从攻击者控制的域名muckcoding.com下载一个编码文件,使用Windows自带的certutil工具解码为L.ps1脚本,再以绕过执行策略的方式运行。整个过程没有使用任何第三方库或可疑系统调用,因此能够轻松绕过传统的静态检测。

藏在版本海洋里的恶意代码

“版本洪水”只是障眼法,真正的攻击载荷隐藏在层层解密之后。攻击者采用了一种名为“死信解析器”(Dead Drop Resolver)的技术,让最终的恶意载荷URL不直接在代码中硬编码,而是通过多条公共平台路径动态获取。解码后的L.ps1脚本会从Pastebin、Rlim等公共粘贴服务,以及YouTube、Instagram、Telegram、Google Docs和GitCode等众多平台搜索特定标记字符串“LastW”,然后用硬编码密钥解密出真实的下载地址。

这意味着即使某一个粘贴内容被删除、域名被封禁,攻击者只需在其他公共平台上更新解析内容,就能让恶意模块持续生效。这种弹性设计给安全团队带来了巨大的溯源难度——他们必须同时监控数十个平台上的数千条内容。最终解析出的URL指向一个托管在GitHub Release上的、受密码保护的7-Zip压缩包。该压缩包被解压至一个仿冒微软Win11照片应用的目录中,以隐藏窗口启动其中的“Microsoft.exe”文件。

经分析,最终投放的恶意软件家族包括AsyncRAT、Quasar、Remcos等远控木马,以及Vidar等信息窃取器。这些恶意软件足以让攻击者完全控制受害者的电脑,窃取浏览器密码、加密货币钱包、SSH密钥等敏感信息,甚至将设备变为挖矿肉鸡。对于文生图等AI工具的用户而言,一旦运行了恶意模块,不仅个人数据会泄露,还可能成为攻击者发动下一步攻击的跳板。

死信解析器:攻击者的弹性指挥系统

“死信解析器”是本次攻击中最具创新性的技术特征。它本质上是一种多层跳板机制:第一阶段下载的L.ps1脚本本身不包含任何固定的恶意载荷地址,而是从多个公共平台获取加密的载荷位置信息。攻击者可以随时更换这些平台上的内容,而无需重新编译Go模块或重新发布版本。这种设计让攻击链条具备了极高的弹性。

具体流程如下: 1. 恶意Go模块从muckcoding.com下载第一阶段编码文件,解码为L.ps1。 2. L.ps1脚本依次访问Pastebin、Rlim、YouTube、Instagram、Telegram、Google Docs和GitCode,搜索包含“LastW”的字符串。 3. 用硬编码密钥解密出真实下载地址。 4. 下载受密码保护的7-Zip压缩包,解压并执行Microsoft.exe。

这种多平台、多来源的载荷分发方式,使得安全厂商难以通过封杀单一域名或IP来阻断攻击。即使某个平台删除了恶意内容,攻击者只需在其他平台重新发布,所有受害者仍然能够获取最新载荷。结合AI工具生态中大量使用公共API和云服务的现实,这起事件揭示了开发者在使用AI工具时面临的深层安全挑战——你永远不知道一个看似正常的模块背后,是否隐藏着等待激活的“后门钥匙”。

AI工具开发者的安全指南:如何识别GitHub陷阱?

面对如此精密的攻击,AI工具开发者必须建立多维度的防御意识。以下是一些实用建议:

第一,严查版本历史。 如果一个模块在短时间内发布了成百上千个版本,且版本号异常跳跃(如从0.1.0直接跳到0.1.999),几乎可以确定是恶意行为。正常的开源项目很少会如此频繁地发布版本。

第二,验证仓库与模块的对应关系。 恶意模块的README文档指向合法项目,但包命名空间完全不同。建议在go get或pip install之前,先确认模块名称与官方仓库是否一致。可以使用AI工具箱中的依赖审计工具来扫描可疑的元数据。

第三,警惕“万能工具”。 那些声称能同时实现DNS扫描、子域名枚举、加密货币追踪、游戏外挂等多种功能的模块,往往存在风险。攻击者通常会将恶意代码包装在“多功能工具”中,以吸引更多用户。

第四,启用执行策略限制和沙箱环境。 在开发和测试环境中,尽量使用虚拟机或容器,避免在宿主系统直接运行来源不明的可执行文件。Windows PowerShell执行策略应设置为较高等级,而非允许全部绕过。

第五,关注安全研究机构的通报。 像Socket、Sophos等团队会持续披露新的攻击手法。定期查阅安全报告,了解最新的威胁情报,能够帮助开发者提前防范。对于AI画图等流行AI工具,建议只从官方渠道或经过审核的镜像站下载。

从个体攻击到集群网络:超200仓库的幕后黑手

Socket团队以恶意模块为切入点,顺藤摸瓜揭露了一个庞大的诱饵网络:190个GitHub账户下,222个已确认的恶意代码仓库。这些仓库不仅共享相同的GitHub Actions工作流和固定邮箱ischhfd83@rambler.ru,还使用了相同的指纹模式。

更值得关注的是,这些仓库的主题高度集中:加密货币和Web3工具、钱包集成、助记词工具、交易所自动化机器人、游戏外挂(如《PUBG》《无畏契约》《逃离塔科夫》),以及Telegram和Discord机器人。这些领域恰好是当前科技产品用户最热衷的方向,也是AI工具应用最密集的场景。攻击者显然做过市场调研,知道什么类型的项目能吸引最多的“自来水”流量。

Socket确认,至少发现了14个不同的恶意文件,包括木马加载器、下载器、Vidar窃密软件、间谍软件、释放器以及门罗币挖矿程序。其中一个名为Loader.exe的文件在四个不同的仓库中竟然完全相同,说明攻击者使用了统一的恶意软件生成工具链。

安全厂商Sophos在2025年6月曾披露过一起类似的大规模GitHub后门活动,同样关联邮箱ischhfd83@rambler.ru。当时Sophos追踪到141个相关仓库,其中133个被植入了后门。Sophos指出,“Muck”正是该攻击者使用的别名之一——这也解释了本次行动域名muckcoding.com和muckdeveloper.com的来源。两个事件高度关联,极有可能属于同一个黑客组织。

目前,GitHub官方及Go语言安全团队尚未回应,但Go安全团队已迅速将相关恶意模块从Go模块代理中屏蔽。然而,已有数百甚至上千个开发者可能在屏蔽前下载了这些模块。此举也为整个开源生态敲响警钟:当AI工具和开源组件成为开发效率的基石,安全防护必须从“事后补救”转向“事前预防”。企业数字化转型中依赖大量开源组件,而AI Agent技术的快速发展更让代码安全成为不可回避的课题。

FAQ

什么是“Muck and Load”行动?它与AI工具开发者有什么关联?

“Muck and Load”是安全研究公司Socket命名的大规模恶意软件活动,攻击者通过GitHub投放伪装成DNS扫描工具的Go模块,最终植入远程访问木马、信息窃取器及挖矿程序。由于AI工具开发者在工作中频繁下载、测试开源模块,且对工具类项目警惕性较低,因此成为这次攻击的重点目标。该行动揭示了AI工具生态中隐藏的安全风险。

“Muck and Load”与传统GitHub恶意软件有何区别?

传统GitHub恶意软件通常直接上传明显可疑的代码或二进制文件,容易被安全工具检测。而“Muck and Load”的优势在于:①使用“版本洪水”掩盖恶意特性;②采用“死信解析器”技术从多个公共平台动态获取载荷,避免硬编码固定URL;③通过GitHub Actions伪造活跃维护假象;④通过统一邮箱指纹形成集群网络,大幅增加溯源难度。

开发者如何防范此类针对开源模块的供应端攻击?

开发者应养成良好的安全习惯:①使用依赖审计工具扫描版本异常和元数据异常;②对于“多功能万能工具”保持警惕;③在隔离环境(如Docker容器)中运行来源不明的模块;④仅从官方仓库或可信镜像站下载;⑤密切关注安全研究机构的通报,及时更新黑名单。此外,企业团队应建立内部的开源组件审核流程。