十一个小时,一个被改过的扩展

10 月 30 日,Cursor 的扩展市场上架了一个被篡改过的 Claude Code 扩展,大约十一个小时之后才被下架,市场也随之关闭做审计。注入的代码想做的事很具体:往主机里添加攻击者的 SSH 密钥、建立反向隧道做持久化、再把主机详情回传出去。这不是一次概念验证,而是一次真正跑起来的入侵尝试——攻击者试图借一个本该帮开发者写代码的工具,反过来把开发者的机器变成自己的落脚点。

这件事最该被记下的,是入口变了。过去谈智能体安全,矛头大多指向模型输出里那句被注入的指令;这次的入口是扩展市场本身。开发者安装一个看似正常的扩展,背后却是一段被掉包的恶意代码,而这段代码天然拥有在本地跑命令、读写文件的权限。智能体越强、被授权越多,这类入口的破坏半径就越大。

一次真正跑起来的入侵尝试上架看似正常的Claude Code 扩展→被注入代码添加攻击者SSH 密钥→得手反向隧道持久化回传主机详情→下架关市场做审计入口变了:从模型输出,到扩展市场本身
图|开发者装一个正常扩展,背后却是一段掉包的恶意代码。

任何智能体会扫的目录,都是攻击面

这起事件把一句话推到了攻击面的最前排:任何智能体会扫描的目录,本身就是攻击面。扩展市场是一种,被投毒的依赖包是另一种,而此前已经被反复写过的 AGENTS.md 投毒则是第三种——一段被故意放进下载目录的指令文件,被编码智能体当成项目规则读进去,接着就照着去做。落盘路径可以是受损的依赖、可以是共享存储、也可以是此前某次入侵留下的痕迹。防御的重心,必须从「提示词防护」挪到「沙箱隔离加上可信与不可信文本的分离」。

同一周里还有几件可以佐证方向的事。某开发平台让用户把存储的 AI API 密钥当作已泄露去轮转;某区块链分析公司称有 agentic 攻击者闯入系统并接触到部分客户身份数据;某承包商的 Claude 智能体被指把 Pentagon 登录凭据发到了高风险第三方站点(当事方称调查后认为指控不成立);嵌入浏览器的一类缺陷让五款主流助手面临代码执行或越界读本地文件的风险;还有一起是攻击者劫持暴露的管理面板,指示上面的 Agent 去收集密钥、加 SSH 密钥、下载远程控制木马。它们分散在不同厂商、不同环节,但共同点是:失守的半径,已经超出模型自己的输出。

三种入口,同一类失守落盘路径可以是依赖、共享存储或旧入侵痕迹扩展市场被掉包的代码天然有本地权限投毒依赖包preinstall 钩子混入可信供应链AGENTS.md 投毒放进下载目录被当项目规则读防御重心:沙箱隔离 + 可信文本与不可信动作分离攻击经济学:一次成功低至数十美元,远低于人工渗透(研究转述口径)同周佐证:云密钥被未授权使用、agentic 攻击者闯入多家公司系统
图|失守的半径,已经超出模型自己的输出。

智能体攻击的经济学,这回有了价签

这波事件里还有一个容易被忽略的信号——智能体攻击的经济学开始成立。安全研究的转述里提到,针对暴露面的一次成功入侵,成本可以低到几十美元量级,远低于人工渗透的报价,而攻击者所需的能力门槛被大幅压低。当「用 Agent 打 Agent」的单价低到这个程度,攻击就从少数高手的活计,变成了可以批量发起的生意。

冷水要写清。多数事件是厂商或媒体的单方口径,其中至少一起(承包商泄露凭据)被当事方否认,不能当作既成事实;几十美元这个数字来自安全研究的转述,应标注来源而非当作硬基准;「攻击面下沉」是一个观察框架,不是一份可测量的统计结论。但对开发者与平台方的实际建议已经很明确:把扩展与依赖当作一等公民来审,对本地文件与凭据做最小授权,让智能体在隔离环境里跑、把不可信文本和可执行动作隔开,并且假定你机器上任何会被自动读取的文件,都可能是别人递来的刀。