Nginx 1.27.4 и 1.26.3: новые возможности, устранение уязвимостей и оптимизация TLS

Nginx 1.27.4 (mainline) и 1.26.3 (stable) закрыли CVE-2025-23419, подтянули TLS-контексты и кэш сертификатов, поправили QUIC/HTTP/3. Если на одном IP несколько vhost с client certs или session tickets – обновление приоритетное.

CVE-2025-23419: обход client certificate

Уязвимость позволяла повторно использовать TLS-сеанс в контексте другого виртуального хоста, когда несколько server-блоков сидят на одном IP:port. Затронуты конфигурации с TLS session ticket или session cache, Nginx с 1.11.4, OpenSSL и включённый TLSv1.3.

Что закрыли:

  • повторное использование TLS-сеанса «чужим» vhost;
  • усиленные проверки клиентских сертификатов;
  • аккуратнее управление TLS-контекстами между server-блоками.

TLS: меньше SSL_CTX и быстрее reload

Вместо отдельного SSL-контекста на каждый server/location с SSL теперь чаще переиспользуется контекст родительского блока. Меньше CPU и памяти на больших конфигах с кучей сертификатов.

При загрузке конфига TLS-объекты (сертификаты, ключи, CRL) тоже переиспользуются. Директива ssl_object_cache_inheritable позволяет отключить наследование объектов при обновлении конфигурации, если это мешает вашей схеме.

Кэш сертификатов из переменных

Если сертификат задаётся через переменную, например ssl_certificate /etc/ssl/$ssl_server_name.crt, появился кэш загруженных файлов. Управление:

  • ssl_certificate_cache
  • proxy_ssl_certificate_cache
  • grpc_ssl_certificate_cache
  • uwsgi_ssl_certificate_cache

Ими задают размер кэша, TTL записей и частоту очистки – полезно на shared-хостинге и SNI-фермах, где путь к cert зависит от имени.

QUIC, HTTP/3 и прочие фиксы

  • стабильнее QUIC 0-RTT при установлении соединения;
  • можно игнорировать запросы согласования версий QUIC от клиента;
  • правки в HTTP/3 и сборке ngx_http_v3_module (в т.ч. Solaris 10);
  • ошибка gzip filter failed to use preallocated memory с zlib-ng;
  • сборка libatomic с --with-libatomic=DIR;
  • директива keepalive_min_timeout – не рвать keep-alive слишком рано.

Что сделать на сервере

  • обновить пакет/сборку до 1.26.3+ (stable) или 1.27.4+ (mainline);
  • nginx -t и graceful reload;
  • если mTLS и несколько vhost на одном IP – после апдейта прогнать сценарии с client cert;
  • при certs из переменных – при необходимости настроить *_certificate_cache.

Итог: это не «косметический» релиз. CVE по TLS session reuse, экономия на SSL_CTX и кэш сертификатов – практичные причины обновиться, особенно на edge с SNI и client auth.

Источники и ссылки


Комментарии загружаются…