Угрозы

Для критической уязвимости NGINX впервые за 18 лет выложили PoC

Маша Даровская
By Маша Даровская , IT-редактор и автор
Для критической уязвимости NGINX впервые за 18 лет выложили PoC
Обложка © Anonhaven

Для критической уязвимости CVE-2026-42945 в NGINX появились технические детали и proof-of-concept-код. Проблема получила CVSS 9.2 и затрагивает ngx_http_rewrite_module — модуль, который используется для переписывания URL, редиректов и обработки правил rewrite, if и set. NGINX уже выпустил исправления в версиях 1.30.1 stable и 1.31.0 mainline. Компания F5 устранила уязвимость в версиях NGINX Plus 37.0.0, R36 P4 и R32 P6, а также в версиях NGINX с открытым исходным кодом 1.31.0 и 1.30.1.

Уязвимость называют NGINX Rift. Она находилась в кодовой базе с 2008 года и относится к классу heap buffer overflow — переполнению буфера в куче памяти. В базовом сценарии баг позволяет удалённо и без авторизации обрушить worker-процессы NGINX, вызвав отказ в обслуживании. При небезопасных условиях эксплуатации возможен и удалённый запуск кода.

13 мая 2026 года NGINX выпустил версии 1.30.1 и 1.31.0. В релиз вошли исправления сразу нескольких проблем: HTTP/2 request injection в ngx_http_proxy_module, buffer overflow в ngx_http_rewrite_module, buffer overread в ngx_http_scgi_module и ngx_http_uwsgi_module, buffer overread в ngx_http_charset_module, address spoofing в HTTP/3 и use-after-free в OCSP-запросах к resolver.

Самая громкая из них — CVE-2026-42945. SecurityWeek пишет, что через несколько дней после патча исследователи опубликовали техническое описание и PoC-код. 

Публичный репозиторий Depthfirst описывает эксплойт как RCE PoC для серверов, где используются директивы rewrite и set. В README также указаны затронутые и исправленные версии: NGINX Open Source 0.6.27–1.30.0, исправлено в 1.30.1 и 1.31.0; NGINX Plus R32–R36, исправлено в R32 P6, R35 P2 и R36 P4.

Проблема — в двухпроходной логике script engine NGINX. Сначала движок считает, сколько памяти нужно выделить под результат переписывания URL. Затем копирует данные в выделенный буфер. Ошибка возникает, когда состояние движка на этапе подсчёта и на этапе копирования расходится.

Depthfirst описывает ключевое условие: replacement-строка в rewrite содержит знак вопроса ?, а в правилах используются захваты регулярных выражений. На этапе подсчёта размер получается меньше нужного, а на этапе копирования часть URI экранируется и расширяется. В итоге данные, контролируемые атакующим, выходят за границу выделенного heap-буфера.

Orca Security объясняет опасный паттерн проще: особенно рискованны конфигурации с rewrite, if или set, где используются безымянные regex-captures вроде $1 или $2. Если такой сервер выходит в интернет, атакующему может хватить специально подготовленного HTTP-запроса.

Под ударом:

  • NGINX Open Source 0.6.27–1.30.0;

  • NGINX Plus R32–R36;

  • зависимые продукты и образы, которые включают уязвимый NGINX;

  • часть Kubernetes ingress-развёртываний, если они используют уязвимые версии и опасные rewrite-конфигурации.

Orca указывает связанные продукты: NGINX Ingress Controller, NGINX Gateway Fabric, NGINX App Protect WAF, F5 WAF for NGINX и решения защиты от DoS, если внутри используется уязвимая версия. Broadcom подтвердила выпуск обновлённых Bitnami-контейнеров и Helm-чартов для затронутых клиентов.

Не каждый сервер с NGINX автоматически уязвим в одинаковой степени. Нужна конкретная конфигурация с rewrite-логикой. Но проверять стоит все инстансы: вручную установленный NGINX, контейнеры, ingress-controller в Kubernetes, старые reverse-proxy, тестовые стенды, appliance-образы и embedded-поставки внутри сторонних продуктов.

Патч вышел до публикации эксплуатационных деталей. После появления PoC у атакующих появляется готовая логика проверки: найти NGINX, определить версию и конфигурационные признаки, отправить crafted request, посмотреть на падение worker-процесса или ответ сервера.

Главное действие — обновление. Для NGINX Open Source нужны 1.30.1 или 1.31.0. Для NGINX Plus — исправленные сборки R32 P6, R35 P2 или R36 P4. Для контейнеров и Helm-чартов нужно тянуть свежие образы от поставщика, а не просто пересобрать приложение поверх старого base image.

Если обновиться сразу нельзя, временная mitigation — пересмотреть конфигурацию и заменить безымянные regex-captures на именованные captures в опасных rewrite-директивах. Orca и Broadcom описывают именно этот вариант как временное снижение риска. Но это не полноценная замена патча: конфигурации часто размазаны по include-файлам, Helm values, шаблонам ingress и старым snippets.

Проверять стоит не только /etc/nginx/nginx.conf. В реальной инфраструктуре правила могут лежать в conf.d, sites-enabled, Kubernetes annotations, ConfigMap, Helm values, Terraform-шаблонах, Ansible-ролях и образах, собранных год назад. Отдельное внимание — кастомным rewrite-правилам для legacy-приложений, SEO-редиректов, CDN-origin, API gateway и multi-tenant ingress.

Для DoS-сценария признаки будут довольно грубыми: падения worker-процессов, быстрый PID cycling, ошибки heap corruption, SIGABRT, всплески 502/503/504, нестабильные health checks, короткие серии странных GET-запросов к URL с большим числом экранируемых символов.

Для RCE-сценария публичных универсальных IOC нет. Поэтому смотреть нужно шире: неожиданные дочерние процессы у NGINX worker, сетевые исходящие соединения от nginx-процесса, новые файлы во временных директориях, изменения конфигурации, странные POST/GET-паттерны перед падениями worker и любые следы выполнения shell-команд.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.

Вопросы по теме

Что случилось?
Для CVE-2026-42945 в NGINX опубликованы технические детали и PoC-код. Уязвимость затрагивает ngx_http_rewrite_module и уже исправлена в новых версиях NGINX.
Какие версии уязвимы?
NGINX Open Source от 0.6.27 до 1.30.0 и NGINX Plus R32–R36. Исправления: Open Source 1.30.1 и 1.31.0, NGINX Plus R32 P6, R35 P2, R36 P4.
Это точно удалённый запуск кода?
Надёжно подтверждён DoS через падение worker-процессов. RCE возможен в отдельных условиях; F5 указывала на риск при отключённом ASLR, а Depthfirst заявляет RCE PoC для конфигураций с rewrite и set.
Какая конфигурация особенно опасна?
Rewrite-правила с безымянными regex-captures вроде $1 или $2, особенно если replacement содержит ?, а сервер доступен из интернета.
Что делать прямо сейчас?
Обновить NGINX, обновить контейнеры и Helm-чарты, проверить ingress-controller, найти опасные rewrite-правила и временно заменить безымянные captures на именованные, если патч нельзя поставить сразу.
Эксплуатация уже идёт вживую?
Публично подтверждённой массовой эксплуатации на момент публикаций не было. Но PoC уже доступен, поэтому риск быстрых проверок и атак резко вырос.