Сформирован выпуск основной ветки nginx 1.27.4, в рамках которой продолжается развитие новых возможностей, а также выпуск параллельно поддерживаемой стабильной ветки nginx 1.26.3, в которую вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В обновлениях устранена уязвимость (CVE-2025-23419), позволяющая обойти проверку клиентских TLS-сертификатов.
Уязвимость вызвана отсутствием должных проверок при обработке виртуальных хостов, привязанных к одному IP-адресу и номеру порта, и выбираемых при обращении по HTTPS на основании доменного имени, указанного при помощи TLS-расширения SNI. В подобных конфигурациях атакующий мог повторно использовать TLS-сеанс в контексте другого виртуального хоста для обхода аутентификации по клиентскому TLS-сертификату. Проблема проявляется в конфигурациях, поддерживающих возобновление TLS-сеансов при помощи “TLS session ticket” или использующих кэш TLS-сеансов в настройках сервера по умолчанию, в котором используется аутентификация по клиентским TLS-сертификатам. Уязвимость присутствует начиная с выпуска nginx 1.11.4 при сборке с OpenSSL и включении протокола TLSv1.3.
Не связанные с безопасностью изменения:
- Добавлены возможности для снижения потребления ресурсов и уменьшения нагрузки на CPU при использовании TLS в конфигурациях с большим числом блоков server и location. Добавленные изменения позволяют вместо создания для каждого блока конфигурации отдельного контекста SSL (SSL_CTX в OpenSSL), использовать уже имеющийся контекст SSL из родительского блока.
- Решены проблемы с долгой загрузкой файлов конфигурации из-за повторного разбора одного и того же набора TLS-сертификатов, ключей и списков удостоверяющих центров. Ускорена перезагрузка конфигурации за счёт повторного использования не изменившихся 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“. Через указанные директивы можно настроить максимальный размер кэша, время действия записей и время очистки невостребованных записей. Например: “ssl_certificate_cache max=1000 inactive=20s valid=1m;”.
- Добавлена директива “keepalive_min_timeout“, определяющая таймаут, в течение которого nginx не будет закрывать keep-alive соединение с клиентом.
- Решена проблема с появлением логе сообщений “gzip filter failed to use preallocated memory” при сборке с библиотекой zlib-ng.
- Решена проблема со сборкой библиотеки libatomic, при использовании сборочной опции “–with-libatomic=DIR”
- Устранена ошибка, приводившая к невозможности установить соединение по протоколу QUIC при использовании 0-RTT.
- Обеспечено игнорирование запросов согласования версий QUIC, поступающих от клиентов.
- Решены проблемы со сборкой в Solaris 10 с модулем ngx_http_v3_module.
- Исправлены ошибки в реализации HTTP/3.