mem0 与 OpenMemory:无认证 API 暴露智能体记忆与密钥
2026 年 7 月 7 日披露的两个漏洞(VulnCheck,最高 9.8 严重)允许任何人读取、写入或删除 LLM 智能体的存储记忆,并获取提供商 API 密钥或通过 SSRF 横向移动——无需任何认证。
这是什么?
2026 年 7 月 7 日,VulnCheck 为 mem0 及其自托管的 OpenMemory API 发布了两份公告——这是一层被广泛部署的”记忆层”,让 LLM 智能体能够跨会话存储并读回长期上下文。两个漏洞属于同一类别:关键功能缺失认证(CWE-306)。受影响的 API 路由在发布时没有任何认证中间件,因此任何能够访问该服务的人都能操作它。一个漏洞暴露记忆存储;另一个暴露配置 API。项目方在提交 a3154d5 中修复了两者。所分配的严重性从 9.2 到 9.8(严重)——可通过网络访问,无需权限,无需用户交互。
这一点很重要,因为记忆后端不是缓存,而是智能体会读回并据以行动的可信上下文。破坏它的完整性或机密性,就是破坏这个智能体。
工作原理
存在两个相互独立的弱点,每一个都无需凭据即可触及。
记忆 API 在注册路由时没有任何认证守卫。未认证的调用方可以提供任意 user_id,从而读取、写入或删除任何用户的记忆,或以 global_pause=true 调用暂停端点,停止所有用户的记忆操作——这是对整个部署的拒绝服务。
配置 API 在横向移动方面更为严重。对配置端点执行 GET 会以明文返回存储的密钥——例如 OpenAI 密钥。对 LLM 配置执行 PUT 则允许攻击者将 ollama_base_url 值设为内部地址,如云元数据服务,从而把服务器变成一个**服务器端请求伪造(SSRF)**原语,触及攻击者无法直接访问的资源。
不可信网络
|
v
[ mem0 / OpenMemory API ] <- 路由上没有认证中间件
| |
| +-- GET config -> 明文的提供商 API 密钥
| +-- PUT llm config -> ollama_base_url = 内部主机 -> SSRF
|
+-- 读/写/删记忆(任意 user_id)
+-- pause (global_pause=true) -> 拒绝服务
此处不复现任何利用代码;上述端点仅按公开公告中已记录的层面进行描述。要点在于架构层面:记忆服务假定自己位于可信网络中,本身不施加任何强制措施。
为何重要
对记忆的写入访问是一条持久注入通道。与一次性的提示注入不同,被投毒的记忆会被一次次读回,跨会话存续——这是智能体记忆投毒的持久版本。读取访问则是对智能体所记住的一切的纯粹数据泄露:对话历史、个人数据与业务上下文。配置泄露向攻击者交出有效的 LLM API 密钥(滥用计费与模型访问),而 SSRF 路径可经由元数据端点升级为云凭据窃取。
暴露面很大,因为这些服务常常绑定到 0.0.0.0,或被放到内部网络上,并假定”内部”就意味着”可信”。全网范围的扫描一再表明这一假定是错误的——数十万个 AI 服务处于暴露状态。这与整个智能体工具栈中出现的后端而非模型的失败模式相同:真正的漏洞在管道里,而不在提示里。
防御
首先将 mem0 更新到修复提交之后;补丁补上了缺失的认证。除打补丁之外,请把记忆层当作一个具有真实信任边界的真实服务来对待。
不要把记忆或配置 API 暴露给不可信网络——将其绑定到 localhost,或置于经过认证的网关之后,并将它们与开放互联网隔离。在服务本身中强制执行认证与授权,并在服务器端从已认证的主体推导 user_id,而不是信任客户端提供的值,这样一个租户便无法寻址另一个租户的记忆。不要把提供商凭据放在明文配置存储中:使用密钥管理器,并将配置端点限制给管理员。对配置接受的任何 URL 添加 anti-SSRF 控制——对主机做允许列表,屏蔽 link-local 与元数据段(如 169.254.169.254),并停用 IMDSv1。最后,在读取路径上应用纵深防御:把读回的记忆视为不可信输入,追踪其来源,使被投毒的条目无法悄然驱动一次工具调用——这与致命三要素(私有数据、不可信内容与外泄通道)背后的直觉相同。
状态
| 项目 | 参考 | 日期 | 备注 |
|---|---|---|---|
| 未认证记忆访问(读/写/删,DoS) | CVE-2026-59705(VulnCheck) | 2026-07-07 | CVSS 9.8 严重;任意 user_id,global_pause DoS |
| 明文密钥暴露 + 配置 API 的 SSRF | CVE-2026-59706(VulnCheck) | 2026-07-07 | CVSS 9.3 / 9.2;ollama_base_url SSRF,CWE-306 |
| 修复 | mem0 提交 a3154d5 | 2026-07 | 为受影响路由添加认证 |
这个教训很古老,并在智能体时代不断重演:记忆层是一条安全边界,而非实现细节。如果它什么都不认证,攻击者就能改写你的智能体所相信的内容、读取它所知道的内容,并窃取它赖以运行的密钥——而这一切都发生在交换第一条提示之前。
Sources
- → https://nvd.nist.gov/vuln/detail/CVE-2026-59705
- → https://nvd.nist.gov/vuln/detail/CVE-2026-59706
- → https://www.vulncheck.com/advisories/mem0-server-side-request-forgery-and-plaintext-api-key-exposure-via-unauthenticated-config-endpoints
- → https://github.com/mem0ai/mem0/issues/6081
- → https://github.com/mem0ai/mem0/commit/a3154d59e52386d4e1189c1f5f44819868f76514