「欤冰说」
你的 AI 编程助手正在帮你修 Bug?别高兴太早。安全公司 Tenet Security 刚刚披露了一种全新攻击——「Agentjacking」:攻击者只需注入一条伪造的错误报告,就能骗过 Claude Code、Cursor、Codex 三大 AI 编程工具,以你本人的权限执行恶意代码。测试成功率 85%,2388 家组织暴露,超 100 家公司的 AI 助手已经中招——其中包括一家市值 2500 亿美元的 Fortune 100 科技巨头。最让人不安的是,Sentry 的回应是四个字:「无法防御」。

· · ·
你的 AI 助手,正在替黑客打工
故事得从一个开发者最普通的操作说起。
早上打开电脑,问 AI 编程助手:「帮我看看 Sentry 上有什么新报错。」助手去查了,回来说:找到一个 Bug,已经帮你修了。
看起来一切正常。
但这个「Bug」是假的。修复步骤也是假的。AI 助手刚刚执行的,是黑客写的恶意代码——用的是你本人的权限,读的是你的 AWS 密钥、GitHub Token、私有仓库地址。
你全程没有点任何确认按钮。你甚至不知道发生了什么。
这就是「Agentjacking」。
一个公开凭据,打开了整条攻击链
这个攻击的精妙之处在于:它没有利用任何传统意义上的「漏洞」。
整条攻击链只需要一个东西——Sentry 的 DSN(Data Source Name)。这是 Sentry 平台设计上就公开的凭据,嵌在每一个使用 Sentry 的网站前端 JavaScript 里。Sentry 官方文档明确说:DSN 是安全的,可以公开。
在 AI Agent 出现之前,这句话是对的。
但现在不对了。
攻击者拿到 DSN 后,只需要三步:
第一步,用 DSN 向 Sentry 发送一条伪造的错误事件——不需要任何额外认证,Sentry 会以 HTTP 200 正常接收。
第二步,在这条伪造事件里嵌入精心构造的 Markdown 内容,伪装成 Sentry 原生的「修复建议」格式。视觉上和 Sentry 自己的模板一模一样,包含一个npx @attacker-package --diagnose命令。
第三步,等开发者让 AI 助手查看 Sentry 错误。助手通过 MCP(Model Context Protocol)读取到这条事件,把伪造的修复指令当成合法的诊断步骤,直接执行。
没有钓鱼邮件。没有社会工程。没有任何人类操作失误。
AI 自己就把活干了。

85% 的 AI 编程工具,中招了
Tenet Security 不是在实验室里写论文。他们做了一场真枪实弹的验证。
通过被动侦察(Censys 索引、GitHub 代码搜索、CDN 加载器提取),他们找到了 2388 家暴露了可注入 DSN 的组织,其中 71 家排名 Tranco 全球前 100 万。
在受控测试中,超过 100 家组织的 AI 编程助手执行了注入的恶意指令。
成功率:85%。
中招的平台包括 Claude Code、Cursor、OpenAI Codex——市面上最主流的三大 AI 编程工具,一个没跑掉。
更可怕的是覆盖面。受影响的组织覆盖 30 多个国家,横跨金融、医疗、政府、教育、关键基础设施——甚至有一家云安全公司也在名单上。
最大的一条鱼:一家市值约 2500 亿美元的 Fortune 100 科技巨头。两台企业 Windows 设备上的 Claude Code 被接管,环境中存在云基础设施 Token 和 Git 凭据。

沙箱也救不了你
有人会说:我的 Agent 是跑在沙箱里的,应该没事吧?
Tenet 的测试结果给了一记闷棍。
一个运行在 CircleCI CI/CD 流水线中的 OpenAI Codex Agent,明确标注了CODEX_SANDBOX_NETWORK_DISABLED,网络被限制——但攻击载荷还是成功执行了。因为载荷不是通过网络传入的,而是通过 Agent 被「要求阅读」的数据传入的。
Windows WSL 环境?中招。macOS?中招。VS Code 插件形态的 Agent?中招。Google Cloud 容器?也中招。
Tenet 在报告中列出了四类以上的 AI Agent 家族,覆盖 macOS、Windows、WSL、容器和云环境。每一个被触达的环境里,都存在 AWS 密钥、GitHub OAuth Token、SSH Agent Socket 或下游服务凭据。
一个入口,整条链路。
Sentry 的回应:「在平台层面无法防御」
Tenet 在 6 月 3 日将发现报告给 Sentry,Sentry 当天就回复了——承认问题存在,但拒绝从根本上修复。
Sentry 安全团队的原话:「technically not defensible」(在技术上无法防御)。
他们做了一件事:在研究期间启用了一个全局内容过滤器,屏蔽了特定的载荷字符串——相当于在门上贴了一张写着「禁止入内」的纸条,但门没有上锁。
Sentry 的逻辑是:这不是我们的问题,应该由模型厂商在中间件层面解决。
Tenet 的回应直白得多:如果平台方认为这类攻击「在源头无法防御」,那唯一能拦截的地方就是 Agent 运行时——在它决定执行的那一刻。

这不是一个 Bug,是一整个时代的安全盲区
传统供应链攻击的逻辑是:攻陷真实的软件包(SolarWinds、CodeCov),或者用 typosquatting 骗开发者下载假包。
Agentjacking 的逻辑完全不同:攻击者不需要攻陷任何东西,也不需要骗任何人。他们只需要在 AI Agent 会读取的数据流里插入一条指令。Agent 会自己读取、自己执行、自己泄露——整个过程对开发者完全透明。
更关键的是,这个问题不只存在于 Sentry。
任何通过 MCP 连接的工具,只要返回的数据中包含外部可影响的内容,就有相同的风险。Slack 频道、Jira 工单、Notion 页面、邮件——每一个 AI Agent 读取数据的入口,都是潜在的指令注入点。
Tenet 甚至尝试了用 System Prompt 和详细的安全指令告诉 Agent「不要信任不受信的数据」——Agent 照样执行了载荷。
你没法用一句提示词修好一个架构级的问题。
· · ·
AI Agent 正在从「代码补全工具」进化成「拥有系统权限的自治实体」。它能读文件、跑命令、调 API、改代码。我们给了它钥匙,却忘了问一个问题:它读到的每一条信息,都值得信任吗?
Agentjacking 不是某一个产品的 Bug。它是整个 AI Agent 生态在「信任模型」上的第一道裂缝。
Agent 越强大,这道裂缝就越危险。
参考资料
—https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/
—https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html
—https://labs.cloudsecurityalliance.org/research/csa-research-note-agentjacking-mcp-sentry-injection-20260612/
—https://cybersecuritynews.com/agentjacking-attack-hijacks-ai-coding-agent/
—https://pinggy.io/blog/agentjacking_ai_coding_agents_sentry_mcp/
夜雨聆风