Cloudflare Details Cross-Request KV Cache Exposure in GLM-5.3 Workers AI

· Original article ↗

Summary

Cloudflare disclosed a confirmed cross-tenant data exposure in GLM-5.3 Workers AI: 155 responses to prompts over 681,280 tokens included data from other customers’ requests. A KV-pool mismatch and SGLang bug caused it; fixes are deployed, with no deliberate exploitation

Key points

  • From August 27 to September 9, 2026, 155 responses to GLM-5.3 Workers AI prompts longer than 681,280 tokens contained data from other customers’ requests.
  • The model’s 1,048,576-token context window exceeded the prefill KV pool’s 681,280-token capacity, allowing requests that could not fit the pool to reach the faulty rejection path.
  • In disaggregated prefill/decode mode, SGLang passed a one-token placeholder to decode after rejecting an over-length request; decode then read stale KV pages left by earlier requests.
  • Cloudflare reported no evidence of deliberate exploitation and said the identified request timing and volume were consistent with ordinary long-context use.
  • Cloudflare corrected the pool configuration, patched the inference engine, tested the fixes, and restored GLM-5.3 on September 9. It said no other Workers AI model was affected.
  • Cloudflare recommends operators using disaggregated SGLang compare KV pool size with context length and upgrade to v0.5.22 or later.

Article Details

Attack Vectors
  • Prompts longer than the 681,280-token prefill KV pool triggered a rejected-request path in disaggregated SGLang deployments. The decode node then read stale KV cache pages left by earlier requests, causing some GLM-5.3 responses to contain data from other customers' sessions.
  • The issue affected GLM-5.3 on Workers AI from August 27 to September 9, 2026. Cloudflare reported 155 affected responses and found no evidence of deliberate exploitation.
Defensive Notes
  • Cloudflare corrected the GLM-5.3 configuration so the prefill KV pool holds about 2.04 million tokens, patched the rejection path to retire rejected requests before bootstrap, allocation, or KV transfer, and restored the model on September 9, 2026.
  • Operators running disaggregated SGLang should compare KV pool size with context length on every prefill and decode node after configuration changes, and use a build that includes fixes #36988 and #38935 (v0.5.22 or later).
  • The article recommends enabling deferred KV release on both roles, bounding Mooncake transfer batches, enabling supported KV checksum and canary checks, and configuring load balancers to avoid unnecessary mid-transfer aborts.

People

Vendors

Products

Related Articles