OpenClaw 更新日志 | 2026.5.12 → 2026.5.18
这次更新跨度不小——从 5.12 直接跳到了 5.18,中间隔了 6 个版本。我翻了将近 3000 行的 CHANGELOG,一句话总结:这次更新的主线是安全加固,但稳定性修复也占了很大比重。
更新概览
不是那种”加了个酷炫新功能”的更新,而是实打实地补漏洞。40 多项安全修复,覆盖了 SSRF、路径遍历、Webhook 签名验证、内存注入这些关键领域。说实话,这种更新比加功能更重要,只是没那么好看而已。
安全加固:这是重点
SSRF 防护全面升级
SSRF(服务端请求伪造)是这次修得最多的漏洞类型。几个关键修复:
- 媒体 URL 获取现在默认拒绝私有/内部主机访问。Tlon/Urbit 渠道可以通过
channels.tlon.allowPrivateNetwork可选开启 - BlueBubbles、Zalo、Google Chat 等多个渠道修复了共享路径 Webhook 路由的歧义问题——以前多个目标匹配同一个 guid/password 时会错误路由
- 修复了通过 IPv4 映射 IPv6 字面量绕过 SSRF 防护的问题
- CLI 链接解析流程中阻止了内网/回环模式
路径遍历防护
- Hook 转换模块现在只能从
~/.openclaw/hooks/transforms目录加载,防止通过配置加载外部恶意模块 - Skill 安装时的解压过程加固了,防止路径遍历到目标目录外
- Signal 安装时的归档提取也做了加固
- apply_patch 工具在非沙箱模式下强制工作区根路径边界,阻止符号链接逃逸
- 浏览器控制限制了文件上传/下载路径到 OpenClaw 临时目录
Webhook 签名验证
- Telnyx 语音通话现在要求 Webhook 签名验证,没有
telnyx.publicKey的配置会被拒绝 - Twilio 即使在 ngrok 免费层回环兼容模式下也要求有效签名
- Telegram webhookSecret 缺失或为空时拒绝启动 Webhook
内存注入防护
LanceDB 内存现在将召回的内存视为不可信上下文,自动捕获时跳过可能的提示注入载荷。另外,自动捕获现在默认关闭了——需要显式设置 autoCapture: true 才能启用。这个改动挺合理的,毕竟自动捕获 PII 数据不是什么好事。
渠道安全加固
每个渠道都收到了安全相关的修复:
- Telegram:要求数字 sender ID 进行 allowlist 授权,拒绝
@username主体,自动将@username解析为 ID - Discord:DM slash 命令即使
dmPolicy=open也计算命令授权,防止未授权用户通过 DM 运行特权命令 - 飞书:加固了媒体 URL 获取,防止 SSRF 和本地文件泄露
- Signal:加固了 signal-cli 安装期间的归档提取
- BlueBubbles:要求显式的
mediaLocalRootsallowlists,拒绝模糊的共享路径 Webhook 路由,反向代理下的 webhook 认证加固 - Google Chat:拒绝
users/<email>allowlists(视为不可变用户 ID),阻止共享路径 Webhook 路由歧义 - Nostr:要求回环源并阻止跨源 profile 变异/导入尝试
- Windows:生成子进程时避免 shell 调用,防止通过不可信 CLI 参数注入 cmd.exe 元字符
稳定性修复:容易被忽视但很重要
这部分容易被忽视,但影响很大。多个组件修复了无界增长问题——说白了就是内存泄漏:
- 诊断会话状态修剪过时条目,限制跟踪的会话状态数量
- agentRunSeq 追踪在运行完成/中止时清理,强制维护时修剪
- ABORT_MEMORY 通过驱逐最旧条目和删除重置标志来限制增长
- Slack 线程启动缓存加了 TTL 和最大大小修剪
- Outbound 目录缓存加了最大大小驱逐和主动 TTL 修剪
- Skill 远程节点缓存移除了断开连接的节点
如果你是长期运行的网关用户,这些修复会让你的服务更稳定。
内存系统改进
- QMD 索引验证:验证并打印活跃的 QMD 索引文件路径/大小,更新后缺失或零字节索引时失败
- 自动修复:检测空字节
ENOTDIR更新失败,重建托管集合并重试 - Watcher 优化:缩小内存观察器目标到 markdown globs,忽略依赖/venv 目录,减少文件描述符压力
沙箱和网关
- 沙箱文件工具支持 bind-mount 感知(包括绝对容器路径),强制执行写入的只读 bind 语义
- Windows 进程安全:生成子进程时避免 shell 调用,防止 cmd.exe 元字符注入
- Gateway 路由:阻止
system.execApprovals.*通过node.invoke - 沙箱提示:显示沙箱容器工作目录作为提示工作目录,澄清主机路径用法
其他值得关注的变更
- 新增了可选的 Podman 安装方式(
setup-podman.sh),不想用 Docker 的人有福了 - Discord 支持从本地音频文件发送带波形预览的语音消息
- Discord 添加了可配置的 presence status/activity/type/url
- Slack 通过
message_sendinghooks 控制线程外发,包括 @-mention bypass 追踪 - 添加了一流的 Hugging Face Inference provider 支持
- 新增 MiniMax 中国 API 认证选项
minimax-api-key-cn - Agents 添加了预提示上下文诊断(messages、systemPromptChars、promptChars),方便调试上下文溢出
破坏性变更
.moltbot状态已彻底移除。如果你还有~/.moltbot下的配置,需要迁移到~/.openclaw,或者设置OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATHPOST /hooks/agent默认拒绝 payloadsessionKey覆盖。需要设置hooks.defaultSessionKey(推荐设为["hook:"])来保持固定 hook 上下文。如果需要用旧行为,显式设置hooks.allowRequestSessionKey: true
怎么更新
这次更新涉及大量安全修复,建议尽快更新。
npm update -g openclaw
更新后跑一下 openclaw doctor --fix 检查和修复配置问题。用了 hooks 的话,注意检查 hooks.defaultSessionKey 配置。
如果你还在用 ~/.moltbot,趁这次机会迁移到 ~/.openclaw 吧,老状态目录已经不维护了。
夜雨聆风