本文使用的 Docker 镜像
发布日期: 2026 年 10 月 20 日
风险等级: 严重(Critical)
漏洞编号: CVE-2026-77936 · CVE-2026-77937
涉及镜像: letta/letta — 轩辕镜像 · Docker Hub · lettaai/letta — 轩辕镜像 · Docker Hub
CVSS: 9.8(Critical,CVSS 3.1,CVE-2026-77936);CVE-2026-77937 的 CVSS 3.1 为 8.1
披露时间: 2026 年 10 月公开
相关公告: VulnCheck · 默认不鉴权
一、漏洞概述
Letta 是可以自托管的智能体服务。当前镜像坐标是 letta/letta。lettaai/letta 仍在,标签更旧。
CVE-2026-77936: 官方 compose.yaml 没有启用 LETTA_SERVER_SECURE。密码中间件不会加载,API 不要求认证。同一份 Compose 还把超级用户 PostgreSQL 暴露出来,默认账号口令是 letta / letta。未认证调用方可以运行工具里的 Python、访问管理接口,并借助数据库超级用户权限在主机上执行命令。Compose 映射 8283、8083 和 5432。镜像标签常见 letta/letta:latest。
CVE-2026-77937: 即使打开了 LETTA_SERVER_SECURE,调用方仍可以在 HTTP 头里自己填写 user_id,冒充其他用户,读写别人的智能体、记忆和配置。网关丢掉这个头只能缩小这一条的入口,不能代替产品修复。
公告与 VulnCheck 把范围写到 0.16.8。GitHub Release 最新仍是 0.16.8。Docker Hub 上 letta/letta 已经有 0.34.18(2026-10-19 推送,latest 指向它),公开说明没有把这个标签写成这两条的修复版。
二、漏洞状态
统计截止: 2026 年 10 月 20 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(NVD、VulnCheck) |
| 公告写出的受影响版本 | ≤ 0.16.8 |
| 官方补丁 | 无标明的修复版。不要把 Hub 上的 0.34.18 或 latest 当成已经修好 |
| CISA KEV | 未列入 |
| CVE | CVSS 3.1 | CVSS 4.0 | 要点 |
|---|---|---|---|
| CVE-2026-77936 | 9.8 Critical | 9.3 | 默认 Compose 不启用鉴权,并暴露默认口令的 PostgreSQL |
| CVE-2026-77937 | 8.1 High | 8.6 | 已能访问 API 的调用方用 user_id 头冒充其他用户 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 说明 |
|---|---|
| Letta ≤ 0.16.8 | 公告明确受影响。Hub 标签 0.16.8 存在(2026-05-14 推送) |
letta/letta:0.34.18 与 latest | 镜像已经更新到这条线,但没有被写成 CVE-2026-77936 / 77937 的修复版 |
lettaai/letta | 旧坐标。可见标签停在 0.5.x 及更早,不要把它当作新镜像的替代 |
两条一起处理:先按仍需加固来部署,等上游写明修复版本后再固定标签。
2. 典型受影响场景
- 按官方 Compose 把 8283、8083 或 5432 映射到主机,且没有设置
LETTA_SERVER_SECURE - PostgreSQL 仍使用
letta/letta,并且 5432 可从容器网络以外访问 - 已经打开鉴权,但网关会把客户端提交的
user_id原样转给 Letta
API 只在本机、数据库没有映射出去、并且鉴权已打开时,未认证利用面会小一些。user_id 冒充在 77937 的修复发布前仍然存在。
四、修复建议
1. 目前没有可以写成修复版的标签
GitHub Release 仍是 0.16.8。Hub 上的 0.34.18 更新,不等于这两条已经修好。在发行说明点名修复 CVE-2026-77936 和 CVE-2026-77937 之前,不要把 latest 或 0.34.18 配成安全版本。
Docker Hub: letta/letta
轩辕镜像: letta/letta
旧坐标 lettaai/letta 不要继续作为升级目标。
2. 立刻改默认 Compose(推荐)
- 设置
LETTA_SERVER_SECURE,并配置足够强的服务密码,使密码中间件真正加载。 - 不要把 5432 发布到主机。PostgreSQL 只留给 Letta 自己的网络。
- 改掉默认的
letta/letta。用密钥管理注入新口令,并确认旧口令不能再登录。 - 在反向代理上丢掉客户端传来的
user_id头。这只缓解 CVE-2026-77937,不能代替上游补丁。 - 8283 或 5432 曾经对不可信网络开放的,按未认证代码执行和数据库超级用户可能已被使用处理:轮换数据库口令和应用密钥,重建实例。
五、临时缓解措施
在上游标明修复版之前:
-
不要按官方 Compose 原样暴露 8283、8083 和 5432
未设置LETTA_SERVER_SECURE时,API 不要求认证。 -
打开鉴权之后仍要限制谁能访问 API
能访问接口的人还可以用user_id头冒充其他用户。 -
不要把 0.34.18 或 latest 的一次拉取当成修复
公告没有把这些标签列为补丁。加固配置要单独做。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是镜像加速与拉取服务,不替代 Letta 的版本修复。
- 站内页:letta/letta。旧坐标 lettaai/letta 更新更早。
- 加速拉取
latest或0.34.18不会自动启用LETTA_SERVER_SECURE,也不会改掉 PostgreSQL 的默认口令。 - 配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- NVD:CVE-2026-77936 · CVE-2026-77937
- VulnCheck:默认不鉴权 · user_id 冒充
- Docker Hub:letta/letta · lettaai/letta
- 轩辕站内镜像页:letta/letta · lettaai/letta
轩辕镜像安全团队
2026 年 10 月 20 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
