Введение
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.