Уязвимость в fastify позволяет обрушить сервер через HTTP/2 (CVE-2026-92081)
Команда SafeKit информирует о новой уязвимости в популярном веб-фреймворке fastify для Node.js. Проблема получила идентификатор CVE-2026-92081 и позволяет злоумышленнику вызвать отказ в обслуживании серверного приложения. Уязвимость особенно опасна своей простотой эксплуатации: достаточно одного HTTP/2-запроса без аутентификации.
Подробности
Уязвимость затрагивает fastify всех версий до 5.12.5 включительно. Её причина кроется в некорректной обработке ответов с трейлерами при работе по протоколу HTTP/2.
Когда маршрут регистрирует трейлер ответа через вызов reply.trailer(), fastify безусловно устанавливает заголовок Transfer-Encoding: chunked. Однако спецификация HTTP/2 запрещает использование этого заголовка, поэтому Node.js выбрасывает исключение при сериализации заголовков ответа. Это исключение не перехватывается фреймворком и превращается в uncaughtException, что приводит к аварийному завершению процесса сервера.
В результате:
- любой неаутентифицированный HTTP/2-запрос к маршруту, использующему трейлеры, обрушает сервер;
- все запросы, находящиеся в обработке в момент падения, обрываются;
- атаку можно повторять при каждом перезапуске сервиса, что делает её эффективным инструментом для постоянной деградации доступности.
Уязвимости присвоен базовый балл CVSS 5.9, что соответствует средней степени критичности. Несмотря на умеренную оценку, влияние на доступность сервиса может быть существенным, а порог входа для атакующего — минимальным.
Что делать
Разработчики fastify выпустили исправление в версии 5.12.5. Рекомендуется как можно скорее обновить фреймворк:
npm install fastify@5.12.5
Если немедленное обновление невозможно, можно применить временную митигацию — отказаться от регистрации трейлеров ответа через reply.trailer() на маршрутах, обслуживаемых по HTTP/2. Это исключит условия, приводящие к установке запрещённого заголовка и падению процесса.
Дополнительно стоит рассмотреть ограничение доступа к HTTP/2-эндпоинтам на уровне обратного прокси или балансировщика до момента обновления, а также настроить автоматический перезапуск сервиса для снижения времени простоя. Однако эти меры не устраняют саму уязвимость и являются лишь временными.
Уязвимость CVE-2026-92081 в fastify — типичный пример того, как несоответствие между логикой фреймворка и требованиями протокола приводит к необработанному исключению и полному отказу сервиса. Обновление до версии 5.12.5 закрывает проблему; до его установки следует избегать использования трейлеров на HTTP/2-маршрутах. Рекомендуем проверить свои проекты и как можно быстрее применить патч.
Источник: CVE Project (cvelistV5)
