系统:运行中
← 返回所有攻击
INDIRECT INJECTION CRITICAL NEW

Agentjacking:伪造 Sentry 报错经 MCP 劫持 AI 编程智能体

Tenet Security 2026 年 6 月的研究表明,攻击者可注入伪造的 Sentry 报错,编程智能体经 MCP 读取后执行,在 2388 个暴露组织中以 85% 的成功率窃取凭据。

2026-06-16 // 7 min affects: claude-code, cursor, codex, sentry-mcp

这是什么?

2026 年 6 月 9 日,Tenet Security 的 Threat Labs 发布研究,描述了一种名为 “agentjacking”(智能体劫持) 的攻击:通过在智能体所信任的服务中植入伪造的报错记录,来劫持 AI 编程智能体。云安全联盟(CSA)于 2026 年 6 月 12 日发布了佐证性研究简报。该攻击把两项单独看都合理的设计决策串联起来——Sentry 开放、无需认证的事件摄取,以及编程智能体对经由模型上下文协议(MCP)暴露的工具输出的隐式信任——从而打通了一条从”互联网上任何人”到”开发者机器上任意代码执行”的路径。Tenet 报告对 Claude Code、Cursor 和 Codex 的成功率为 85%,并识别出至少 2388 个凭据可被注入的组织,其中 71 个位于 Tranco 前一百万。本文仅报告已公开的发现与防御措施,不包含任何攻击载荷或操作步骤。

工作原理

Sentry 是一个被广泛使用的错误跟踪平台。为接收来自浏览器和移动应用的崩溃报告,它会签发一个 DSN——一种只写的公开凭据,Sentry 明确将其文档化为可安全嵌入客户端 JavaScript。按设计,摄取端点不做认证:任何持有 DSN 的人都可以 POST 一个事件,该事件会和真实崩溃一起进入项目的问题队列。

攻击正是利用了这一特性。攻击者发现一个 DSN(它存在于页面源码、公开的 GitHub 仓库或扫描索引中),随后 POST 一个精心构造的事件,其字段以 markdown 格式编写——一个伪造的 ## Resolution 小节。当 Sentry 的 MCP 服务器将其返回时,它的呈现与 Sentry 自身的诊断模板完全一致。当开发者随后让其智能体”修复未解决的 Sentry 报错”时,智能体经 MCP 查询 Sentry,收到被注入的事件,且无法区分攻击者撰写的文本与真实的应用报错。它会照做被植入的指令——以开发者本人的权限执行形如 npx [REDACTED-PACKAGE] --diagnose 的命令。Tenet 的演示包是无害的,并自我标注为安全扫描;真实的包则会窃取环境变量、AWS 密钥、GitHub/GitLab 令牌、npm 与 Docker 凭据,以及 Kubernetes 令牌。

根本缺陷正是间接提示注入多年来反复揭示的:模型在同一个 token 流中接收数据与指令,没有内建手段将二者区分开。Tenet 指出,即使通过系统提示和 skills 明确指示智能体忽略不可信数据,载荷仍被执行——这无法靠改进提示词来修复。

为何重要

这里的新意不在于利用原语,而在于规模与盲区。在受测配置中,该攻击绕过了 EDR、WAF、IAM、VPN 与防火墙,因为每一步都是已授权的:一个受信任的进程(智能体)用开发者的凭据执行一条正常的包管理器命令。没有投放二进制文件,没有违反策略,没有越过任何异常阈值。Tenet 称之为”Authorized Intent Chain(授权意图链)“,而传统控制是为检测未授权行为而设计的——而这里没有任何未授权行为。

更重要的一点是其普遍性。Sentry 并非特别脆弱——它只是一个例子。任何经 MCP 连接、会暴露可被外部控制内容的数据源——问题跟踪器、工单系统、支持队列、代码评审评论、日志聚合器——都属于同一注入类别。只审计 MCP 服务器二进制而不审视这些服务器所暴露的数据,只覆盖了部分攻击面。Unit 42 与 Elastic 在 2025–2026 年间已记录了相邻的 MCP 向量(sampling 滥用、隐蔽工具调用、大量受测服务器中的命令注入);agentjacking 正是其经验性印证。

防御措施

执行前要求人工确认。对任何连接到会暴露外部内容的 MCP 服务器的智能体,禁用自主(auto-run)模式,使包安装和 shell 命令需要明确批准。同时配合开发者意识培训,因为被注入的事件正是为利用”确认疲劳”而设计的。

把 MCP 数据当作不可信输入。清点你的智能体连接了哪些 MCP 服务器,以及哪些会返回可被外部影响的数据。若 Sentry 的 MCP 集成在运维上并非必需,则将其禁用;若确有必要,则限制智能体可对其输出执行的操作。

缩小凭据的爆炸半径。在隔离的最小权限环境中运行智能体,限制文件访问、限制环境变量可见性、约束出站网络——并明确封锁云元数据端点。用短期、范围受限的密钥替换开发环境中的长期令牌。

切断入口点。审计 DSN 暴露情况;轮换在公开打包文件、仓库或扫描索引中发现的 DSN;并考虑通过服务端中继来转发客户端上报,使 DSN 永远不出现在浏览器代码中。

治理与红队演练。以依赖审查的严谨程度来对待 MCP 服务器授权,并将工具投毒和经 MCP 传递的注入场景纳入智能体红队演练——而不仅仅是服务器二进制被攻陷的情形。

状态

这是以防御为导向、已公开发表的研究,而非产品 CVE。Tenet 于 2026 年 6 月 3 日向 Sentry 披露;Sentry 当天即予以确认,但拒绝从根源修复,称该类问题在平台层面**“技术上无法防御”**,转而部署了针对特定载荷字符串的内容过滤器。该行为已在 Claude Code、Cursor 和 Codex 上得到验证;所有测试仅使用 Sentry 的公开摄取 API,载荷均自我标注为 Tenet 扫描,捕获的数据在源头脱敏并删除。由于平台所有方认为根源修复不可行,实际的控制点在于智能体的运行时——即它决定采取行动的那一刻。各来源发布日期:Tenet Security,2026 年 6 月 9 日;CSA Labs,2026 年 6 月 12 日;The Hacker News 报道,2026 年 6 月。

本文涵盖以防御为导向、已公开发表的安全研究。如果你的开发者在运行连接 MCP 集成的 AI 编程智能体,请把每一个可被外部影响的数据源都视为潜在的注入路径,并在智能体执行命令前要求人工批准。

Sources