Cloudflare、GLM-5.3ホスト型モデルで発生した他リクエストへのデータ漏えいを公表
Cloudflareは10月26日の報告で、ホスト型GLM-5.3モデルのテナント分離の欠陥により、他の顧客の文章が155件の応答に混入したと述べた。漏えい文を受けた応答はいずれも681,280トークンを超えるプロンプトへのものだ。露出は8月27日から9月9日まで。意図的な悪用の証拠は見つかっていないという。
Cloudflare、GLM-5.3ホスト型モデルで発生した他リクエストへのデータ漏えいを公表
Cloudflareは10月26日、Workers AIサービスで起きたテナント分離の欠陥について事後報告を公開した。Knosticのセキュリティ研究者Gadi Evron氏が9月8日、GLM-5.3モデル(`@cf/zai-org/glm-5.3`)に非常に長いプロンプトを送ると、他の顧客のセッションに属する文章が返ることがあると報告した。Cloudflareによると、問題はモデルを公開した8月27日から存在し、同社は9月9日にモデルを停止して同日中に復旧させた。ほかのWorkers AIモデルに影響はなかったという。報告書の日付が10月26日なのは、関係するオープンソース推論エンジンSGLangの記事と足並みをそろえて公開したためで、事案そのものは約7週間前のものだ。10月27日号が扱うのはこの公表であり、新たな攻撃ではない。
Cloudflareは数も示した。影響を受けた応答は155件で、すべて681,280トークンを超えるプロンプトへの応答だった。ここでのトークンはモデルが読み取る文字列の単位であり、暗号資産ではない。自社のテストと研究者のテストを除くと、残りのリクエストは時期も量も通常の長文脈利用と一致し、意図的な悪用の証拠は見つからなかったと同社は述べる。これは同社自身の結論である。影響を受けた顧客の数や、漏れた文章の中身については、記事は触れていない。
二つの欠陥が重なった
一つ目は設定の不一致だ。Cloudflareはモデルを1,048,576トークンの文脈窓で配備したが、プレフィル用GPUで注意のキャッシュ(KVキャッシュ)を保持するメモリのプールには681,280トークン分しか入らなかった。同社は公開前からこの差を把握しており、収まらないプロンプトにはエンジンがエラーを返すと想定していたという。長文脈のテストは成功応答を返したため、差は問題とみなされなかった。現在は、そのテストがHTTPステータスと速度しか確認しておらず、出力が筋の通ったものかどうかを確かめていなかったと認めている。
二つ目は、プレフィルとデコードを別々のGPUプールで動かすときのSGLangの不具合だ。プールに収まらない長いプロンプトは拒否扱いとなり、1トークンの代役に差し替えられたが、リクエスト自体は止められなかった。プレフィルはキャッシュを1ページだけ書き込み、転送完了をデコード側へ通知した。Cloudflareの説明図に示された例では、デコード側が本来のプロンプトのために8ページを確保し、すべて新しいデータだと思い込む。うち7ページには以前のリクエストの内容が残っていて、モデルは他人の残りデータを読みながら回答した。顧客にはエラーではなく通常の成功応答が返った。Cloudflareは、キャッシュのページはリクエストの間にゼロ埋めされないと指摘する。速度のために多くのエンジンが受け入れている方式で、各ページの持ち主をエンジン自身が追跡しなければならないということになる。
Cloudflareが行った対策
報告書の時系列は次のとおりだ。9月9日UTC 13:22にインシデントを宣言し、14:00にモデルを非公開にし、14:35に根本原因を特定した。19:40には修正した設定とパッチ済みエンジンで再び一般公開した。プレフィル側のプールは現在約204万トークンを保持でき、文脈窓のおよそ2倍なので、有効なプロンプトは必ず収まる。Cloudflareはエンジンにもパッチを当て、拒否されたリクエストがキャッシュ転送を始める前に終了するようにした。SGLangはv0.5.20からv0.5.22で関連する修正を出しており、Cloudflareは分離構成のSGLangを運用する全員にv0.5.22以降への更新を勧めている。ほかにも、キャッシュページの解放を遅らせる措置、転送バッチの上限設定、配備前にプールの大きさと文脈長を突き合わせる検査などを挙げている。
読者が持ち帰れること
ホスト型の推論サービスを利用する人にとって、教訓は範囲こそ狭いが実用的だ。報告によれば、漏えいした文章を受け取ったリクエストのプロンプトは681,280トークンを超えていた。文章が漏れた側の別の顧客のリクエストの長さは示されていない。それでも、分離の欠陥はエラーを出さないまま13日間も潜みうる。今回がそうだった。自前でエンジンを動かすチームは、キャッシュ容量を公称の文脈長と照合し、ステータスコードだけでなく出力の中身も試験し、外部の研究者が不具合を報告できる窓口を明確にしておくべきだろう。Cloudflareの説明はベンダー自身による報告である。記事には件数を独立に確認した記載がなく、顧客への影響も数値化されていない。
Sources
FAQ
CloudflareのGLM-5.3の件では何が起きたのか?
Cloudflareによると、ホスト型GLM-5.3モデルに非常に長いプロンプトを送ると、他の顧客の直近のリクエストの文章が返ることがあった。8月27日の公開から9月9日の修復までに155件の応答が影響を受け、すべて681,280トークンを超えるプロンプトだった。ほかのWorkers AIモデルに影響はなかったという。
漏えいの原因は何か?
二つの欠陥が重なった。プレフィルGPUの注意キャッシュのプールは681,280トークンしか入らず、モデルの文脈窓は1,048,576だった。さらにSGLangが分離構成で長すぎるリクエストを誤って扱い、デコードが以前のリクエストの残したキャッシュページを読んだ。顧客にはエラーではなく通常の成功応答が返った。
報告は誰も悪用しなかったことを証明するのか?
証明しない。Cloudflareは自社と研究者の試験を除くと意図的な悪用の証拠はなく、残りは通常の長文脈の利用と一致したと述べる。これは同社自身の結論で、独立した確認はなく、影響を受けた顧客数も示されていない。