Cloudflare、GLM-5.3推論エンジンにおけるリクエスト間データ漏洩を修正
CloudflareのWorkers AIにおける設定ミスとソフトウェアバグにより、155件のレスポンスに他ユーザーのセッションデータが含まれる事象が発生しました。この問題はSGLang推論エンジンのパッチ適用により解決されました。
英語の原文から自動翻訳されました。
Cloudflareは、同社のWorkers AIプラットフォームで発生したセキュリティインシデントを開示しました。GLM-5.3モデルが、他のユーザーのリクエストからデータを誤って返してしまっていたというものです。2026年8月27日から9月9日までの間に有効だったこの脆弱性は、155件のレスポンスに影響し、特定の長いコンテキストのプロンプトによってトリガーされました。Cloudflareはその後、基盤となる推論エンジンにパッチを当て、強化された安全チェックとともにモデルを復旧させました。
何が起きたか
2026年9月8日、セキュリティ研究者のGadi Evron氏は、Workers AI上の@cf/zai-org/glm-5.3モデルがセッションデータを漏洩させていることを報告しました。Cloudflareは翌朝この問題を再現し、40分以内にモデルをオフライン化しました。調査の結果、8月27日から9月9日の間に、少数の顧客が、直前に同じモデルへ送信された他顧客のリクエスト由来のテキストを含むレスポンスを受信していたことが判明しました。影響を受けた155件のレスポンスはすべて、681,280トークンを超えるプロンプトから生成されていました。Cloudflareは意図的な悪用の証拠は見つからなかったと述べており、リクエストパターンは標的型攻撃ではなく、通常の長文コンテキスト利用によるものと一致していました。
根本原因は、設定エラーと、サービスを支えるオープンソース推論エンジン「SGLang」のバグの組み合わせでした。CloudflareはGLM-5.3を1,048,576トークンのコンテキストウィンドウで展開していましたが、プリフィルGPU上のKey-Value(KV)キャッシュプールは681,280トークンしか保持できませんでした。チームはこの不一致を認識していましたが、収まらないプロンプトに対してはエンジンがエラーを返すと想定していました。しかし実際には、エンジンが欠陥のある拒否パスを使用してリクエストを処理しようとし、その結果としてデータ露出が生じました。他のモデルについては、KVプールのサイズがそれぞれのコンテキスト長より大きかったため、Workers AI上でホストされている他のモデルは影響を受けませんでした。
仕組み
Workers AIは、分離アーキテクチャを用いてGLM-5.3を提供しています。プリフィルGPUがプロンプトを処理してKVキャッシュを生成し、これをリモートダイレクトメモリアクセス(RDMA)経由でデコードGPUに転送してレスポンスを生成します。KVキャッシュは、GPUメモリ内の固定サイズページの共有プールに格納されます。高いパフォーマンスを維持するため、これらのページはリクエスト間でゼロクリアされず、エンジン側では厳密な所有権追跡により、新しいリクエストが割り当てられたページ内の以前のデータを上書きすることが保証されています。
プロンプトがKVプールのサイズを超えた場合、SGLangスケジューラはリクエストを「拒否」とマークしますが、バッチ機構を通じて処理を進めるために1トークンのプレースホルダーに置き換えます。単一ノード構成であれば、これはエラーになります。しかし、分離構成では、アドミッションキューがリクエストが「拒否」されたかではなく、「完了」したかどうかを確認していました。拒否されたリクエストは「完了」とマークされていなかったため、プリフィルノードに受け入れられました。プリフィルノードは1トークンのプレースホルダー用のキャッシュを生成し、それをデコードノードへ転送しました。完全な転送を期待していたデコードノードは、以前ユーザーからの古いデータが残っている予約済みページを保持し続けました。その結果、最終的なレスポンスには、プレースホルダーから生成された整合性のあるテキストと、古いキャッシュページから漏洩したデータが混在することになりました。
主要な詳細
- 影響を受けたモデル:
@cf/zai-org/glm-5.3のみが影響を受けました。他のすべてのWorkers AIモデルは安全でした。 - 露出期間: この脆弱性は2026年8月27日から、モデルがオフライン化された2026年9月9日まで存在していました。
- 影響範囲: 正確に155件のレスポンスが影響を受け、これらはすべて681,280トークンを超えるプロンプトに由来するものでした。
- 根本原因: 1,048,576トークンのコンテキストウィンドウと681,280トークンのKVキャッシュプールの間の不一致に加え、分離モードにおけるSGLangの拒否リクエスト処理のバグが組み合わさったこと。
- 是正措置: CloudflareはKVプールのサイズを約204万トークンに増やし、KV転送の前に拒否リクエストを正しく中止するようにSGLangにパッチを当てました。
- アップストリームの修正: SGLangのメンテナーはいくつかのパッチ(PR #38704および#38935を含む)をマージし、すべてのユーザーがこの問題に対処できるようバージョンv0.5.21およびv0.5.22をリリースしました。
なぜ重要なのか
このインシデントは、高性能LLM推論エンジンにおけるメモリ安全性の脆さを浮き彫りにしています。プロバイダーがより大きなコンテキストウィンドウとより高速なスループットを追求するにつれ、プリフィルとデコードを分離するといった複雑なアーキテクチャを採用することが多くなります。これらのシステムは、複数ノード間での精密な状態管理に依存しています。コンテキスト長やメモリプールサイズなどの設定値が厳密に強制されない場合、エッジケースが深刻なセキュリティ脆弱性につながる可能性があります。これらのプラットフォーム上に構築しているエンジニアリングチームにとって、ゼロクリアしないメモリ再利用のようなパフォーマンス最適化には、インフラストラクチャプロバイダーとしての重大な責任が伴うことを理解しておくことの重要性を示唆しています。
Workers AIや同様のサービスを利用している開発者にとって、この事象は、テナント分離がネットワークレベルの問題だけでなく、推論エンジン内部のメモリ管理上の課題でもあることを再認識させるものです。Cloudflareの迅速な対応により露出は限定的でしたが、155人のユーザーが漏洩データを受信したという事実は、短い脆弱性の窓でも具体的な結果をもたらす可能性があることを示しています。また、Cloudflareが開発した修正がアップストリームにマージされ、より広範なSGLangコミュニティの利益となったことは、協調的な開示とオープンソースコラボレーションの価値を実証しています。
あなたができること
- SGLangを更新: SGLangを使用して独自の推論インフラを運用している場合は、最新のセキュリティパッチを取り込むため、直ちにバージョンv0.5.22以降へアップグレードしてください。
- 設定を検証: デプロイするすべてのモデルにおいて、KVキャッシュプールのサイズが最大コンテキスト長よりも厳密に大きいことを確認してください。エンジンが不一致を適切に処理することに頼らないでください。
- 異常を監視: レスポンス時間とトークン数のログ記録および監視を実装してください。長いプロンプトに対して予期せず速いレスポンスが届く場合、処理の切り詰めやキャッシュエラーを示唆している可能性があります。
- 分離構成を見直す: プリフィル/デコードの分離アーキテクチャを使用している場合は、拒否パスがノード間で正しく処理され、拒否されたリクエストがKV転送に進まないことを検証してください。
- アップストリームの課題を確認: SGLangなど、依存している推論エンジンのイシュートラッカーを定期的に確認し、既知のメモリ安全性バグや競合状態をチェックしてください。
- 長文コンテキストの利用を監査: アプリケーションが非常に長いコンテキストウィンドウに依存している場合、HTTPステータスコードの確認だけでなく、負荷下での出力の整合性と分離性を検証する具体的な統合テストを実施してください。



