Уязвимость вызвана отсутствием должных проверок при обработке виртуальных хостов, привязанных к одному 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=62679