Пять уязвимостей nginx открывают путь к выполнению кода и подделке TLS-сессий

NGINX

Пять уязвимостей в nginx позволяют остановить рабочий процесс, подделать клиентскую TLS-сессию и подменить содержимое запроса, который уходит на внутренний сервер. Патчи вошли в стабильную ветку 1.30.6 и основную 1.31.7, обе версии опубликованы 14 октября. Три проблемы получили 8.1 по шкале CVSS 3.1, ещё две - 5.3 и 6.5. В версии 4.0 той же шкалы три уязвимости набирают 9.2. Затронуты NGINX Open Source и коммерческая NGINX Plus. Все проблемы лежат в обработке трафика, плоскости управления они не касаются, поэтому интерфейсы администрирования трогать не придётся.

Пять уязвимостей nginx в версиях 1.30.6 и 1.31.7

Переполнение буфера при alias и map

Две уязвимости из пяти связаны с переполнением буфера в куче. Первая, CVE-2026-15176, срабатывает, когда в конфигурации есть директива alias, а запрошенный адрес до сопоставления с файлом меняет директива rewrite. Того же результата можно добиться, если итоговый путь к файлу подставляется в журнал доступа либо в строку, которую формируют директивы set или return. Вторая проблема устроена похоже, но касается директивы map, где сопоставление идёт по регулярным выражениям. Переполнение возникает, если фрагменты, захваченные выражением, попадают в расчёт корневого каталога или в формат журнала раньше, чем подставляется результат самой map.

Злоумышленнику достаточно отправлять подготовленные HTTP-запросы. Аутентификация не нужна, но срабатывание зависит от конфигурации сервера. Переполнение приводит к аварийному завершению рабочего процесса, то есть к отказу в обслуживании. На системах с отключённой рандомизацией адресного пространства (ASLR - механизм, который размещает объекты в памяти по случайным адресам) атакующий идёт дальше и выполняет свой код.

HTTP/3 и лишние данные в теле запроса

Третья уязвимость затрагивает поддержку HTTP/3. Часть неизвестного фрейма может обрабатываться как тело запроса. Если проксирование идёт с буферизацией тела, злоумышленник обходит ограничение на размер тела и добавляет свои данные в запрос к внутреннему серверу. Уровень угрозы здесь средний: 5.3 по CVSS 3.1. Внутренние сервисы получают искажённый запрос, поэтому страдает логика приложений, которые доверяют посреднику.

Подделка TLS-сессии при ротации ключей

Четвёртая проблема, CVE-2026-97629, проявляется при автоматической ротации ключей сессионных билетов TLS. Условие - сервер использует общий кэш сессий и не задаёт явные файлы с ключами. Тогда один из ключей остаётся неинициализированным. Подделать клиентскую сессию удаётся не всегда, а в непредсказуемом для атакующего порядке. Последствие серьёзнее самой подделки: обходится проверка клиентских сертификатов. Это открывает доступ к ресурсам, которые закрыты взаимной аутентификацией. Рейтинг - 6.5 по CVSS 3.1.

Обращение к освобождённой памяти в SSI

Пятая уязвимость связана с асинхронным вводом-выводом и страницами SSI. Если такая страница содержит команды include virtual, рабочий процесс может обратиться к уже освобождённой области памяти. Память повреждается, процесс падает. Читатель снова получает отказ в обслуживании. При отключённом ASLR или при обходе этой защиты появляется возможность выполнить чужой код. Рейтинг - 8.1 по CVSS 3.1.

Что делать администраторам

Обновление до 1.30.6 или 1.31.7 закрывает все пять проблем. Если установить патч сразу нельзя, сократите риск настройками вручную. Уберите связку alias и rewrite, а также вывод итогового пути к файлу в журнал. Не полагайтесь на фрагменты, захваченные регулярным выражением в map, при расчёте корневого каталога и в формате журнала. Отключите HTTP/3 либо буферизацию тела при проксировании. Задайте явные ключи для сессионных билетов, если нужна их ротация. Откажитесь от асинхронного ввода-вывода или от команд include virtual. Отдельно проверьте, что ASLR включён, потому что три уязвимости из пяти дают выполнение кода только при отключённой защите.

Три уязвимости из пяти ведут к остановке рабочего процесса, две другие - к подмене данных и обходу проверки клиентов. В основной ветке 1.31.7 вместе с исправлениями появились и новые возможности: поддержка баз MaxMind DB в модулях GeoIP, проверка сертификатов внутренних серверов по IP-адресу, перестройка приоритизации в HTTP/2 по схеме RFC 9218. nginx обслуживает значительную часть сайтов, поэтому патчи лучше установить в ближайшее время. Обновление занимает минуты, а последствия эксплуатации растягиваются от недоступности ресурса до доступа к закрытым разделам.

Ссылки

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