CloudflareのKVキャッシュ欠陥は2026年10月26日に公表された。Cloudflareとオープンソース推論エンジンSGLangのチームが共同で説明を出し、リクエストをまたいでキャッシュの隔離が破れる不具合を確認し、一部の利用者が受け取った回答に、他の利用者のリクエスト内容が混ざっていたことを明らかにした。外部からの侵入ではなく、設定ミスとエンジンの欠陥が重なって露呈した隔離の問題であり、対象モデルは修正済みで、SGLangも修正版を出している。
直接のきっかけは、二つの数字の不一致だった。CloudflareがWorkers AI上で智譜のGLM 5.3を運用した際、モデルの公称コンテキストウィンドウは1,048,576トークンだったが、プリフィル側のKVキャッシュプールは681,280トークンしか保持できなかった。プールを超える長大なプロンプトは本来エラーで拒否されるはずで、SGLang内部でも拒否と記録され、元のプロンプトは1トークンのプレースホルダーに置き換えられた。しかしプリフィルとデコードを分離した構成では、受け入れキューはリクエストが「完了したか」だけを見て「拒否されたか」を確認せず、拒否されたリクエストはそのまま処理に入ってしまった。
デコード側が以前のリクエストの残りデータを読み取った
プリフィル側はプレースホルダー分の1トークンのKVキャッシュだけを作って「転送完了」を送ったのに、デコード側は元のプロンプト長に合わせてキャッシュページを丸ごと確保していた。今回のリクエストが書き込んだのは最初のページだけで、残りのページには以前のリクエストの残りが残っていた。デコード側はそのページの上で生成を続け、返ってきた回答は自然に見え、ステータスコードも200だったが、他人のセッションのデータが混ざっていた。Cloudflareによれば、キャッシュページはリクエスト間でそもそもゼロクリアされず、エンジンが各ページの所有者を正確に追跡することで隔離を保つ仕組みで、今回は拒否経路でその追跡が途切れた。
影響を受けたのはGLM 5.3のみ、運用者はまずキャッシュプールを確認すべき
Cloudflareの説明では、2026年8月27日から9月9日の間に155件の回答が影響を受け、いずれも681,280トークンを超えるプロンプトに対するものだった。セキュリティ研究者のGadi Evron氏が9月8日にHackerOne経由で報告し、Cloudflareは翌日に再現してセキュリティインシデントを宣言してから40分以内にモデルを停止し、当日中に設定修正とエンジンのパッチを終えて復旧した。意図的に悪用された証拠は見つかっていない。Cloudflareはプリフィルのキャッシュプールを約204万トークンに拡大し、SGLangを使うすべての運用者にv0.5.22以降への更新を勧めるとともに、配備前に稼働中のエンジンのキャッシュプール容量とモデルのコンテキスト長が一致するかを直接確認し、APIが200を返したことだけを根拠にしないよう求めている。