Оглавление

Введение

Nginx продолжает развиваться, предлагая новые возможности и устраняя критические уязвимости. В недавних выпусках 1.27.4 (основная ветка) и 1.26.3 (стабильная ветка) были внесены важные исправления, включая устранение уязвимости CVE-2025-23419, оптимизацию работы с TLS и снижение нагрузки на CPU.

Уязвимость CVE-2025-23419: что исправили?

Уязвимость CVE-2025-23419 позволяла злоумышленникам обходить проверку клиентских TLS-сертификатов при использовании виртуальных хостов, привязанных к одному IP-адресу и порту. Проблема затрагивала конфигурации с TLS session ticket или кэшем TLS-сеансов и присутствовала в Nginx с версии 1.11.4 при использовании OpenSSL и включённого TLSv1.3.

Ключевые исправления безопасности:

  • Закрыта возможность повторного использования TLS-сеансов в контексте другого виртуального хоста.
  • Усилены проверки аутентификации клиентских сертификатов.
  • Обновлён механизм управления TLS-контекстами, предотвращая возможные атаки.

Оптимизации и новые возможности

Помимо исправлений безопасности, в новых версиях Nginx добавлены улучшения, касающиеся производительности и удобства конфигурирования.

1. Оптимизация нагрузки при использовании TLS

  • Теперь вместо создания отдельного SSL-контекста (SSL_CTX) для каждого server- или location-блока используется общий контекст SSL родительского блока.
  • Это снижает нагрузку на CPU и уменьшает расход памяти, особенно в сложных конфигурациях с большим числом SSL-ресурсов.

2. Ускоренная загрузка конфигурации

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

3. Улучшенная работа с сертификатами

  • Введён кэш сертификатов и ключей, загруженных через переменные в директивах (ssl_certificate /etc/ssl/$ssl_server_name.crt).
  • Для управления кэшем добавлены новые директивы:
    • ssl_certificate_cache
    • proxy_ssl_certificate_cache
    • grpc_ssl_certificate_cache
    • uwsgi_ssl_certificate_cache
  • Эти параметры позволяют ограничивать размер кэша, время хранения записей и частоту очистки.

4. Улучшенная поддержка QUIC и HTTP/3

  • Исправлены ошибки, приводившие к проблемам с установлением соединений по QUIC 0-RTT.
  • Добавлена возможность игнорировать запросы согласования версий QUIC, поступающие от клиентов.
  • Улучшена сборка для Solaris 10 при использовании модуля ngx_http_v3_module.
  • Исправлены ошибки в реализации HTTP/3.

5. Дополнительные исправления

  • Устранена ошибка gzip filter failed to use preallocated memory, возникавшая при использовании zlib-ng.
  • Исправлена проблема со сборкой libatomic при использовании параметра --with-libatomic=DIR.
  • Добавлена директива keepalive_min_timeout, позволяющая избегать преждевременного разрыва keep-alive соединений.

Итог

Обновления Nginx 1.27.4 и 1.26.3 принесли значительные улучшения в плане безопасности, производительности и удобства настройки TLS. Если вы ещё не обновили свой сервер, стоит сделать это как можно скорее, особенно если используется клиентская аутентификация через TLS-сертификаты.

Подробнее об изменениях можно прочитать в официальном анонсе: nginx-announce.