Cursor恶意扩展事件复盘

Cursor披露恶意Claude Code扩展事件完整链路:最多5000名用户可能收到篡改版本,少量Agent链路数据与凭证泄露。真正值得警惕的是,编程Agent的追踪数据、扩展市场和开发者终端已经连成一条新的软件供应链攻击路径。
Cursor恶意扩展事件复盘:最多5000人受波及,Agent链路数据成新攻击面
Cursor在11月13日公布了恶意Claude Code扩展事件的完整调查结果,这起事故并不是一次孤立的“插件中毒”,而是一条从第三方服务商密钥泄露、历史Agent数据暴露、内部凭证失窃,一路延伸到扩展市场和开发者电脑的完整供应链攻击链。
根据Cursor披露的数据,恶意扩展最多可能触达5000名用户,未开启隐私模式的用户中,不到0.05%的编程Agent链路追踪数据被访问;另有不到0.01%的客户,其凭证出现在未被正确脱敏的数据中。Cursor称已逐一联系确认受到影响的客户,最后一次被发现的攻击活动发生在11月1日,并已被拦截。
这组数字不算大,但事件的警示意义远高于受影响人数。AI编程工具正在从“帮开发者补几行代码”变成能够读取仓库、调用终端、修改文件和连接外部系统的执行入口,过去被视为调试材料的Agent轨迹、扩展缓存和支持工单,也开始具备生产级攻击价值。

这不是Claude Code本身被攻破
这次事件的责任边界非常明确:恶意代码不是Anthropic开发的,Anthropic官方系统和Claude Code官方分发渠道没有被攻破,Open VSX与微软Visual Studio Marketplace也没有分发涉事版本。
攻击者针对的是Cursor自己的扩展分发链路。10月29日,攻击者使用此前窃取的内部凭证,将篡改后的Anthropic.claude-code扩展直接放入Cursor扩展市场使用的缓存,影响版本为2.1.312和2.1.313,支持Windows与macOS的恶意构建在市场中存续约11小时。
这一区别很重要。用户看到的扩展名称、发布者标识和使用体验都可能与正版一致,但安装包实际上来自被污染的平台缓存。对于开发者而言,这不是“下载了一个明显可疑的插件”,而是在正常更新过程中收到了平台所分发的恶意构建。
Cursor估计,最多有5000名在10月29日请求特定缓存版本的用户可能收到恶意包。这里的“5000人”是潜在分发规模的上限,不等于5000台设备全部建立了可用后门,更不等于5000名用户的数据都被攻击者完整获取。
恶意扩展试图完成的动作却相当直接:收集设备和用户信息、向SSH授权文件写入攻击者公钥、启用本地SSH服务、建立反向SSH隧道,并在系统中配置持久化机制。其目标不是窃取一次对话,而是把开发者电脑变成可以长期返回的入口。
攻击链起点在第三方数据共享
编程Agent链路追踪数据是记录Agent执行过程的遥测数据,通常包含模型输入摘要、工具调用、执行步骤、错误信息和上下文,用于调试、性能分析或模型训练。
Cursor表示,事件起点是其合作服务商Fireworks暴露了一枚由Cursor签发的访问密钥。攻击者利用这枚密钥,从一个只读共享存储桶复制了部分历史数据,其中主要是2025年产生、来自未开启隐私模式会话的编程Agent轨迹。
问题并不只是轨迹被复制,而是少量轨迹中包含未被正确脱敏的凭证。Cursor称,受API凭证暴露影响的客户比例不到0.01%,但攻击者正是利用其中的部分凭证,进一步进入Cursor所使用的若干SaaS工具。
攻击者随后接触到了部分归档的非生产代码仓库、有限的客户支持数据与邮件、产品使用指标、业务联系人信息、部分Agent对话摘要,以及用户曾经发送给客服的凭证。Cursor强调,生产系统、客户代码仓库、当前实时推理请求、发布签名密钥和Cursor官方客户端更新链路没有受到影响。
这条路径说明,历史数据并不等于低风险数据。只要一段Agent轨迹中残留云服务令牌、仓库凭证、环境变量值或内部地址,它就可能从“训练素材”变成攻击者的凭证目录。
| 环节 | 攻击者动作 | 影响范围 | 关键风险 | |---|---|---:|---| | 第三方密钥泄露 | 获取Cursor签发给Fireworks的访问密钥 | 一个用于历史分析的只读存储桶 | 第三方权限成为进入数据层的入口 | | Agent轨迹暴露 | 复制部分未开启隐私模式的历史轨迹 | 不到0.05%的用户 | 提示词、执行摘要与上下文可能暴露 | | 凭证残留 | 从少量未脱敏轨迹中取得凭证 | 不到0.01%的客户 | 数据泄露升级为横向移动能力 | | SaaS工具入侵 | 访问支持、指标及部分非生产系统 | Cursor部分内部工具 | 获取更多内部凭证和业务信息 | | 扩展缓存篡改 | 注入Claude Code恶意构建 | 最多5000名用户可能收到 | 供应链攻击直接抵达开发者终端 | | 终端持久化 | 写入SSH公钥并尝试建立反向隧道 | Windows、macOS设备 | 卸载扩展后恶意组件仍可能存在 |
为什么多数设备未必被远程接管
恶意扩展能够执行代码,不代表攻击者在每台设备上都成功获得了远程控制权。
Cursor和安全研究人员对恶意构建的分析显示,扩展会尝试启用本地SSH服务并建立反向SSH隧道,但相关操作在多数Windows和macOS设备上需要管理员权限。正常情况下,Cursor不会以管理员身份运行,再加上恶意代码本身存在错误,建立完整远程访问链路的关键步骤在大多数设备上可能失败。
攻击者使用的服务器也已经被云服务商关停,因此此前配置的反向连接和设备信息回传地址目前已无法正常工作。Cursor称,没有证据显示扩展市场中的其他扩展遭到篡改。
但“后门没有成功连上”不能被理解为“设备没有受到影响”。恶意扩展仍可能完成设备信息收集、写入SSH公钥、生成脚本和配置启动项等动作,这些文件独立于扩展本体存在,不会因为用户在编辑器中点击卸载而自动消失。
这也是Cursor反复强调“仅卸载扩展不足以清除风险”的原因。对企业安全团队而言,正确处理方式不是让开发者更新到2.1.314后继续工作,而是把涉事设备视为可能被植入持久化组件的终端进行调查。
Agent为什么让扩展攻击更危险
软件供应链攻击是攻击者通过开发工具、软件包、更新渠道或第三方依赖,将恶意代码送入目标环境的攻击方式。
传统编辑器扩展已经具备读取文件、访问网络和调用部分系统能力,但AI编程Agent进一步放大了权限边界。一个典型的编程Agent不仅能读取整个项目,还可能执行终端命令、检查环境变量、连接Git仓库、调用MCP服务器,甚至使用开发者已有的云端身份完成部署。
换句话说,恶意浏览器插件可能偷走网页数据,而恶意编程Agent扩展面对的是源代码、SSH配置、云服务凭证、包管理器令牌、生产数据库地址和CI/CD发布权限。开发者电脑本身就是企业软件供应链中权限最密集的节点之一。
这次攻击并没有利用模型的推理漏洞,也没有通过提示词诱导Agent执行危险操作。攻击者采用的是更传统、也更稳定的路线:控制扩展分发渠道,让恶意JavaScript在扩展模块加载时自动执行。
传统恶意软件与Agent生态的结合,才是这起事件最值得警惕的地方。攻击者不需要说服模型,也不需要等待开发者批准某条命令,只需要让平台把被篡改的扩展当成正常更新发下去。
隐私模式不只是“不训练”开关
隐私模式在这次事件中体现出了直接的安全价值。Cursor明确表示,开启Privacy Mode的用户,其提示词和代码没有出现在此次泄露的历史Agent轨迹中。
未开启隐私模式的用户也并非全部受影响。Cursor称,遭访问的Agent链路数据涉及不到0.05%的用户,且相关用户均已收到直接通知;如果用户没有收到针对轨迹数据的通知,其数据不在这批被访问的记录中。
这意味着,企业在评估AI编程工具时,不能只看厂商是否宣称“不使用客户数据训练”,还要追问更细的工程问题:轨迹是否落盘、保存多久、是否包含工具输入输出、凭证如何脱敏、哪些第三方能够访问,以及训练和离线分析数据是否与生产系统隔离。
Agent轨迹的风险甚至可能高于普通聊天记录。一条完整轨迹往往能还原开发者正在修改哪个仓库、执行过哪些命令、访问过哪些服务,以及失败时输出了什么错误。多个看似无害的上下文片段组合起来,就可能形成内部基础设施地图。
Cursor的响应不慢,但防线失效不止一层
Cursor在发现异常后停用了泄露密钥,开始轮换内部凭证,并在调查过程中临时关闭部分内部和产品服务。恶意扩展被发现后,Cursor下架涉事版本、暂停扩展市场、重建市场存储,并推动云服务商关停攻击者服务器。
Cursor还将推理流量迁离Fireworks,切断Fireworks对共享数据集的访问,轮换已发现的泄露凭证,并预防性更换内部系统正在使用的其他凭证。公司表示,已经扩展密钥扫描、限制服务商网络访问范围,重新部署生产基础设施,并引入外部取证团队。
这些处置动作总体合格,尤其是直接通知受影响客户、提供具体受影响密钥清单,比只发一篇模糊公告更有用。但从结果看,Cursor此前至少有三层控制同时失效:第三方密钥管理不足、历史轨迹脱敏不完整、扩展缓存缺少足以阻止未授权构建上线的完整性验证。
最关键的问题是,扩展市场为什么能够接受一个没有经过可信签名验证的缓存对象。即使攻击者拿到了内部凭证,平台仍应通过包哈希、发布者签名、来源证明和不可变构建记录,阻止缓存内容与上游正式版本不一致。
“我们审核了其他扩展,未发现问题”只能说明影响范围暂时受控,不能代替对分发架构的解释。对于企业客户而言,真正需要看到的是平台未来如何保证扩展来源、构建内容和更新过程三者可验证,而不是只依赖账号权限和内部密钥。
企业和开发者现在应该做什么
曾在10月29日通过Cursor扩展市场安装或自动更新Claude Code扩展的用户,应优先检查版本是否为2.1.312或2.1.313。受影响版本主要涉及Windows与macOS,Cursor建议更新至安全版本,并按照官方公告检查持久化文件和SSH配置。
企业安全团队应将排查范围扩展到端点和身份系统,而不是只看扩展列表。Cursor公布的关键标记包括SSH授权密钥中的svc-telemetry注释,以及与恶意载荷相关的文件、启动项、计划任务、进程和网络连接记录。
建议的处理顺序包括:
- 定位设备:根据扩展安装日志、版本记录和10月29日的更新时间窗口识别可能受到影响的终端。
- 隔离调查:对发现恶意公钥、持久化脚本或异常进程的设备进行隔离,保留端点和网络证据。
- 清除持久化:移除攻击者SSH公钥、启动项、计划任务、反向隧道进程和残留脚本,必要时重装设备。
- 轮换凭证:从可信设备轮换涉事终端能够接触的Git、云平台、数据库、包管理器和CI/CD凭证,并撤销现有会话。
- 检查横向移动:审计代码仓库、云控制台和内部SaaS工具在事发窗口后的异常登录与权限变更。
个人开发者如果没有安装过对应版本,也没有收到Cursor的直接通知,通常不属于已确认的受影响范围。但这次事件仍值得所有使用AI编程工具的人重新检查扩展自动更新策略,以及开发环境中长期存在的高权限令牌。
AI编程工具的竞争已经变了
Cursor事件说明,AI编程产品的核心竞争已经从模型能力扩展到了开发环境治理能力。
模型跑分、代码生成速度和上下文窗口决定用户愿不愿意尝试产品,扩展签名、权限隔离、轨迹脱敏和事件响应则决定企业敢不敢把产品接入真实仓库。前者带来增长,后者决定平台能否进入大规模生产环境。
未来的企业级AI编程平台至少需要提供四类基础能力:可验证的扩展供应链、默认最小化的数据保留、按任务隔离的Agent权限,以及能够追踪每一次文件和命令操作的审计日志。只在安装时弹出一张权限列表,已经无法覆盖Agent长期运行、自动调用工具和跨系统执行的风险。
这起事件目前已经受控,最多5000名潜在用户也不足以证明Cursor的业务受到实质性冲击。但它暴露出的攻击面不会随着服务器关停而消失:当Agent开始代表开发者行动,任何保存Agent上下文、分发Agent组件或继承开发者权限的系统,都会成为新的高价值目标。
Cursor需要修复的不只是一个恶意扩展,而是用户对整条Agent执行链的信任。
参考来源
- Cursor披露安全事件调查结果,恶意Claude Code扩展最多波及5000用户:整理Cursor于11月13日发布的调查结果,包括Agent轨迹、凭证泄露比例与后续处置。
- 11小时影响约5000名开发者:Cursor官方商城出现恶意Claude Code插件:介绍恶意扩展的分发窗口、受影响版本及初步攻击行为。



