Cloudflare Blog· Kevin Flansburg·· 2 小时前精选AI 评分75
Cloudflare 披露 GLM-5.3 Workers AI 跨请求 KV 缓存泄露并完成修复
Cross-request KV cache exposure in the GLM-5.3 Workers AI model, and our remediation with SGLang
AI 导读
Cloudflare 披露 GLM-5.3 Workers AI 模型存在跨请求 KV 缓存泄露,155 条超长提示词响应混入了其他用户数据,模型已于 9 月 9 日恢复。
推荐理由
披露跨请求 KV 缓存泄露的完整根因与修复路径,对运行分离式推理的团队有直接参考价值。
深度导读
Cloudflare 于 9 月 8 日收到安全研究员 Gadi Evron 通过 HackerOne 提交的报告,指出 Workers AI 上的 GLM-5.3 模型(@cf/zai-org/glm-5.3)自 8 月 27 日上线起存在租户隔离问题。8 月 27 日至 9 月 9 日期间,少量使用该模型的客户收到的响应中包含了其他客户此前请求的数据,共 155 条响应受影响,全部来自超过 681,280 token 的提示词。Cloudflare 表示未发现蓄意利用的证据,其他托管在 Workers AI 上的模型未受影响。
根因由两个问题叠加。其一是配置错配:GLM-5.3 部署时上下文窗口为 1,048,576 token,但预填充 GPU 上的 KV 缓存池只能容纳 681,280 token,Cloudflare 在发布前已知这一差异,但长上下文测试只验证了 HTTP 状态码和流式响应,未验证输出内容与连贯性。其二是 SGLang 在分离式预填充/解码模式下处理超长请求的缺陷:放不下的提示词被内部标记为拒绝并替换为单 token 占位符,但预填充仍为该占位符生成 KV 缓存并传输给解码节点,解码节点收到传输完成消息后,假定缓存已被完整覆盖,实际大部分仍是此前请求的旧数据,于是基于陈旧缓存页生成响应。
修复方面,Cloudflare 将 GLM-5.3 配置调整为与 GLM-5.2 一致,释放足够显存使预填充 KV 池可容纳约 204 万 token,约为上下文长度的两倍,使合法请求不再进入拒绝路径;同时修补引擎,让携带待处理拒绝的请求在分离式准入队列处即被退回原始错误,不再进行引导、分配或 KV 传输。该方案以 #38704 提交上游,并加入解码节点校验传输 token 数与预留数一致。SGLang 侧 #36988 于 9 月 6 日合入,#38935 采纳 Cloudflare 思路在准入阶段提前拒绝。Cloudflare 建议所有运行分离式 SGLang 的运营方升级至 v0.5.22 或更高版本。
事件时间线为:9 月 9 日 13:22 宣布安全事件,25 分钟内用两个独立账号复现泄露,14:00 将模型设为私有,14:35 定位根因为预填充池小于上下文长度,14:52 全部预填充节点滚动至修正配置,19:04 完成含引擎补丁的完整部署重建,19:40 恢复公开访问。9 月 10 日与 SGLang 维护方 RadixArk 会面商定上游修复,9 月 11 日至 19 日向所有生产 SGLang 部署推送额外加固。
Cloudflare 还披露了更广泛的 KV 缓存内存安全加固:扩展延迟释放以覆盖预填充源页和所有失败类型,部署有界的 Mooncake 传输批次,调整负载均衡器使客户端断开不再中断传输中的请求,并在每次分离式部署变更时检查 KV 池大小与上下文长度、双角色延迟释放、传输批次边界及补丁齐全。长期方案是在读取时校验页归属,原型在 GLM-5.2 上测试吞吐与尾延迟开销低于 1%,但因可靠性问题已停用,正与 SGLang 团队共建通用版本。
来源:Cloudflare Blog · blog.cloudflare.com