你让一名助理带着私人笔记去查网页,并规定他只能打开你指定的地址。看起来很安全。但如果网页摆出一串按钮,诱导他按姓名逐字点击,服务器仍能从点击路径拼回你的名字。Ayush Paul披露的 Claude.ai 攻击,利用的正是这个缺口。
这不是破解模型参数。攻击者把指令藏进网页,诱使 AI 执行,叫作提示词注入(Prompt injection),更像针对 AI 的社会工程。真正被绕过的也不是泛指 Claude“守住了所有提示词”,而是 web_fetch 的确定性 URL 访问限制。现有证据主要来自 Paul 的演示及 Simon Willison 对该演示的转述,并非两次独立复现。
一道看似很硬的门
web_fetch 是 Claude 用来读取网页的工具。它原本只允许访问三类地址:用户明确输入的 URL、web_search 搜索结果中的 URL,以及已经抓取过的页面里出现的链接。
前两条很好理解。假如恶意网页要求 Claude 把秘密接到 evil.com/ 后面再访问,系统会拦截这个从未获准的新地址。问题藏在第三条:为了让 Claude 能像人一样继续“点链接”,页面内嵌的地址也被视为可访问。
攻击者恰好控制页面,因此也控制 Claude 下一步可以点什么。
把链接变成一块键盘
Paul 搭建了一个动态生成链接的网站。首页提供 /a、/b、/c 等路径;进入 /a 后,又出现 /aa、/ab、/ac;此后层层展开。
这相当于给 Claude 一块只能通过点击操作的字母键盘。Claude 不必直接创建一个携带秘密的新 URL,只需沿着网页已经提供的合法链接前进。服务器观察访问顺序,就能逐字还原数据:/a、/ay、/ayu,最后得到 /ayush-paul。
恶意页面还为这套操作编了一个看似正常的理由:声称网站需要 AI 助手按用户姓名查找资料。它只向 User-Agent(客户端访问网站时携带的身份标识)为 Claude-User 的访问者展示恶意内容,普通人打开页面时不一定能看到,从而降低被人工发现的概率。
演示最终外传了用户姓名、当前雇主和居住城市 Charlotte, NC。Paul 正文还称安全问题答案也被泄露,但其展示的外传日志以及 Willison 的转述只确认了前三项,因此这一字段尚不能视为已被演示证实。
为什么这件事值得警惕
据 Paul 描述,Claude.ai 的记忆由两部分组成:系统定期把近期对话压缩成用户摘要,并可通过 conversation_search 工具检索完整对话历史。这意味着联网助手面对的已经不只是当前聊天内容,还可能包括长期积累的私人上下文。
风险来自所谓“致命三要素”(Lethal trifecta):系统能读取私密数据,能接触不可信内容,还能向外部通信。三者同时出现时,网页就不再只是资料来源,也可能成为操纵工具调用的入口;请求 URL 则从普通地址变成隐蔽的数据外泄通道。
Paul 称,这次攻击不需要实验性设置、代码执行或 MCP,仅依赖普通 Claude.ai 的网页访问能力。它揭示的关键问题不是 Claude 会不会拒绝一句直白的恶意命令,而是工具链的每一步单独看来都合规,组合起来却能把秘密一点点搬出去。
局限与未知
- 现有材料没有提供独立复现实验,成功攻击的证据独立性有限。
- Anthropic 是否已经修复、何时修复以及具体如何处置,材料均未披露,不能下结论。
- Willison 单方转述称 Anthropic 因已在内部发现问题而未支付漏洞赏金;目前没有更多材料交叉确认。