Wydano główną wersję nginx 1.27.4, w ramach której kontynuowany jest rozwój nowych możliwości, a także wydano równolegle wspieraną stabilną wersję nginx 1.26.3, do której wprowadzane są tylko zmiany związane z usuwaniem poważnych błędów i luk w zabezpieczeniach. W aktualizacjach usunięto lukę (CVE-2025-23419), która umożliwia obejście weryfikacji certyfikatów TLS klienta.
Luka została spowodowana brakiem odpowiednich kontroli podczas przetwarzania wirtualnych hostów powiązanych z jednym adresem IP i numerem portu, wybieranych podczas połączeń HTTPS na podstawie nazwy domeny określonej za pomocą rozszerzenia TLS SNI. W takich konfiguracjach atakujący mógł ponownie wykorzystać sesję TLS w kontekście innego wirtualnego hosta, aby obejść uwierzytelnienie za pomocą certyfikatu TLS klienta. Problem występuje w konfiguracjach obsługujących wznawianie sesji TLS przy użyciu „TLS session ticket” lub korzystających z pamięci podręcznej sesji TLS w ustawieniach serwera domyślnie, w której używane jest uwierzytelnienie na podstawie certyfikatów TLS klienta. Luka występuje od wydania nginx 1.11.4 przy budowie z OpenSSL i włączeniu protokołu TLSv1.3.
Zmiany niezwiązane z bezpieczeństwem:
- Dodano wsparcie w celu zmniejszenia zużycia zasobów i obciążenia CPU podczas korzystania z TLS w konfiguracjach z dużą liczbą bloków server i location. Wprowadzone zmiany umożliwiają wykorzystanie już istniejącego kontekstu SSL z bloku nadrzędnego zamiast tworzenia oddzielnego kontekstu SSL (SSL_CTX w OpenSSL) dla każdego bloku konfiguracyjnego.
- Rozwiązano problemy z długim ładowaniem plików konfiguracyjnych spowodowanym ponownym analizowaniem tego samego zestawu certyfikatów TLS, kluczy i list certyfikatów. Przyspieszono ponowne ładowanie konfiguracji dzięki ponownemu wykorzystaniu niezmienionych obiektów TLS, takich jak certyfikaty, klucze i CRL. Aby wyłączyć dziedziczenie obiektów podczas aktualizacji konfiguracji, dodano dyrektywę „ssl_object_cache_inheritable”.
- Dodano pamięć podręczną dla certyfikatów i kluczy ładowanych za pomocą zmiennych w dyrektywach (np. „ssl_certificate /etc/ssl/$ssl_server_name.crt”). Dodano dyrektywy „ssl_certificate_cache”, „proxy_ssl_certificate_cache”, „grpc_ssl_certificate_cache” oraz „uwsgi_ssl_certificate_cache” do zarządzania pamięcią podręczną. Poprzez te dyrektywy można skonfigurować maksymalny rozmiar pamięci podręcznej, czas ważności zapisów oraz czas czyszczenia nieużywanych zapisów. Na przykład: „ssl_certificate_cache max=1000 inactive=20s valid=1m;”.
- Dodano dyrektywę „keepalive_min_timeout”, która określa czas oczekiwania, w którym nginx nie zamknie połączenia keep-alive z klientem.
- Rozwiązano problem z pojawianiem się w dziennikach komunikatów „gzip filter failed to use preallocated memory” przy budowie z biblioteką zlib-ng.
- Rozwiązano problem ze składaniem biblioteki libatomic przy użyciu opcji budowy „—with-libatomic=DIR”
- Usunięto błąd uniemożliwiający nawiązanie połączenia protokołem QUIC przy użyciu 0-RTT.
- Zabezpieczono ignorowanie żądań negocjacji wersji QUIC, które pochodzą od klientów.
- Rozwiązano problemy ze składaniem w Solaris 10 z modułem ngx_http_v3_module.
- Naprawiono błędy w implementacji HTTP/3.
Źródło: opennet.ru
