NGINX 14 октября выпустил версии 1.30.6 и 1.31.7, закрывающие пять уязвимостей веб-сервера. Три ошибки работы с памятью при определённых конфигурациях могут вызвать аварийное завершение рабочего процесса и, по оценке F5, потенциально привести к выполнению кода. Также исправлены проблема с TLS-сессиями, способная привести к обходу проверки клиентского сертификата, и ошибка HTTP/3, позволяющая добавить лишние байты в запрос, передаваемый на бэкенд.
Эксплуатация всех пяти уязвимостей зависит от конкретных конфигурационных условий. При этом proxy_request_buffering on, необходимый для сценария с HTTP/3, включён по умолчанию. Одна из ошибок затрагивает выпуски NGINX, начиная с мая 2005 года.
По состоянию на 15 октября CVE не были включены в каталог CISA Known Exploited Vulnerabilities. NGINX и F5 также не сообщали об атаках с их использованием. NGINX классифицирует все пять проблем как уязвимости средней опасности. F5, в свою очередь, оценивает три ошибки памяти в 9,2 балла по CVSS v4.0, TLS-уязвимость — в 8,3 балла, а проблему HTTP/3 — в 6,9 балла.
Какие конфигурации затронуты
Уязвимые сценарии связаны с директивами и функциями alias, rewrite, map, AIO, SSI, общим кэшем TLS-сессий и HTTP/3. Часть таких настроек может использоваться в типовых конфигурациях: например, общий кэш TLS-сессий присутствует в примерах документации NGINX, а proxy_request_buffering on, необходимый для сценария с HTTP/3, включён по умолчанию.
CVE-2026-15176: переполнение при alias, rewrite и $request_filename
CVE-2026-15176 затрагивает версии NGINX от 0.1.29 до 1.31.6. Это переполнение кучи в рабочем процессе, способное вызвать сбой и потенциально позволить выполнить код.
Проблема возникает, когда в одном месте конфигурации используются alias, изменяющая URI директива rewrite и механизм, считывающий переменную $request_filename. К последним относятся return, set, if, add_header и формат журнала доступа.
Уязвимый момент появляется после изменения URI директивой rewrite, но до выбора NGINX следующего location. Если в этот промежуток считывается $request_filename, а префикс location длиннее переписанного URI, при сопоставлении URI с файловым путём происходит переполнение буфера.
Если обновление пока невозможно, F5 рекомендует не использовать в таком месте alias и не обращаться к $request_filename.
CVE-2026-93479: ошибка в регулярных выражениях map
CVE-2026-93479 затрагивает стабильную ветку 1.30 в версиях 1.30.0–1.30.5 и основную ветку 1.31 в версиях 1.31.2–1.31.6. Это переполнение кучи в рабочем процессе, которое может привести к сбою или потенциальному выполнению кода.
Риск возникает, если регулярное выражение в map содержит захваты, а на эти захваты ссылаются root или log_format до выходной переменной карты. Как временную меру F5 предлагает использовать именованные захваты и применять их только внутри блока, в котором выполняется сопоставление регулярным выражением.
Проблема связана с исправлениями, выпущенными в июле для CVE-2026-42533 — ещё одного переполнения кучи, достижимого через захваты в регулярном выражении map. F5 оценивала ту уязвимость в 9,2 балла.
Июльское исправление добавило защиту от переполнения буфера, однако данные всё ещё могли попадать в зарезервированную область. Второй июльский патч определял размер итоговой строки по длине этого переполнения, из-за чего строка могла выйти за пределы собственного буфера. Новое исправление ограничивает этот сценарий. В лучшем случае переполнение может затронуть размер зарезервированной области в пути document root и один нулевой байт в пути access log.
В рекомендациях F5 и NGINX наиболее ранними затронутыми версиями названы 1.30.0 и 1.31.2, хотя они были выпущены до июльского изменения. Сервер, получивший июльский патч, в любом случае оказывается в уязвимом диапазоне версий.
CVE-2026-97205: use-after-free при AIO и SSI
CVE-2026-97205 присутствует в версиях от 0.8.11 до 1.31.6. Ошибка использования освобождённой памяти в рабочем процессе может привести к сбою, повреждению памяти и потенциальному выполнению кода.
При планировании таких работ можно отдельно изучить в разделе услуг ИТБ по информационной безопасности доступные направления и сопоставить их с задачами своей организации.
Для проявления ошибки должны быть включены aio и SSI, а сервер должен обрабатывать SSI-страницу с командами include virtual в определённых конфигурациях. Такие включения могут параллельно выполнять встроенные запросы.
Причина заключается в 8-битном счётчике ожидающих асинхронных операций, выполняемых в рамках одного запроса. Каждая операция увеличивала его без проверки. После 256 ожидающих операций значение обнулялось, а запрос мог быть освобождён, хотя операции продолжали ссылаться на выделенную для него память.
При невозможности обновления F5 рекомендует отключить aio либо отказаться от обслуживания SSI-страниц.
CVE-2026-95101: добавление данных в запросы HTTP/3
CVE-2026-95101 затрагивает версии 1.25.0–1.31.6. Клиент HTTP/3 может добавить лишние байты в проксируемый запрос либо сформировать тело запроса, превышающее значение client_max_body_size.
Условие для эксплуатации — использование HTTP/3 вместе с proxy_request_buffering on; это значение установлено по умолчанию. Ошибка появилась из-за того, что одно поле парсера одновременно хранило оставшуюся длину пропускаемого неизвестного фрейма и количество байтов фрейма DATA, которые требуется передать как тело запроса.
Если неизвестный фрейм разделялся на два чтения, оставшееся число байтов воспринималось как тело запроса и передавалось на бэкенд в обход проверки client_max_body_size. В качестве временной меры F5 рекомендует установить proxy_request_buffering off.
CVE-2026-97629: TLS-сессия и проверка клиентского сертификата
CVE-2026-97629 касается NGINX 1.23.2–1.31.6. Она может позволить подделать TLS-сессию и обойти проверку клиентского сертификата. F5 отдельно подчёркивает, что подделка происходит недетерминированно и не контролируется атакующим.
Проблема относится к автоматической ротации ключей сессионных билетов. TLS session tickets позволяют клиенту возобновить TLS-сеанс без полного рукопожатия. Начиная с NGINX 1.23.2, выпущенного в октябре 2022 года, настройка общего кэша сессий заставляет сервер самостоятельно генерировать и менять ключи сессионных билетов, если ключи не загружаются из файла.
Каждый рабочий процесс хранит копию трёх слотов для ключей. При ротации копировались только два слота, а третий сохранял прежние данные из памяти. Билет, указывавший на этот слот, мог быть проверен и расшифрован с использованием неинициализированного ключевого материала, что и создавало возможность подделки сессии.
Уязвимы конфигурации с ssl_session_cache shared:... без директивы ssl_session_ticket_key. В документации NGINX приведён пример ssl_session_cache shared:SSL:10m. Серверы, где установлено ssl_session_tickets off, этой проблеме не подвержены.
Если обновление откладывается, F5 предлагает удалить директиву общего кэша либо загружать ключи из файла через ssl_session_ticket_key. В феврале 2025 года NGINX уже исправлял CVE-2025-23419, связанную с повторным использованием сессий и имевшую аналогичное последствие.
Обновление и проверка конфигурации
NGINX рекомендует перейти на 1.30.6 в стабильной ветке либо на 1.31.7 в основной.
Пользователям NGINX Plus, а также продуктов F5 Ingress Controller, Gateway Fabric, Instance Manager и WAF следует проверить рекомендации F5 для конкретных сборок.
Чтобы определить, могут ли быть задействованы уязвимые пути, можно вывести итоговую конфигурацию командой nginx -T. Перечисленные ниже признаки служат для предварительного поиска кандидатов и требуют проверки эффективной конфигурации, наследования директив и контекста их применения:
- для CVE-2026-15176 — найти случаи, где
alias, изменяющий URIrewriteи чтение$request_filenameиспользуются в релевантном контексте; необходимо подтвердить, что переменная читается послеrewrite, но до повторного выбора location, а префикс location длиннее переписанного URI; - для CVE-2026-93479 — проверить регулярные выражения
mapс захватами, на которые ссылаютсяrootилиlog_format, и установить, что ссылка происходит до вычисления выходной переменнойmap; также следует учитывать область применения захватов; - для CVE-2026-97205 — среди конфигураций с совместно включёнными
aioи SSI выявить серверы, обрабатывающие SSI-страницы сinclude virtualв затронутом сценарии; - для CVE-2026-95101 — проверить строки
listenсquic, наличие проксирования черезproxy_passи эффективное значениеproxy_request_buffering; необходимо учитывать явноеproxy_request_buffering offна уровняхhttp,serverиlocation; - для CVE-2026-97629 — проверить эффективную конфигурацию с
ssl_session_cache sharedбезssl_session_ticket_keyи исключить серверы, на которых заданоssl_session_tickets off.
Практический приоритет — обновить NGINX до 1.30.6 или 1.31.7, а до обновления проверить конфигурации с alias и rewrite, map, AIO/SSI, HTTP/3 и общим кэшем TLS-сессий. Публично подтверждённых атак на момент раскрытия не было. Однако несколько сценариев затрагивают распространённые функции сервера, а временные обходные меры не во всех случаях заменяют установку патча.
