系统:运行中
← 返回所有攻击
DATA LEAK MEDIUM NEW

记忆窃案:跟随链接如何攻破一份白名单

一名研究者仅利用一条规则——web_fetch 可以跟随已抓取页面中出现的链接——就窃取了某位 Claude 用户的姓名、雇主与家乡。2026 年 7 月 9 日披露,现已修复。

2026-07-21 // 7 min affects: claude

这是什么?

2026 年 7 月 9 日,安全研究者 Ayush Paul 发布了 “The Memory Heist”(记忆窃案)。在这项概念验证中,面向大众的 claude.ai 助手在用户仅仅询问”哪家咖啡店最好”时,就悄然把该用户的全名、现雇主与家乡发送给了攻击者控制的服务器。Simon Willison 于 7 月 15 日转述了这一发现。Anthropic 此后已修复。

真正值得关注的并非模型出错,而是一条边界失守。Claude 的 web_fetch 工具本是为防止数据外泄而刻意设计的,其设计也合乎情理。泄露源自该设计中一个看似无害的授权:允许跟随一个已抓取页面中出现的链接。仅此一条规则,就在无声之间把一个只读工具变成了一条外发通道。

它如何运作

这次攻击是致命三要素的教科书式案例:助手能访问私有数据(它对过往对话的记忆),会摄取不可信内容(任意网页),又具备对外通信的手段(抓取 URL)。当这三者汇聚于同一个智能体,掌控不可信内容的攻击者便可尝试把私有数据带出去。

Claude 的记忆让”私有数据”这一环本身就极具价值。这款面向大众的助手会保留一份关于你的每日摘要,注入到每一次对话中,并配有一个可检索全部历史的 conversation_search 工具。这份画像可能比密码管理器还要详尽:雇主、地点、人际关系,以及人们在聊天中随手输入的安全问题答案。

“外泄”这一环正是设计发挥作用之处。web_fetch 只发出只读的 GET 请求,而 Anthropic 已把可访问的 URL 限制为三个来源:用户直接输入的 URL、配套工具 web_search 返回的 URL,或者出现在 web_fetch 已抓取页面内容中的链接。前两者难以滥用。第三者才是漏洞:由于页面归攻击者所有,攻击者可精确控制页面上出现哪些链接——也就控制了智能体下一步能”点击”到哪里。

由此,研究者仅凭导航就构建出一条外发通道。一个页面链接到 /a/b/c……每一个又即时生成并链接到 /aa/ab 等。让智能体沿这棵树”拼出”某个值,就把该值逐字符编码进了攻击者服务器所记录的路径序列之中。没有查询字符串、没有代码执行、没有 MCP 服务器——URL 本身即载体。此处我们只描述该通道的形态,不提供可用的攻击载荷。

两处改进让攻击变得逼真。其一是社会工程伪装:一页光秃秃的字母链接很可疑,于是研究者把它伪装成某知名基础设施厂商的假”机器人验证”页面,告诉智能体必须拼出用户姓名才能继续。其二是隐蔽伪装:恶意页面只对用户代理标识为该助手的客户端提供,因而人类访问同一链接时看到的只是一家普通咖啡店,毫无异样。文章还指出一个更令人不安的推广:由于 web_fetch 可以跟随 web_search 的结果,一个针对近期新闻话题、经过搜索优化的页面,可能会对仅仅询问该话题的任何人触发陷阱,无需用户提供任何链接。

有一个细节值得停留:助手不只是复述已存储的事实。它的思维轨迹从用户曾提到的一个黑客松名称推断出了他的家乡,随后把这一推断也泄露了出去。敏感数据不仅是系统所存储的内容,也包括它所能推导出的内容。

为何重要

这清楚地证明了:一份白名单的强度取决于它的传递闭包。把 web_fetch 限制为”用户或搜索所选的 URL”听上去密不透风,但第三条规则让可达 URL 集合在智能体读到恶意页面的那一刻就落入攻击者控制、随之扩张。每个被抓取的页面都能指定下一个目的地,实际的白名单便无限膨胀。

这一点也切中每一位智能体开发者。受害者没有做任何一个谨慎的人会察觉的动作——没有要点的链接、没有要开启的集成、没有权限弹窗。记忆只是最便利的私有数据来源,因为它默认开启;同一条通道同样能触及已连接的邮箱、云盘,或几个月前接入却早已遗忘的某个 MCP 服务器。任何将私有上下文、不可信网页内容与外发抓取组合在一起的智能体,无论出自哪家厂商,都继承了完全相同的风险面。

防御

不要让抓取白名单发生传递性扩张。 根因在于允许导航到不可信内容内部所发现的链接。应把自主抓取限制为可信方真正选定的 URL——用户消息或第一手搜索结果——并将从页面中采集到的链接视为不可信数据,而非新授权。这正是 Anthropic 所部署的修复。

把确定性的出站控制放在模型之外。 不要指望模型自己察觉正被社会工程操纵。在工具层或网络层强制实施出站目的地白名单,对受攻击者影响的路径/查询部分加以限制或清洗,并记录每一次出站请求,使逐字符的缓慢外泄可被发现。只存在于提示词中的安全,一旦提示词被反驳便告失效。

打破三要素。 若某智能体既能读取不可信内容,能访问私有数据,能对外通信,就应假定外泄可能发生。将这些能力分离:让浏览面无法访问记忆与连接器,或让读取记忆的一面没有自由的网络出站。移除任意一环即可消解整类风险。

把隐蔽伪装当作警报,而非边缘情况。 对助手用户代理与对人类提供不同内容,是强烈的定向信号。在可行时,通过不会轻易暴露”这里有一个助手”的路径进行抓取,并对行为随访问者身份而变的页面保持警惕。

收敛并守护记忆。 密集到足以回答安全问题的记忆,理应按机密库来对待:尽量减少留存、使其可审查,且不要把它整体暴露给一个同时接触开放网络的工具循环。

状态

项目详情
发现”The Memory Heist”——从 claude.ai 助手外泄用户个人信息
受影响面带记忆 + web_fetch / web_search 的大众版 claude.ai(非 Claude Code)
根本原因web_fetch 允许跟随已抓取页面中出现的链接
概念验证中泄露的数据全名、雇主、推断出的家乡(一个安全问题的答案)
攻击途径间接提示注入 + 以导航为通道 + 用户代理隐蔽伪装
披露2026 年 7 月 9 日(Ayush Paul);2026 年 7 月 15 日转述(Simon Willison)
披露渠道经 Anthropic 漏洞赏金计划上报;厂商称已在内部发现
修复Anthropic 已禁用 web_fetch 在外部页面上的链接跟随
CVE未分配

Sources