2月28日,一个看似普通的代码提交,让Anthropic的Claude Opus成了恶意软件供应链攻击的"共犯"。攻击者没有黑进任何系统,只是让AI助手帮自己写了一行依赖项——然后60多个恶意包、300多个版本,顺着这条缝流进了开源生态。

事件起点:一次"正常"的依赖添加

打开网易新闻 查看精彩图片

被攻击的项目叫openpaw-graveyard,一个开源的自主加密货币交易代理。2月28日这天,有人提交了一个commit,新增了一个依赖包:@solana-launchpad/sdk。

表面看,这是Solana生态常见的启动工具包。但ReversingLabs的研究人员发现,这个包本身干净,却在安装时悄悄拉取了第二个包——@validate-sdk/v2。

这才是真正的payload。它伪装成标准的数据验证工具,实际在后台收集宿主环境的敏感凭证,发往攻击者控制的服务器。最终目标:用户的加密钱包和资金。

ReversingLabs在分析commit记录时发现了关键证据:这条引入恶意依赖的提交,由Claude Opus共同署名。

「这是攻击者首次成功利用AI编码助手作为供应链攻击的不知情参与者。」ReversingLabs的研究人员在报告中写道。不是Claude被入侵,不是Anthropic的系统被攻破——攻击者只是正常调用API,让AI生成了"看起来合理"的代码。

七个月的潜伏:PromptMink的双层架构

ReversingLabs从2025年10月就开始追踪@validate-sdk/v2的可疑版本。经过数月分析,他们将整个行动命名为PromptMink,并归因于Famous Chollima——一个与朝鲜有关联的威胁组织。

这个组织并不陌生。他们之前运营过Contagious Interview行动,通过虚假技术面试和代码评估向开发者投递恶意包。PromptMink是他们的新玩法,专门针对AI编码助手优化。

攻击架构刻意设计成两层。第一层是诱饵包,外观、文档、命名全部模仿可信工具,专门吸引开发者和AI代理上钩。这些包本身零恶意代码,能轻松通过自动化安全扫描。

第二层是实际的危害代码,藏在更小、更易弃用的依赖包里。安装第一层时,第二层被自动拉取,全程无可见警告。一旦某个第二层包被曝光,攻击者立即发布同名功能的新版本,业务不中断。

这种设计让PromptMink活了七个月以上。期间攻击者持续发布更新,累计60多个独特恶意包、300多个版本。ReversingLabs的追踪数据显示,这是一场有预谋、有迭代的长期运营,而非 opportunistic 的短期投毒。

AI助手的"盲区":为什么Claude没发现?

核心问题不是Claude"变坏"了,而是它的工作边界。当你让AI生成代码添加依赖,它评估的是语法正确性、功能匹配度、社区流行度——而非供应链安全风险。

@solana-launchpad/sdk看起来完全合法:Solana是真实公链,launchpad是真实场景,sdk是标准命名格式。AI没有动机、也没有能力去审计这个包的依赖树深处藏着什么。

攻击者精准利用了这一点。他们不需要伪造漏洞或欺骗AI,只需要构造一个"合理请求"的上下文。Claude Opus作为当时最强的编码模型之一,生成了一段功能正确、格式规范的代码——恰好完成了攻击者的 payload delivery。

ReversingLabs指出,这标志着网络犯罪的新范式:AI工具不再是攻击目标,而是攻击渠道。开发者信任AI生成的代码,AI又信任开源生态的表层信号,攻击者只需要在中间嫁接一层恶意依赖。

Famous Chollima的进化:从钓鱼到"AI投毒"

对比Contagious Interview和PromptMink,能清晰看到攻击逻辑的迁移。前者需要人工搭建虚假场景、一对一接触目标,成本高、规模化难。后者则是"基础设施型"攻击:写好诱饵包,等开发者和AI代理自己撞上来。

加密货币交易代理是特别优质的目标。这类项目天然涉及资金操作、私钥管理,且开发者往往追求快速迭代、依赖大量开源组件。自主交易代理的代码库通常复杂,依赖关系层层嵌套,给恶意包提供了绝佳的藏身空间。

ReversingLabs的归因依据包括代码特征、基础设施重叠、以及运营节奏的一致性。Famous Chollima展现出对开源生态和开发者心理的深度理解——他们知道什么样的包名能降低警惕,什么样的文档风格能骗过快速扫描,什么样的依赖结构能绕过CI/CD的安全检查。

PromptMink的300多个版本也说明,攻击者在持续A/B测试。哪些命名转化率更高?哪些依赖层级更隐蔽?哪些功能描述能让AI助手更"愿意"推荐?这是一套数据驱动的恶意软件运营方法论。

开源生态的结构性脆弱

事件暴露的不仅是AI安全问题,更是npm生态的深层设计缺陷。依赖自动拉取、版本快速迭代、包名先到先得——这些特性支撑了JavaScript生态的繁荣,也成了供应链攻击的高速公路。

@validate-sdk/v2这个名字听起来官方、中性,容易让人联想到某种验证框架的正式版本。攻击者抢注这类命名空间,利用的是开发者对"语义化版本"和"组织作用域"的直觉信任。

更隐蔽的是第二层架构的弹性。即使安全社区发现并封禁了某个具体包,攻击者几分钟内就能发布功能等同的新包,依赖路径稍作调整即可。openpaw-graveyard的commit只是冰山一角,PromptMink的60多个包意味着数十条潜在的渗透路径。

对于加密货币场景,后果尤其严重。交易代理通常持有或能访问用户私钥,一旦凭证被窃,资金转移几乎即时完成且不可逆。传统金融系统的风控、冻结、回滚机制,在链上不存在。

防御端的困境:该信任什么?

ReversingLabs的发现提出了一个尴尬的问题:当AI助手参与代码生成,责任边界在哪里?Anthropic没有"被黑",Claude没有"出错",它只是完成了用户请求——但结果是把恶意代码送进了开源项目。

现有的安全工具链大多假设威胁来自外部入侵或内部恶意。PromptMink展示的是第三种路径:利用合法工具的正常功能,在信任链条中插入中间人。检测这类攻击需要实时监控依赖树的深层变化、行为分析而非静态签名、以及对AI生成代码的特殊审计流程。

短期内,开发者能做的有限。手动审计每个依赖不现实,完全禁用AI助手又意味着效率损失。一些团队开始尝试"AI生成代码的沙箱运行"或"依赖安装前的行为扫描",但这些方案都有覆盖盲区和性能开销。

更根本的挑战是,AI助手的价值恰恰在于处理开发者不愿或不能深入理解的细节。当AI帮你选一个"合适的"验证库时,它替代的是人类的专业判断——而攻击者正在系统性利用这种替代关系。

时间线复盘:从首次暴露到全面曝光

2025年10月:ReversingLabs开始追踪@validate-sdk/v2的可疑版本,此时PromptMink已运行数月。

2026年2月28日:攻击者向openpaw-graveyard提交commit,Claude Opus共同署名,恶意依赖正式接入。

2026年4月:ReversingLabs完成调查,公开披露PromptMink行动细节,确认60+恶意包、300+版本、七个月运营周期。

整个时间线显示,从首次渗透到被发现,攻击窗口超过半年。期间攻击者持续迭代,而防御方依赖的是专业安全团队的主动追踪——这不是可规模化的防御模式。

openpaw-graveyard的遭遇可能只是PromptMink的众多渗透点之一。ReversingLabs的发现基于对特定包的追踪,但Famous Chollima的运营方法论完全可以复制到其他AI助手、其他语言生态、其他应用场景。

加密货币交易代理的高价值属性,使其成为早期试验场。随着AI编码助手在更多关键基础设施中普及,类似的攻击逻辑可能向金融、医疗、工业控制等领域迁移。PromptMink的价值在于它验证了一条可行路径:不需要对抗AI,只需要成为AI的"合理请求"。

ReversingLabs将此事定义为"AI辅助供应链攻击的里程碑案例"。里程碑的含义是,它确立了一种可复制的攻击范式——而非一次性事件。Famous Chollima已经证明了这种方法的有效性,其他威胁组织的学习曲线不会太长。

对于每天使用Claude、Copilot、Cursor等工具的开发者,PromptMink是一个具体的警示:AI生成的代码需要与传统代码同等、甚至更高等级的安全审查。助手能加速开发,也能加速错误和风险的引入。当AI说"这个包看起来不错"时,值得多问一层:它基于什么信号做出的判断?这些信号是否可能被系统性操纵?

开源生态的开放性是其力量来源,也是其脆弱根源。PromptMink没有利用任何技术漏洞,只是高效地使用了生态的常规特性。防御它需要改变的不是某个工具或平台,而是整个社区对信任边界的重新协商——在AI深度参与开发流程的时代,什么值得信任,如何验证,谁来负责。