网络安全研究人员披露了一种名为Agentjacking的新型攻击手法。该攻击能够利用Sentry错误跟踪平台注入恶意数据,诱使人工智能编程助手(如Claude Code和Cursor)在开发者本地机器上执行攻击者控制的任意代码。这项研究由Tenet Security的安全研究人员Ron Bobrov、Barak Sternberg和Nevo Poran共同完成。
攻击原理:信任链的致命缺陷
Agentjacking攻击的核心在于Sentry事件摄取管道与其Model Context Protocol(MCP)集成之间的架构缺陷。该缺陷使得原本被AI编程助手视为可信系统输出的错误数据,可以被攻击者完全控制。
攻击的入口点是Sentry的公开数据源名称(DSN)。这是一种只写凭证,通常被嵌入在前端JavaScript代码中,并在整个互联网上被索引。Tenet的研究人员通过被动侦察方法(包括 avaScript检查、Censys搜索、CDN加载器分析及代码搜索),识别出2388个拥有可注入DSN的组织,其中71个位列Tranco全球排名前100万网站。
攻击链完整流程
攻击者只需获得目标的 Sentry DSN,即可向 Sentry 的数据摄取 API 提交任意错误事件,控制消息、标签、上下文、额外数据、面包屑、用户信息、堆栈跟踪和指纹等字段。Sentry 会将这些伪造事件视为合法的应用程序错误,从而使攻击者能够将完全受控的内容注入监控工作流中。
Agentjacking 的完整攻击链如下:
信息收集:攻击者找到目标公开的 Sentry DSN(嵌入在网站中的只写凭证)。
注入恶意载荷:攻击者通过 POST 请求,使用该 DSN 向 Sentry 的摄取端点发送恶意错误事件。该事件在
message字段和上下文键名中包含精心格式化的 Markdown 内容。这些内容可以伪装成带有标题、代码块和表格的合法 Sentry“解决方案(Resolution)”部分,使其与真实的补救指导毫无二致。等待开发者触发:当开发者向其 AI 编程助手发出“修复未解决的 Sentry 问题”或类似指令时,AI 会通过 MCP 查询 Sentry,并获取上述被精心构造的错误事件。
恶意指令被执行:AI 助手将攻击者的命令视为合法的诊断步骤(而非不可信输入),并以开发者的完整本地权限执行该命令。
Tenet 的概念验证载荷指示 AI 助手执行一个 npx 命令,从公共 npm 仓库拉取一个受控的验证包并在本地运行。在受控实验中,该验证包通过探测环境变量、检查配置文件(如 ~/.aws/config 和 ~/.docker/config.json)的大小以及检查网络接口,确认了敏感信息的存在,并将范围化的暴露元数据通过明确的“ResponsibleDisclosure [SECURITY SCAN]”标头发送回 Tenet 的信标服务器。
攻击的隐蔽性与危害
Agentjacking 的危险之处在于:攻击链中的每一步都是“授权”的,对传统防御手段而言看起来完全正常。Sentry 按设计使用;DSN 根据策略是公开的;npm 包通过标准渠道获取;AI 助手执行的命令是其正常工作流程的一部分。因此,端点检测(EDR)、Web 应用防火墙(WAF)、身份与访问管理(IAM)策略、VPN、Cloudflare 以及传统防火墙均无法检测到明显的策略违规——因为可观察的行为完全符合“开发者批准的工具在可信的可观测性平台上运行批准的命令”。
Tenet 将此描述为“授权意图链(Authorized Intent Chain)”,并指出现有的安全模型专注于阻止未授权操作或恶意二进制文件,对于完全通过可信上下文和合法工具输出进行的攻击缺乏有效的可见性。
实际攻击成果
Tenet 报告称,在受控活动中已确认超过100起真实代理执行案例,涉及一家财富500强云企业、一家价值数十亿美元的托管服务提供商、科学软件公司、初创公司以及个人开发者。该攻击在主流AI编程助手中的总体成功率达到约85%。
行业回应与修复现状
Tenet于2026年6月3日将其发现披露给Sentry。Sentry承认了该问题,但据称其将此类攻击定性为“在摄取层技术上无法防御”,因此选择不修复根本缺陷,而是引入了一个全局内容过滤器,用于屏蔽“特定的载荷字符串”。Sentry建议将缓解措施放在模型侧的中间件上。
系统性风险警示
该研究强调,这并非单一厂商的漏洞,而是一个系统性的 AI 代理问题。任何将外部影响数据返回给代理的 MCP 集成都存在类似风险,因为这些数据可能包含攻击者控制隐藏指令。当前的 AI 模型无法可靠地区分描述性数据和嵌入式指令,尤其是当这些指令出现在看似可信的日志、指标或错误消息中时。
对防御者的建议
Agentjacking 标志着 AI 供应链风险进入一个新时代:AI 代理本身已成为主要的攻击面。安全团队需要重新评估:
其 AI 代理与哪些工具进行交互,这些工具是否接受不可信或匿名的输入。
现有运行时控制措施能否防止注入内容自动转化为开发者端点上的代码执行。
“随着企业争相部署 AI 编程助手,这项研究证明代理本身现在就是攻击面——它们被用来对付信任它们的开发者,而攻击者仅使用了那些组织自己发布的公开数据。”—— Tenet Security
夜雨聆风