В nginx 1.31.0 закрыто шесть уязвимостей, одна из которых позволяет удаленно выполнить код

NGINX

13 мая 2026 года разработчики nginx представили новую версию своего популярного веб-сервера и обратного прокси. Релиз 1.31.0 получился необычно насыщенным с точки зрения безопасности: в нём исправлено сразу шесть уязвимостей, каждая из которых получила свой идентификатор CVE. Среди них есть и по-настоящему опасные проблемы, способные привести к выполнению произвольного кода на атакуемой системе. Учитывая, что nginx используется на миллионах сайтов и серверов по всему миру, администраторам стоит как можно скорее обновить свои инсталляции.

Детали уязвимостей

Наибольшую угрозу представляет уязвимость CVE-2026-42945 в модуле ngx_http_rewrite_module. Она получила высокий балл по шкале CVSS 3.1 - 8.1, а по новой версии CVSS 4.0 и вовсе 9.2, что приближает её к критической отметке. Проблема возникает, когда в конфигурации nginx директива "rewrite" используется вместе с директивами "rewrite", "if" или "set", причем в строке замены присутствует безымянное захваченное значение из регулярного выражения, например "$1" или "$2", а сама строка замены содержит вопросительный знак. В такой ситуации возможна запись за границы буфера в куче (heap buffer overflow). На системах, где отключена технология рандомизации адресного пространства (ASLR), злоумышленник может добиться выполнения произвольного кода. Атаке подвержены как NGINX Open Source, так и коммерческая версия NGINX Plus. Автор находки - исследователь Ли Линь.

Вторая по степени опасности уязвимость CVE-2026-40460 затрагивает поддержку HTTP/3 и QUIC. Если в nginx активирован модуль ngx_http_quic_module, атакующий может подменить свой исходный IP-адрес во время обработки миграции соединения. Это приводит к обходу авторизации и ограничений по частоте запросов. Проблеме присвоен средний уровень опасности (6.5 по CVSS 3.1). Её обнаружил Родриго Ланет. Важно отметить, что для эксплуатации злоумышленнику не нужна предварительная аутентификация.

Ещё одна серьёзная проблема CVE-2026-42926 связана с модулем проксирования HTTP/2. Когда nginx настроен на передачу данных по HTTP/2 с помощью "proxy_http_version 2;" и при этом используется директива "proxy_set_body", атакующий может внедрить собственные кадры и данные в запрос к серверу-получателю. Это чревато подменой содержимого запроса или искажением логики приложения. Уязвимость классифицируется как средняя (5.8). Её обнаружил Муфид В. Х. из Winfunc Research.

Модули ngx_http_scgi_module и ngx_http_uwsgi_module (CVE-2026-42946) страдают от переполнения буфера при чтении. Если настроены директивы "scgi_pass" или "uwsgi_pass", атакующий, способный перехватывать трафик между nginx и внутренним сервером, может отправить специально сформированный ответ. Это вызовет чрезмерное выделение памяти или чтение за пределами выделенной области, что позволит прочитать часть памяти рабочего процесса или аварийно его завершить. Рейтинг CVSS 3.1 - 6.5.

Модуль обработки кодировок ngx_http_charset_module (CVE-2026-42934) содержит аналогичный дефект. Если администратор использует директивы "charset", "source_charset" и "charset_map" вместе с "proxy_pass" и отключением буферизации ("proxy_buffering off;"), то при отправке особым образом подготовленного запроса возможно чтение памяти рабочего процесса. Уязвимость оценивается как средняя (4.8). Её обнаружил Дэвид Карлье.

Наконец, уязвимость CVE-2026-40701 в модуле ngx_http_ssl_module проявляется при включённой проверке клиентского сертификата ("ssl_verify_client on;") и активированном OCSP-статусе ("ssl_ocsp on;"). В этой конфигурации неаутентифицированный злоумышленник может вызвать обращение к уже освобождённой области памяти (use-after-free). Это способно привести к искажению данных или аварийному завершению рабочего процесса. Балл CVSS 3.1 - 4.8, однако эксплуатация требует выполнения некоторых условий.

Помимо исправления уязвимостей, версия 1.31.0 содержит ряд полезных изменений. Например, nginx теперь отклоняет запросы по протоколам HTTP/2 и HTTP/3, содержащие заголовки "Connection", "Proxy-Connection", "Keep-Alive", "Transfer-Encoding", "Upgrade", а также заголовок "TE" со значением, отличным от "trailers". Модуль ngx_http_dav_module перестаёт выполнять операции копирования и перемещения, когда источник и приёмник совпадают или находятся в отношении "родитель-потомок". Улучшена работа с логами - некоторые сообщения об ошибках SSL понижены с уровня "crit" до "info". Добавлены новые возможности: модуль туннелирования, директива "least_time" в блоке "upstream" для выбора сервера с наименьшим временем ответа, а также поддержка протокола ALPN для SSL-соединений на уровне потока.

В свете столь обширного перечня уязвимостей, особенно учитывая возможность выполнения кода, администраторам следует незамедлительно обновиться до nginx 1.31.0. Тем, кто не может выполнить обновление немедленно, рекомендуется временно отключить затронутые модули или настроить правила межсетевого экрана, ограничивающие доступ к уязвимым конфигурациям. Однако самый надёжный способ - установить актуальную версию, в которой все перечисленные проблемы устранены.

Ссылки

Комментарии: 0