14 октября 2026 nginx выпустил 1.31.7 на ветке mainline и 1.30.6 на стабильной ветке - security-релиз, закрывающий сразу пять CVE средней серьёзности.[1][2] Если последний раз вы пробегали changelog глазами, когда обновляли ядро reverse proxy, это стоит прочитать целиком: вместе фиксы закрывают переполнения буфера в alias + rewrite, вычисление строковых выражений в расчёте корня и логах, инъекцию в тело запроса в HTTP/3, подделку TLS-сессии через ротацию тикет-ключей и use-after-free в AIO/SSI. Уязвимые пути лежат в совершенно разных директивах, поэтому «затронут ли меня» - это не один ответ «да/нет», а пять разных проверок под каждый путь, который реально выполняет ваш nginx.

Это продолжение нашего гайда по HTTP/3-фиксу в 1.31.6 - тот релиз уже отправлял вас сюда специальным апдейтом и остаётся источником правды по CVE-2026-90439 (heap overflow в HTTP/3 на OpenSSL ≤ 3.5.0). Ниже - новая партия: что именно закрыто, как проверить, попадает ли ваш хост под каждую из пяти, и апгрейд, который закрывает всё разом.

Что именно закрывают 1.31.7 / 1.30.6

Все пять имеют серьёзность medium на странице адвайзори nginx.[2] Ни одна не затрагивает control plane - это data-plane проблемы worker-процессов, - но четыре из них удалённо достижимы на обычном конфиге, а две заслуживают внимания в первую очередь, потому что лежат в путях, которые большинство reverse proxy запускает по умолчанию. Вот каждая, точно сформулированная.

CVE-2026-15176 - переполнение буфера в alias + rewrite

В worker-процессе может возникнуть переполнение буфера, когда в location есть alias и URI запроса меняется директивой rewrite перед сопоставлением с путём файла - например, когда $request_filename используется в формате access log или в set/return после rewrite.[3] В записи CVE прямо сказано, что часть условий «вне контроля атакующего», а практический эффект - рестарт worker-процесса (DoS); выполнение кода возможно только на системах с отключённым или обходимым ASLR.[3]

  • Уязвимы: nginx 0.1.29–1.31.6.[2]
  • Зона риска сужается до: конфигов, где alias сочетается с rewrite (или с set/return, ссылающимися на $request_filename). Обычный reverse proxy на proxy_pass без alias этот путь не запускает.

CVE-2026-93479 - переполнение буфера при вычислении строковых выражений

Переполнение буфера может возникнуть, пока nginx вычисляет строковые выражения с переменными - это затрагивает расчёт document root и логирование запросов в модулях http и stream.[1][4] Это самый «молодой» класс в партии: он существует только в окне mainline 1.31.2–1.31.6 и его стабильном зеркале, так что всё старше или новее вне зоны риска.

  • Уязвимы: mainline 1.31.2–1.31.6; stable 1.30.0–1.30.5.[2]
  • Зона риска сужается до: конфигов, где root вычисляется из переменной или лог-строки содержат переменные. Плоские пути root /var/www/html; это не затрагивает.

CVE-2026-95101 - HTTP/3: неизвестный фрейм трактуется как тело запроса

При использовании HTTP/3 с proxy_request_buffering on; часть неизвестного фрейма может быть воспринята как тело запроса - что позволяет удалённому атакующему обойти client_max_body_size или внедрить данные в проксируемый запрос.[1][5] У этой CVE опубликован CVSS: 5.3 MEDIUM (CVSS 3.1, AV:N/AC:L/PR:N/UI:N/...) и 6.9 MEDIUM (CVSS 4.0) согласно записи cve.org.[5]

  • Уязвимы: nginx 1.25.0–1.31.6 (любая сборка с включённым HTTP/3).[2]
  • Зона риска сужается до: сборок с --with-http_v3_module, которые реально раздают listen ... quic. Если HTTP/3 у вас нет, именно эта CVE до вас не дотянется.

CVE-2026-97629 - подделка TLS-сессии через ротацию тикет-ключей

Когда настроена ротация ключей TLS session ticket (автоматический путь - ssl_session_cache shared:... без явного ssl_session_ticket_key), один из ключей ротации остаётся неинициализированным, что позволяет атакующему подделать клиентскую SSL-сессию и потенциально обойти проверку клиентских сертификатов.[6]

  • Уязвимы: nginx 1.23.2–1.31.6.[2]
  • Зона риска сужается до: TLS-серверов, полагающихся на автоматическую ротацию тикет-ключей - то есть есть директива ssl_session_cache shared: и нет ssl_session_ticket_key. Если вы задали собственный ssl_session_ticket_key, уязвимый путь автоматической ротации не тот, что работает.

CVE-2026-97205 - use-after-free в AIO + SSI

Когда включён асинхронный ввод-вывод (AIO) и SSI-страница содержит include virtual, обработка может наткнуться на use-after-free в worker-процессе - повреждение памяти или крах.[1][7]

  • Уязвимы: nginx 0.8.11–1.31.6.[2]
  • Зона риска сужается до: серверов с aio on; (или aio threads;) и раздачей SSI-страниц с include virtual. По отдельности оба редки, а вместе - ещё реже, но это самый широкий затронутый диапазон в партии.

Затронут ли мой хост? Отвечайте по конфигу, а не по серверу

Раз пять CVE живут в разных директивах, правильная проверка - один проход grep по каталогу конфигов, а потом разбор, какие совпадения у вас есть вообще. Запустите на каждой машине с nginx (включая конфиги stream-модуля - они важны для CVE-2026-93479):

nginx -v
# nginx version: nginx/1.31.6   → в зоне риска по всем пяти
# nginx version: nginx/1.30.5   → в зоне риска; обновитесь до 1.30.6 (stable)
# nginx version: nginx/1.31.7   → пропатчено

echo "--- alias + rewrite ($request_filename) [CVE-2026-15176]"
grep -rnE 'alias|rewrite|request_filename' /etc/nginx/

echo "--- root из переменной / строки в access log [CVE-2026-93479]"
grep -rnE 'root\s+\$|log_format.*\$|access_log.*\$' /etc/nginx/

echo "--- HTTP/3-листенеры [CVE-2026-95101]"
grep -rnE 'listen .*(quic|http3)|http3 on' /etc/nginx/

echo "--- TLS session cache БЕЗ явного ticket key [CVE-2026-97629]"
grep -rnE 'ssl_session_cache|ssl_session_ticket_key' /etc/nginx/

echo "--- AIO + SSI include virtual [CVE-2026-97205]"
grep -rnE 'aio\s+(on|threads)|include virtual' /etc/nginx/

Решает версия из nginx -v, есть ли у совпадения смысл. Mainline 1.31.2–1.31.6 с root из переменной - прямо в зоне риска CVE-2026-93479; тот же конфиг на 1.31.1 - нет (эта версия предшествует багованному окну). И помните гейт HTTP/3 из гайда по 1.31.6: для CVE-2026-95101 модуль должен быть скомпилирован (nginx -V 2>&1 | grep -- '-with-http_v3_module'), а listen ... quic - реально раздавать трафик.

Простейший корректный вывод: если у вас версия ≤ 1.31.6 (mainline) или ≤ 1.30.5 (stable), вы в зоне риска минимум по одной из пяти - вопрос только по какой, и ответ меняет лишь срочность, а не действие. Обновляйтесь.

Апгрейд: один релиз закрывает все пять на обеих ветках

Обе исправленные версии вышли в один день, 14 октября 2026, в исходниках и бинарных пакетах.[1][8] Рутина - та же, что у любого security-бампа nginx:

# Debian / Ubuntu - актуальный исправленный mainline (окт. 2026)
sudo apt update
sudo apt install nginx=1.31.7*
# или просто возьмите любое обновление из репозитория: sudo apt upgrade

Если ваш дистрибутив закрепляет более старый stable (часто на Ubuntu), переезжайте на официальные пакеты nginx.org ветки mainline 1.31.x или stable 1.30.x, а не сидите на уязвимой сборке.

Проверьте конфиг перед тем, как трогать работающий процесс:

sudo nginx -t

Для security-патча - restart: reload во время смены продолжает обслуживать новые соединения старым бинарником. Затем подтвердите версию, которая реально обслуживает:

sudo systemctl restart nginx
nginx -v
# nginx version: nginx/1.31.7

Несколько слов о фичах, которые едут вместе с фиксом

Оба релиза добавляют больше, чем фиксы, и стоит знать, что вы получаете за тот же апгрейд. Geoip-модули (ngx_http_geoip_module, ngx_stream_geoip_module) теперь читают базы в формате MaxMind DB (MMDB); сертификаты backend теперь можно проверять по IP-адресу; QUIC поддерживает reconfiguration и binary upgrade при использовании директивы quic_bpf; а HTTP/2-модуль mainline переходит на приоритизацию RFC 9218.[1] Ничто из этого не меняет security-историю - это причины, по которым вырос номер релиза, а не по которым нужно обновляться. Пять CVE выше - вот причина.

К чему это относится

Этот релиз - прямой наследник фикса HTTP/3 в 1.31.6, который уже содержит коллаут, отправляющий вас сюда. Инъекция HTTP/3 в CVE-2026-95101 и безопасная обработка TLS-тикетов в CVE-2026-97629 живут в той же зоне, что и правильно настроенный reverse proxy: если ваш server-блок из того гайда (обычный listen 443 ssl; + http2 on;, без QUIC, явные keepalive и заголовки), вы уже вне нескольких зон поражения, а апгрейд закрывает остальное.

Короткая версия

nginx 1.31.7 (mainline) и 1.30.6 (stable), выпущенные 14 октября 2026, закрывают пять CVE средней серьёзности: CVE-2026-15176 (переполнение буфера в alias + rewrite → $request_filename), CVE-2026-93479 (переполнение при вычислении строковых выражений с переменными в root/логах, http+stream), CVE-2026-95101 (неизвестный фрейм как тело запроса в HTTP/3 → обход client_max_body_size / инъекция в проксируемый запрос), CVE-2026-97629 (неинициализированный ключ ротации TLS-тикетов → подделка сессии) и CVE-2026-97205 (use-after-free в AIO + SSI include virtual).[1][2] Если у вас ≤ 1.31.6 / ≤ 1.30.5, вы в зоне риска минимум по одной: grep по конфигу на alias/rewrite, root из переменной, quic-листенеры, ssl_session_cache без явного ssl_session_ticket_key и aio+SSI, затем апгрейд, nginx -t, restart и подтверждение через nginx -v. Один restart закрывает все пять.

Источники

  1. nginx - Changes with nginx 1.31.7 / 1.30.6 (14.10.2026: пять security-заметок - CVE-2026-15176, CVE-2026-93479, CVE-2026-95101, CVE-2026-97629, CVE-2026-97205; фичи: geoip MMDB, проверка сертификатов backend по IP, QUIC reconfig с quic_bpf, приоритизация HTTP/2 RFC 9218). https://nginx.org/en/CHANGES ; https://nginx.org/en/CHANGES-1.30 - проверено 2026-10-17
  2. nginx - Security advisories (все пять серьёзность medium; затронутые диапазоны: 15176 0.1.29–1.31.6, 93479 1.31.2–1.31.6 и 1.30.0–1.30.5, 95101 1.25.0–1.31.6, 97629 1.23.2–1.31.6, 97205 0.8.11–1.31.6; не уязвимы 1.31.7+/1.30.6+). https://nginx.org/en/security_advisories.html - проверено 2026-10-17
  3. Запись CVE-2026-15176 (CNA F5; alias+rewrite с $request_filename; часть условий вне контроля атакующего; heap buffer overflow → рестарт воркера; выполнение кода только при отключённом/обходимом ASLR; только data plane; CWE-122). https://www.cve.org/CVERecord?id=CVE-2026-15176 - проверено 2026-10-17
  4. Запись CVE-2026-93479 (CNA F5; map-директива с regex + ссылки на переменные в root/access log; heap buffer overflow → DoS, возможное выполнение кода при обходе ASLR; только data plane; CWE-122). https://www.cve.org/CVERecord?id=CVE-2026-93479 - проверено 2026-10-17
  5. Запись CVE-2026-95101 (CNA F5; ngx_http_v3_module; HTTP/3 с proxy_request_buffering on → инъекция данных в проксируемый запрос; CVSS 5.3 MEDIUM 3.1 / 6.9 MEDIUM 4.0; CWE-172). https://www.cve.org/CVERecord?id=CVE-2026-95101 - проверено 2026-10-17
  6. Запись CVE-2026-97629 (CNA F5; ngx_http_ssl_module; автоматическая ротация ключей SSL session ticket с неинициализированным ключом → подделка сессии, возможный обход проверки клиентских сертификатов). https://www.cve.org/CVERecord?id=CVE-2026-97629 - проверено 2026-10-17
  7. Запись CVE-2026-97205 (CNA F5; ngx_http_core_module; AIO + SSI include virtual → use-after-free, повреждение памяти или крах воркера, возможное выполнение кода при обходе ASLR; CWE-416). https://www.cve.org/CVERecord?id=CVE-2026-97205 - проверено 2026-10-17
  8. nginx - download (mainline 1.31.7, stable 1.30.6, исходники и бинарные пакеты). https://nginx.org/en/download.html - проверено 2026-10-17