Двадцать лет уязвимостей Nginx: почему NGINX Rift требует патча прямо сейчас

Двадцать лет уязвимостей Nginx: почему NGINX Rift требует патча прямо сейчас

Май 14, 2026 nginx security cve-2026-42945 nginx rift web server vulnerabilities infrastructure security buffer overflow rewrite module zero-day response production security

Двадцать лет уязвимостей в Nginx: почему NGINX Rift требует патча прямо сейчас

Все мы знаем: старый код — это риск для безопасности. А если такая "находка" затаилась в одном из самых популярных веб-серверов интернета аж 18 лет?

F5 выпустила патчи для четырёх дыр в Nginx. Главная из них — CVE-2026-42945, или NGINX Rift, как окрестили её исследователи из depthfirst. Её критичность заставит любую команду срочно запустить обновления.

Идеальный шторм: старая ошибка, свежие проблемы

Разберём, почему эта уязвимость так опасна.

Суть бага: Переполнение буфера кучи в модуле rewrite. Она сидит в Nginx с версии 0.6.27 от 2008 года. Тогда Docker ещё не придумали, смартфоны были редкостью, а Nginx только набирал обороты против Apache.

Как атаковать: Злоумышленнику без авторизации хватит одного хитрого HTTP-запроса. Никаких цепочек эксплойтов, фишинга или кражи паролей. Просто запрос — и сервер в беде.

Последствия: Без ASLR — полноценное выполнение кода на сервере. Полный провал. С ASLR — надёжный DoS: рабочие процессы падают, перезапускаются и крутятся в цикле.

Оценка CVSS: 9.2 — критическая. Почти максимум.

Почему это не прошло незамеченным за 20 лет

Главный вопрос: как такая дырка пережила два десятилетия? Ответ учит нас важному о безопасности ПО.

Модуль rewrite в Nginx работает с PCRE для сопоставления URL. Если правила используют безымянные захваты ($1, $2 и т.д.), а за ними идёт ещё rewrite, if или set — код пишет за пределы выделенной памяти кучи. Классическое переполнение буфера. Его могли бы поймать на ревью, но оно просочилось.

Это доказывает: даже топовые open-source проекты с миллионами пользователей не застрахованы от древних багов. Долгая жизнь Nginx увеличивает зону поражения.

Кому патчить срочно

Пользователи NGINX Plus: На R32–R36 берите R32 P6 или R36 P4.

Open Source: Версии 1.0.0–1.30.0 под ударом. Переходите на 1.30.1 или 1.31.0.

Исключение для древних: С 0.6.27 по 0.9.7 патчей не будет. Полная миграция — без вариантов.

Нет времени на патч? Временная защита

Заморозка изменений или старые зависимости? Вот обходной путь:

Меняйте безымянные захваты PCRE на именованные в rewrite. Забудьте $1, $2. Используйте (?<имя>...) и $имя. Это закроет путь к переполнению, но не починит корень проблемы.

Пример:

# Уязвимо
rewrite ^/user/([0-9]+)$ /profile?id=$1 last;

# Безопаснее (временно)
rewrite ^/user/(?<id>[0-9]+)$ /profile?id=$id last;

Это пластырь. Патчьте при первой возможности.

Ещё три CVE в свежем релизе

NGINX Rift в центре внимания, но F5 закрыла и другие:

  • CVE-2026-42946 (CVSS 8.3 High): Чрезмерное выделение памяти в SCGI и uWSGI — DoS на определённых прокси.
  • CVE-2026-40701 (CVSS 6.3 Medium): Use-after-free в SSL-модуле при ssl_verify_client и ssl_ocsp.
  • CVE-2026-42934 (CVSS 4.8 Medium): Чтение за границами в charset-модуле.

Не такие срочные, но фиксите в ближайшее окно обслуживания.

Уроки для инфраструктуры

NGINX Rift напоминает о жёстких реалиях:

  1. Популярность не спасает. Nginx везде, но баг просидел 18 лет незамеченным.

  2. Возраст — не плюс. Старый код копит проблемы, а не закаляется.

  3. Безопасность = скорость патча. Одна дырявая инстанция тянет всю систему вниз.

  4. Мониторинг спасает. Даже с ASLR DoS бьёт мгновенно.

Итог

Если у вас Nginx — Open Source или Plus — патчи этой недели как пожарная тревога. Древность бага, простота атаки и критичность ставят NGINX Rift в приоритет.

Обновляйтесь на неделе. Тестируйте в staging, но в прод не тяните. Риск уязвимости круче, чем апдейт стабильного Nginx.

Заодно проверьте конфиги: rewrite-правила, версии по всей инфраструктуре. Укрепите оборону.

Будьте в безопасности.

Read in other languages:

BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN