Cloudflare 于 10 月 26 日发布事故报告,披露其 Workers AI 平台上托管的 GLM 5.3 模型(@cf/zai-org/glm-5.3)自 8 月 27 日上线起存在租户隔离问题:少数客户收到的回复中含有其他客户此前请求的数据,共 155 条回复受影响。Cloudflare 称,问题由自身配置与开源推理引擎 SGLang 的缺陷叠加造成,并表示未发现故意利用的证据。
据 Cloudflare 报告,8 月 27 日至 9 月 9 日期间,使用该模型的少数客户收到了含有其他客户请求数据的回复,这些请求发给同一模型,时间上早于受影响客户的请求。155 条受影响回复对应的提示长度全部超过 681,280 token。
Cloudflare 排除了自身和研究员的测试后称,所识别的请求在时间和数量上与普通长上下文使用一致,而不像有人反复利用漏洞。Cloudflare 还确认,Workers AI 上托管的其他模型均未受影响,GLM 5.3 是唯一受该缺陷影响的模型。
Cloudflare 以 1,048,576 token 的上下文窗口部署 GLM 5.3,但预填充 GPU 上的 KV 缓存池只能容纳 681,280 token。报告称,团队上线前已知这一差异,预期引擎会对无法处理的提示返回错误;上线前的长上下文测试返回了成功状态码,团队因此认为没有问题。Cloudflare 承认,测试只验证了 HTTP 状态码和引擎性能,没有验证模型输出内容和连贯性。
按报告描述,在预填充/解码分离模式下,放不进缓存池的提示会被标记为拒绝,并替换为一个 token 的占位提示,但请求没有被中止,也没有向客户端返回错误。预填充为占位提示生成 KV 缓存并传给解码节点;解码节点收到「传输完成」信号后,在仍保留先前请求数据的缓存页上生成回复。客户端因此收到的是 HTTP 200,而不是 HTTP 400。
安全研究员、Knostic 的 Gadi Evron 于 9 月 8 日通过 HackerOne 提交报告。以下时间均为 UTC:
Cloudflare 在报告正文中称,宣布事故后 40 分钟内下线模型;按其时间线,从宣布到设为私有相隔 38 分钟。
修复后,GLM 5.3 的配置调整为与 GLM 5.2 一致,预填充 KV 池约容纳 2.04 million token,约为上下文长度的两倍。Cloudflare 还给引擎打了补丁:带有待处理拒绝的请求会在预填充/解码分离模式的准入队列阶段以原始错误终止,不再进行引导、分配或 KV 传输。
报告称,这一缺陷已于 7 月 6 日由另一用户作为 SGLang issue #30233 报告。补丁在 SGLang v0.5.20 发布,v0.5.21(10 月 2 日发布)和 v0.5.22(10 月 19 日发布)有后续修复。Cloudflare 建议所有运营者升级到 v0.5.22 或更高版本。
Cloudflare 于 10 月 26 日与研究员和 RadixArk 协同发布本报告,SGLang 团队的文章同时发布。