GitHub опубликовал GHSA-48jh-3gj7-fg8v в 21:37:00 UTC 4 сентября — CVE-2026-73556, CVSS 5.3, против vLLM, наиболее широко развернутого open-source inference server. В лентах это подается как новая ошибка denial of service. На самом деле это та же ошибка, которую проект исправил в июле, но она сохранилась в кодовом пути, до которого патч не добрался.
Сестринский путь
В оповещении это сформулировано прямо: "Исправление для GHSA-rwxx-mrjm-wc2m … обернуло компиляцию regex в бэкендах xgrammar и outlines с помощью compile_regex_with_timeout (а для outlines — validate_regex_is_buildable). Бэкенд lm-format-enforcer остался без защиты: он компилирует предоставленный атакующим regex без тайм-аута и без проверки на возможность сборки." Все три бэкенда доходят до одной и той же конструкции DFA в interegular; два из них ограничены, один — нет.
Измерение
В оповещении приведены собственные замеры: базовый '[0-9]{3}' компилируется за 0.0002 с; атакующий '(a{1,300}){300}' не завершился за 20 с, "одно ядро закреплено на 100% в построении interegular FSM". Поскольку компиляция грамматики выполняется внутри пути структурированного вывода движка, запрос не возвращается, а параллельные запросы встают за ним — отказ в обслуживании на уровне worker. В оповещении отмечено, что идентичный запрос через бэкенд outlines возвращает чистую ошибку.
Что неверно в полученной формулировке
Две вещи. Это не новый класс атаки, а провал полноты патча — интересен тот факт, что исправление безопасности оказалось в двух из трех сестринских точек вызова, и этого никто не заметил шесть недель. И формулировка "affected versions < 0.26.0" читается как текущее окно риска: 0.26.0 вышла 27 июля, а текущая версия — 0.28.0, так что раскрытие отстает от исправления на 39 дней. Тот, кто отслеживал свою версию vLLM, после июля не был подвержен риску; тот, кто закрепился ниже, был подвержен — и не знал об этом.
Предпосылка, которой почти не требуется
В оповещении указано, что "vLLM поставляется с отсутствием аутентификации по умолчанию". Атака — это один POST-запрос к /v1/completions со regex для structured output — без учетных данных, без доступа к модели beyond the endpoint, без специальной конфигурации, кроме выбора бэкенда lm-format-enforcer. Structured output — это функция, которую включают большинство production-развертываний, потому что именно так добиваются надежных JSON-ответов.
