26 октября Cloudflare опубликовала разбор инцидента с моделью @cf/zai-org/glm-5.3 в Workers AI. Модель запустили 27 августа уже с дефектом; 8 сентября исследователь сообщил о проблеме через HackerOne, 9 сентября модель временно закрыли и в тот же день вернули после исправления.
Что произошло
Две ошибки сложились вместе:
- Конфигурация. Контекстное окно модели — 1 048 576 токенов, а пул KV-кэша на этапе prefill вмещал только 681 280.
- Баг SGLang. В режиме disaggregated prefill/decode слишком длинный запрос не отклонялся, а заменялся заглушкой. Decode-узел при этом читал «устаревшие» страницы KV-кэша, оставшиеся от предыдущих запросов других клиентов.
В итоге 155 ответов небольшому числу клиентов содержали данные из недавних чужих запросов. Все такие запросы были длиннее 681 280 токенов. Другие модели не пострадали, признаков целенаправленной эксплуатации Cloudflare не нашла.
Исправления
Пул KV-кэша увеличен примерно до 2.04M токенов, а исправления SGLang вошли в версии 0.5.20–0.5.22.
Что делать
Если вы сами обслуживаете LLM на SGLang в disaggregated-режиме — обновитесь до v0.5.22+ и проверьте, что размер KV-пула не меньше максимальной длины контекста. Это редкий наглядный пример утечки между арендаторами в инференсе: при мультитенантном хостинге моделей изоляция кэшей так же важна, как изоляция баз данных.
On Oct 26 Cloudflare published a postmortem for the @cf/zai-org/glm-5.3 model on Workers AI. The model launched on Aug 27 with the flaw already present; on Sep 8 a researcher reported it via HackerOne, and on Sep 9 the model was made private and restored the same day after a fix.
What happened
Two problems combined:
- Configuration. The model’s context window was 1,048,576 tokens, while the prefill KV cache pool held only 681,280.
- SGLang bug. In disaggregated prefill/decode mode, an over-length request was not rejected but replaced with a placeholder. The decode node then read stale KV cache pages left over from other customers’ earlier requests.
As a result, 155 responses to a small number of customers contained data from other customers’ recent requests. All such requests were longer than 681,280 tokens. No other model was affected, and Cloudflare found no evidence of deliberate exploitation.
Fixes
The KV pool was enlarged to about 2.04M tokens, and the SGLang fixes landed in versions 0.5.20–0.5.22.
What to do
If you serve LLMs on SGLang in disaggregated mode, upgrade to v0.5.22+ and make sure the KV pool is at least as large as the maximum context length. It is a rare, concrete example of cross-tenant leakage in inference: in multi-tenant model hosting, cache isolation matters as much as database isolation.