← Все новости

Постмортем Cloudflare: модель GLM-5.3 в Workers AI отдавала данные чужих запросов из-за бага SGLangCloudflare postmortem: GLM-5.3 on Workers AI leaked other customers' data via an SGLang bug

Из-за несоответствия размера KV-кэша и контекстного окна, а также ошибки в SGLang, 155 ответов модели содержали фрагменты чужих запросов. Исправления уже в апстриме — всем, кто запускает SGLang в режиме disaggregated prefill/decode, нужно обновиться до 0.5.22.A mismatch between KV cache size and context window, plus a bug in SGLang, caused 155 model responses to include fragments of other customers' requests. Fixes are upstream — anyone running SGLang in disaggregated prefill/decode mode should upgrade to 0.5.22.

26 октября Cloudflare опубликовала разбор инцидента с моделью @cf/zai-org/glm-5.3 в Workers AI. Модель запустили 27 августа уже с дефектом; 8 сентября исследователь сообщил о проблеме через HackerOne, 9 сентября модель временно закрыли и в тот же день вернули после исправления.

Что произошло

Две ошибки сложились вместе:

  1. Конфигурация. Контекстное окно модели — 1 048 576 токенов, а пул KV-кэша на этапе prefill вмещал только 681 280.
  2. Баг 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:

  1. Configuration. The model’s context window was 1,048,576 tokens, while the prefill KV cache pool held only 681,280.
  2. 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.

Источники