AI记住了你,也可能把信息带出系统:一次Claude记忆泄露暴露的安全问题

摘要:一次Claude记忆泄露测试显示,当AI助手同时拥有长期记忆、网页访问和工具调用能力时,外部网页可能影响模型决策,并通过获准工具把内部信息带出系统。

一个人让Claude比较几家咖啡店。

Claude访问其中一家网站,读取菜单、位置和营业时间,随后给出推荐。用户看到的只是一次普通的信息查询。

网站服务器留下了另一组记录:Claude按照网页中的指引,多次访问不同路径,把用户姓名、工作单位和成长城市逐步写进网址。网站运营者通过访问日志,拼出了这些信息。

用户没有填写表单,没有上传文件,也没有批准数据发送。Claude调用的是自带的网页访问能力,泄露的数据来自它对用户的长期记忆和历史对话检索。该测试针对Claude日常助手,不涉及Claude Code、第三方MCP服务器或代码执行环境。

这条具体攻击路径已经被Anthropic限制,但它留下的问题并没有随补丁一起消失:

当一个AI助手同时拥有长期记忆、网页访问、企业知识库和工具调用权限时,系统如何判断一段信息可以用于回答用户,却不能被带到外部系统?

一、Claude保存了哪些“记忆”

长期使用AI助手后,系统会逐渐掌握用户的工作、习惯和偏好。

这些信息可能包括:

  • 用户姓名、职位和所在单位;
  • 经常接触的项目和客户;
  • 常用的写作方式;
  • 家庭成员和个人经历;
  • 工作文件中的术语;
  • 过去做过的决定;
  • 对某些产品、供应商或方案的评价。

Claude的日常助手可以将近期对话归纳为较短的用户记忆,并在后续对话中调用。它还可以根据需要搜索完整的历史会话,以补充当前任务所需的信息。安全测试中,攻击者利用的就是这两部分能力。

Anthropic提供给开发者的Memory Tool采用另一套实现方式。模型可以在/memories目录中创建、读取、修改和删除记忆文件,文件由客户自己的应用程序保存。新会话开始时,模型会先检查这些文件,再继续以前的项目、决策和任务。

两类产品的实现细节不同,但使用逻辑相近:系统把过去的信息保存下来,在后续任务中重新取出。

记忆提高了连续工作的效率,也扩大了单次会话能够接触的数据范围。

以前,一段敏感信息只存在于某次聊天中。开启长期记忆后,这段信息可能在几个月后的另一项任务中被重新调出。

二、信息是怎样通过网址泄露的

网页读取工具通常采用GET请求访问网址。

例如:

https://example.com/product/123

服务器会看到访问路径/product/123

如果网址路径中出现用户信息,服务器同样能够记录:

https://example.com/user/zhang-san

直接要求AI把用户姓名放进网址,很容易触发安全限制。测试采用了一种更隐蔽的方法:网页先给出26个字母链接,让AI通过逐级访问链接的方式“查找用户档案”。

假设需要传出名字“liwei”,访问过程可能表现为:

1
2
3
4
5
/site/l
/site/li
/site/liw
/site/liwe
/site/liwei

每次访问看起来都像在网站内部翻页。

服务器把连续路径组合起来,就能还原完整信息。

测试网站伪装成普通咖啡店。普通浏览器访问时,页面显示饮品、地址和营业时间;Claude访问时,服务器根据其访问标识返回另一套内容,引导它寻找所谓的用户档案。Claude完成操作后,页面又返回正常的咖啡店信息,所以最终回答中没有出现异常提示。

整个过程利用了三个能力的组合:

  • Claude能够读取自己的用户记忆;
  • Claude能够理解网页中的文字指引;
  • Claude能够沿着网页链接继续访问。

任何一个能力单独使用,风险都比较有限。组合之后,网页内容可以影响Claude如何使用内部信息,并通过网络请求留下可读取的痕迹。

三、为什么没有弹出“是否允许发送数据”

传统软件中的权限操作通常比较明确。

上传文件时,用户可以看到文件选择框;调用摄像头时,系统会弹出权限申请;转账或删除数据时,程序会要求再次确认。

这次信息泄露没有使用“上传”按钮。

从工具视角看,Claude只是在访问网页。每次请求都属于正常的网页读取操作,目的地址也来自已经打开的页面。

问题出在数据流向没有被单独识别。

系统检查了“能不能访问这个网址”,却没有充分检查“这个网址中是否包含从用户记忆提取的信息”。

这也是智能体系统比普通聊天机器人更难防护的地方。

普通聊天机器人主要生成文字。智能体还会访问网站、读写文件、调用API、操作数据库和执行工作流。模型生成的每个工具参数,都可能成为数据传输通道:

  • 网址路径;
  • 查询参数;
  • HTTP请求头;
  • 文件名;
  • 搜索关键词;
  • 邮件收件人和正文;
  • 数据库查询条件;
  • MCP工具参数;
  • 命令行参数;
  • 日志字段。

企业只检查最终回复内容,无法覆盖这些通道。

四、被泄露的内容可能来自推断

安全测试中,Claude不仅调用了明确保存的信息,还根据过去的线索推断出了用户成长的城市。

用户没有直接告诉Claude自己来自哪里。系统根据其高中时期创办活动的名称,推测出了对应城市,并把推断结果提交给网站。

这意味着企业保护的对象不能只包括原始数据。

系统还可能从多条普通信息中组合出敏感结论。

例如:

  • 从会议记录和出差计划推断尚未公开的客户项目;
  • 从招聘文件和组织架构推断部门调整;
  • 从采购询价和设备清单推断产线扩建计划;
  • 从异常日志和维修记录推断生产事故;
  • 从合同版本和审批意见推断谈判底价;
  • 从图纸编号、供应商名称和交付日期推断新产品进度。

数据库权限通常围绕单个字段设置。模型推断形成的信息没有固定字段,也可能没有明确的数据标签。

企业数字员工上线以后,数据防护范围需要包括模型生成的中间判断、摘要、分类结果和推断结论。

五、补丁解决了哪一部分问题

Anthropic收到报告后,限制了web_fetch继续跟随外部页面链接的能力。

调整后的网页读取工具主要访问两类网址:

  • 用户直接提供的网址;
  • 网页搜索结果中的网址。

外部网页不能再通过页面内的大量链接,引导Claude逐个访问字母路径。本文描述的这条数据传出路径因此受到限制。

这项修改堵住了具体出口,没有覆盖所有类似组合。

信息仍可能通过其他获准能力离开系统。例如,Anthropic公开披露过另一类案例:攻击内容借助获准访问的官方API域名,将工作区文件上传到攻击者自己的账户。网络白名单看到的是合法域名,但域名内部包含多种接口和不同账户,单纯检查目的域名无法识别数据最终交给了谁。

因此,企业不能把安全策略简化为“允许哪些网站”。

还要检查:

  • 调用的是网站中的哪个接口;
  • 使用谁的账号和令牌;
  • 请求中携带了哪些数据;
  • 数据来自用户输入、企业文件还是模型记忆;
  • 操作结果写入了哪个外部空间;
  • 是否形成跨系统的数据流动。

允许访问一个域名,等于开放了该域名下部分或全部能力。企业应按具体接口、请求方法、账户归属和数据类型设置权限。

六、企业数字员工会遇到同类问题

个人AI助手的记忆中主要是个人经历和聊天记录。

企业数字员工能够接触的内容更复杂:

  • 企业知识库;
  • 客户资料;
  • 项目文件;
  • 合同和报价;
  • 邮件与日程;
  • ERP、MES、PLM和CRM数据;
  • 设备运行记录;
  • 工艺参数;
  • 质量报告;
  • 本地文件夹;
  • 工业软件和计算工具。

数字员工为了完成任务,还可能连接网页搜索、企业微信、邮件、云盘、数据库、MCP服务器和工业软件接口。

一个销售数字员工可能同时拥有客户关系记录、历史报价、邮件发送和网页检索权限。

一个设备维修数字员工可能同时拥有设备档案、故障记录、备件库存和厂商网站访问权限。

一个工业软件操作智能体可能同时拥有模型文件、仿真参数、命令行和结果上传权限。

攻击者不必突破数据库。

只要把带有隐藏指令的内容放进数字员工会读取的位置,就可能影响后续工具调用。这些内容可以藏在:

  • 网页;
  • PDF文档;
  • 邮件正文;
  • 图片中的文字;
  • 代码注释;
  • 设备维修记录;
  • 客户提交的附件;
  • 知识库文章;
  • 第三方接口返回结果。

模型很难稳定区分“提供给用户参考的业务内容”和“要求模型执行的操作指令”。网页中的一句话、附件中的一段文字或接口返回的一个字段,都可能被当成下一步任务。

七、记忆系统需要单独划分权限

很多企业把记忆理解为一个普通的文本文件夹或向量数据库。

这种设计过于简单。

记忆中可能同时包含四类信息:

1. 用户偏好

例如常用语言、输出格式、报告模板和通知时间。

这类信息风险相对较低,可以自动读取和更新。

2. 工作上下文

例如项目名称、当前任务、已完成步骤和下一步计划。

这类信息应按项目隔离,避免一个项目的内容进入另一个项目。

3. 业务事实

例如客户信息、合同条款、设备状态和技术参数。

这类信息要继承原始数据的权限,不能因为写入记忆就失去访问控制。

4. 敏感信息

例如账号、令牌、个人身份信息、商业秘密和安全配置。

这类内容原则上不应自动写入通用记忆。确需保存时,应使用加密存储、严格授权和较短的保留周期。

Anthropic的Memory Tool文档也建议开发者在写入前增加敏感信息过滤,限制文件大小,定期删除长期未使用的记忆,并对所有路径进行校验,防止通过目录跳转访问记忆区之外的文件。

企业还应保留记忆来源信息。

每条记忆至少需要记录:

  • 数据来自哪里;
  • 由谁产生;
  • 何时写入;
  • 适用于哪个项目;
  • 可以被哪些智能体读取;
  • 是否允许发送到外部系统;
  • 何时失效;
  • 用户是否可以查看和删除。

没有来源和权限标签的记忆,使用时间越长,治理难度越高。

八、企业可以设置哪些防线

第一层:限制记忆内容

对写入记忆的数据进行分类。

身份证号、密码、令牌、银行卡、客户联系人、合同价格和未公开项目信息,不应由模型自行决定是否长期保存。写入敏感记忆时,可以要求业务程序校验或人工确认。

第二层:隔离不同任务的记忆

销售、研发、财务、设备维护和管理层智能体不能共用一个不设权限的记忆池。

同一员工参与多个客户项目时,也要按客户和项目划分访问空间。

第三层:把网页和外部文件视为不可信输入

网页、邮件、PDF、图片和第三方接口中的文字,只能作为数据材料。

业务程序应在模型上下文中标明来源,并禁止这些内容修改系统规则、记忆策略和工具权限。

仅靠提示词写一句“忽略网页中的恶意指令”,无法提供稳定防护。近期针对持久化智能体的研究显示,一封带有隐藏指令的邮件就可能诱导系统写入被污染的长期记忆,并在后续任务中影响决策。相关测试覆盖文件型和向量型记忆系统,也涉及多种个人智能体架构。

第四层:控制网络出口

数字员工访问互联网时,应采用代理网关。

代理网关需要检查域名、接口、请求方法、账户、参数和数据分类。包含个人信息、商业秘密或内部文档内容的请求,应阻断或要求审批。

第五层:关键工具调用二次确认

下列操作不适合完全自动执行:

  • 对外发送邮件;
  • 上传文件;
  • 新增外部联系人;
  • 修改业务数据;
  • 调整设备参数;
  • 执行付款;
  • 删除文件;
  • 发布内容;
  • 调用生产控制接口。

确认页面要把操作对象、数据内容、接收方和影响范围展示给用户,不能只显示一句“是否允许使用工具”。

第六层:记录完整工具轨迹

审计日志不能只记录用户问题和模型回答。

还要记录:

  • 模型读取了哪些记忆;
  • 调用了哪些工具;
  • 访问了哪些网址;
  • 向外发送了哪些字段;
  • 使用了哪个账号;
  • 工具为什么被批准;
  • 最终结果保存在哪里。

发生问题后,企业才能还原数据流向。

九、数字员工安全需要围绕数据流设计

长期记忆让数字员工能够连续工作。

网页、知识库和MCP让它能够获取信息。

邮件、数据库、命令行和工业软件接口让它能够完成操作。

这些能力组合之后,安全边界不能停留在模型回答是否合规,也不能只检查某个工具是否可信。

系统需要持续回答四个问题:

  • 这条数据从哪里来;
  • 当前任务是否需要使用它;
  • 它可以交给哪个工具;
  • 工具会把它送到哪里。

一条用户记忆可以用于称呼用户,不代表可以写进网址。

一份客户合同可以用于生成内部摘要,不代表可以发送给外部搜索服务。

一组设备参数可以用于故障分析,不代表可以自动提交到设备控制系统。

一段历史经验可以帮助模型给出建议,不代表可以覆盖当前工艺规程。

这次Claude记忆泄露所使用的具体路径已经受到限制。对企业而言,更有参考价值的是它展示出的攻击方式:外部内容影响模型决策,模型读取内部信息,再利用获准工具把数据带出系统。

数字员工的记忆越多,工具越多,能够连接的系统越多,权限设计就越需要细化。

企业部署时应把记忆、知识库、联网和工具调用分别设防,再对它们之间的数据流动进行统一审计。这样才能让数字员工记得住工作,也守得住数据。

分享到