Cloudflareは10月26日、AI推論サービスWorkers AIで起きた情報混入の詳細をCross-request KV cache exposure in the GLM-5.3 Workers AI modelとして公開しました。8月27日から9月9日まで、GLM-5.3に約68万トークンを超える長いプロンプトを送ると、ほかの利用者の入力内容を含む応答が返ることがありました。該当した応答は155件です。原因はオープンソースの推論エンジンSGLangの不具合と、Cloudflare側の設定のずれが重なったことでした。LLMをAPIで使う側にも、自前で動かす側にも関係する事例です。
背景と文脈
Workers AIは、Cloudflareのネットワーク上でオープンなモデルを呼び出せるサービスです。今回の対象は、Z.aiのGLM-5.3を提供する@cf/zai-org/glm-5.3だけでした。ほかのモデルに影響はなかったとCloudflareは説明しています。
発見のきっかけは外部からの報告です。セキュリティ研究者のGadi Evron氏(Knostic)が9月8日、バグ報奨金制度のHackerOne経由で再現スクリプトを添えて知らせました。Cloudflareは翌朝に検証を始め、2つの別アカウントで混入を再現しています。インシデント宣言から約38分でモデルを非公開にし、同日19時40分(UTC)に修正版で公開を再開しました。
影響を受けた利用者は少数で、社名は明かされていません。社内テストと研究者の分を除くと、残りのリクエストは通常の長文利用と同じ傾向でした。意図的に悪用された形跡はないとしています。一方で、同じ不具合は7月6日にSGLangの課題管理(issue #30233)へ報告済みでした。既知の問題が本番で表に出た形です。
技術/ビジネス面

鍵になるのはKVキャッシュです。KVキャッシュ(KV cache:モデルが読み込んだ文章の途中計算をGPUメモリに置いておき、次の単語を作るときに使い回す仕組み)は、リクエスト同士で共有するメモリ領域から切り出して使います。SGLangでは、この領域のページを使い終わってもゼロで消しません。
1つ目の問題は設定のずれです。GLM-5.3は約105万トークンまで受け付ける設定でした。ところが、入力を処理するGPU側のキャッシュ領域は68万1,280トークン分しかありません。Cloudflareは公開前にこの差を把握していました。ただ、長文テストはHTTPの成功コードと速度だけを見ていたため、問題なしと判断しています。
2つ目はSGLangの不具合です。Workers AIは、入力を読む段階(prefill)と文章を書き出す段階(decode)を別のGPU群で動かす構成でした。領域に入りきらないプロンプトが来ると、SGLangは要求を「却下」と印を付けます。しかし処理は止めず、1トークンだけの仮の入力に差し替えて先へ流していました。受け付け側は「完了したか」しか確認せず、「却下されたか」を見ていませんでした。
その結果、書き出す側は本来のプロンプト分のページを確保します。届いたのは1ページだけなので、残りのページには前の利用者のデータが残ったままでした。モデルはそれを文脈として読み、まとまった返答を作ります。利用者にはエラーではなく、HTTP 200の正常な応答として届いていました。
修正は3段構えです。まず、キャッシュ領域を約204万トークンへ広げ、正しい要求が却下の経路に入らないようにしました。次に、却下された要求をメモリ確保の前に終わらせるパッチを当てています。さらに、受け取ったトークン数が確保した量と一致するかを照合するようにしました。これらの修正はSGLang本体にも取り込まれ、v0.5.22で入手できます。
これからどうなるか
今回の教訓は、LLMの基盤では「応答が返る」ことと「正しく分離されている」ことが別物だという点です。Cloudflareは今後、ページごとに印を付けて読み出し時に照合する仕組みを試しています。試作の性能低下は1%未満でした。データ転送の手順を数学的に検証する計画も示しています。
SGLangを自前で運用している開発者は、すぐ確認できる項目があります。起動ログでキャッシュ領域の大きさを測り、受け付ける最大長より小さければ最大長を下げます。そのうえでv0.5.22以降に上げ、--disaggregation-enable-kv-checksumなどの破損検出を有効にするよう勧めています。
APIとして使う側にも影響があります。手元の結合テストが「200が返ったか」だけを見ているなら、応答の中身が入力と対応しているかも確かめる価値がありそうです。社外秘の文書を長文のまま投げる設計なら、データの保持や分離の方針を提供元に確認しておくと安心です。
まとめ
CloudflareのWorkers AIで、GLM-5.3への長いプロンプトに他人の入力が混ざる事故が約13日間続き、155件の応答が該当しました。原因は設定のずれとSGLangの却下処理の不具合です。どちらもエラーを出さずに正常な応答を返したため、検知が遅れました。修正はSGLang v0.5.22に取り込まれています。
参考リンク
アイキャッチ画像: Photo by Christian Englmeier on Unsplash

