Workers AIのGLM-5.3(@cf/zai-org/glm-5.3)で、テナント分離が破れていた。8月27日の提供開始から9月9日まで、ごく一部の利用者の応答に、同じモデルへ直前に送られた別の利用者のリクエスト由来のデータが含まれた。該当は155応答で、すべて681,280トークンを超えるプロンプトである。自社の試験と報告者を除くと、件数とタイミングは通常の長文利用と一致し、繰り返し突くような悪用の証拠は見つからなかったとCloudflareは述べている。他のWorkers AIモデルへの影響は確認していない。
原因は二つ重なっている。コンテキスト長は1,048,576トークンだったが、プリフィルGPUのKVキャッシュプールは681,280トークンしかなかった。長いプロンプトはエラーになると想定していたが、試験ではHTTPの成功だけを見て、出力の中身は見ていなかった。もう一つは推論エンジンSGLangの不具合で、プリフィルとデコードを分けた構成に限る。プールに収まらないプロンプトは拒否として1トークンの置き場に変わるのに、デコード側は転送完了を受けて、前のリクエストが残したKVページを読んだまま応答を生成した。クライアントにはHTTP 200が返る。
9月8日にKnosticのGadi Evron氏がHackerOneへ報告し、翌9日にモデルを止めて設定とエンジンを直し、同日に公開へ戻した。プールは約204万トークンまで広げた。エンジン側は、拒否が付いたリクエストを転送の前に元のエラーで終える。この修正はSGLang v0.5.20に入り、追補はv0.5.21とv0.5.22にある。分離構成でSGLangを動かす運用者には、v0.5.22以降が推奨されている。
確認するのは、起動ログに出るKVプールのトークン数が、設定したコンテキスト長以上かである。重み、量子化、並列度、メモリ配分を変えるたびに、プリフィルとデコードの両方で比べる。プールの方が小さければコンテキスト長を下げる。プールの大きさは設定項目ではなく、起動時に残ったGPUメモリから決まる。