返回
快讯

Agentjacking 诱使 AI 编码代理执行恶意代码

研究人员披露一种名为 Agentjacking 的新型攻击,可借助 Sentry 的伪造错误事件,诱使 Claude Code、Cursor 等 AI 编码代理在开发者机器上运行攻击者控制的代码。攻击可能泄露环境变量、Git 凭证、私有仓库 URL 和开发者身份。建议限制对外部 MCP 数据源的信任,并注意 Sentry 已启用全局内容过滤。

网络安全研究人员表示,他们描述了一种新型攻击,可以诱使人工智能(AI)编码代理在开发者机器上运行任意代码。

Tenet Security 将其称为 Agentjacking,该攻击可通过使用 Sentry——一个开源错误跟踪和性能监控平台——构造的伪造错误报告来触发。

“这次攻击利用了一个关键的架构缺陷,位于 Sentry 的事件摄取(它接受任何拥有 DSN 的人提交的任意 payload)与 Sentry MCP server(它会将这些数据作为可信系统输出返回给 AI 代理)之间的交叉点,”安全研究人员 Ron Bobrov、Barak Sternberg 和 Nevo Poran 表示。

其思路是将精心构造的输入注入 Sentry 错误事件中,而后这些内容会被 Claude Code 和 Cursor 等编码代理解读为合法的诊断修复步骤,并执行攻击者控制的代码。

这类攻击成功后,可能暴露敏感数据,包括 environment variables、Git credentials、private repository URLs 和 developer identities,而且无需依赖钓鱼或事先入侵服务器等手段。

问题根源在于通过 Model Context Protocol(MCP)连接外部服务时所带来的隐含信任。由于 AI agent 无法区分某个错误事件究竟是真实应用崩溃生成的,还是由攻击者注入的,因此当 agent 处理返回结果时,就会形成一条通往 arbitrary code execution 的路径。

Tenet 设计的攻击链如下 -

攻击者找到目标的 Sentry Data Source Name(DSN),这是一种公开、仅写入的凭证,嵌在网站中。

攻击者使用该 DSN,通过 POST request 向 Sentry 的 ingest endpoint 发送恶意错误事件。

被注入的事件在 message 字段和 context key names 中包含“精心格式化的 markdown”。当 Sentry MCP server 将该事件返回给 AI agent 时,它会被渲染为结构化内容,在视觉上与 Sentry 的 system template 完全一致。

当开发者要求其 AI 编码代理“fix unresolved Sentry issues”(或类似提示)时,agent 会通过 MCP 查询 Sentry,并接收到恶意事件。

agent 执行恶意代码,而这段代码会以开发者的完整权限运行。

“攻击者从未接触受害者的基础设施,”研究人员解释说。“恶意指令伪装成普通错误中的合法‘Resolution’到达。当开发者要求 AI agent 修复 Sentry 问题时,agent 会把攻击者的命令当作可信指导来读取,并执行它——使用的是开发者自己的权限,在开发者自己的机器上。”

Agentjacking 的突出之处在于,它针对的是开发者所信任并使用的 AI agent,并以 Sentry DSN 作为起点。此外,markdown injection 被渲染后,agent 无法将其与合法的 Sentry 指引区分开来。

这家 AI 网络安全公司表示,它发现至少有 2,388 家组织暴露在外,且拥有可注入的有效 DSN;同时,它在受控环境中针对 100 多家组织测试了该攻击,并在一些最广泛使用的 AI 编码助手上,对注入错误实现了 85% 的利用成功率。

就 Sentry 而言,该公司已承认此问题,但选择不修复,称这在技术上“not defensible”。不过,据称该公司已启用一个全球内容过滤器,用于阻止一种“specific payload string”。

“随着企业竞相部署 AI 编码代理,这项研究证明,代理本身现在就是攻击面——攻击者只需利用这些组织公开发布的自身数据,就能反过来对付信任它们的开发者,”Tenet 表示。“这次攻击绕过了 EDR、WAF、IAM、VPN、Cloudflare 和防火墙——因为没有任何恶意内容可供检测。链条中的每一步都是被授权的。”