Die Hauptversion nginx 1.27.4 wurde veröffentlicht, in deren Rahmen die Entwicklung neuer Funktionen fortgesetzt wird, sowie die parallel unterstützte stabile Version nginx 1.26.3, in die nur Änderungen zur Behebung schwerwiegender Fehler und Sicherheitsanfälligkeiten einfließen. In den Updates wurde die Schwachstelle (CVE-2025-23419) behoben, die es ermöglicht, die Überprüfung von Client-TLS-Zertifikaten zu umgehen.
Die Schwachstelle entsteht durch fehlende ordnungsgemäße Überprüfungen bei der Verarbeitung von virtuellen Hosts, die an eine IP-Adresse und Portnummer gebunden sind und bei Zugriffen über HTTPS basierend auf dem durch die TLS-Erweiterung SNI angegebenen Domainnamen ausgewählt werden. In solchen Konfigurationen konnte ein Angreifer die TLS-Sitzung im Kontext eines anderen virtuellen Hosts wiederverwenden, um die Authentifizierung durch das Client-TLS-Zertifikat zu umgehen. Das Problem tritt in Konfigurationen auf, die die Wiederaufnahme von TLS-Sitzungen mithilfe von „TLS-Sitzungstickets“ unterstützen oder einen TLS-Sitzungscache in den Einstellungen verwenden. Server standardmäßig, in dem die Authentifizierung über Client-TLS-Zertifikate verwendet wird. Die Schwachstelle ist seit der Version nginx 1.11.4 bei der Erstellung mit OpenSSL und der Aktivierung des Protokolls TLSv1.3 vorhanden.
Nicht sicherheitsbezogene Änderungen:
- Es wurden Möglichkeiten zur Reduzierung des Ressourcenverbrauchs und der CPU-Last bei der Verwendung von TLS in Konfigurationen mit einer großen Anzahl von Server- und Standortblöcken hinzugefügt. Die vorgenommenen Änderungen erlauben es, anstelle von für jeden Konfigurationsblock einen separaten SSL-Kontext (SSL_CTX in OpenSSL) zu erstellen, den bereits vorhandenen SSL-Kontext aus dem übergeordneten Block zu verwenden.
- Probleme mit langen Ladezeiten von Konfigurationsdateien aufgrund der wiederholten Analyse desselben Satzes TLS-Zertifikate, von Schlüsseln und Zertifizierungsstellenlisten wurden gelöst. Der Neustart der Konfiguration wurde durch die Wiederverwendung unveränderter TLS-Objekte, wie Zertifikate, Schlüssel und CRLs, beschleunigt. Um die Vererbung von Objekten bei der Aktualisierung der Konfiguration zu deaktivieren, wurde die Direktive „ssl_object_cache_inheritable“ hinzugefügt.
- Ein Cache für Zertifikate und Schlüssel, die mit Variablen in den Direktiven geladen werden (zum Beispiel „ssl_certificate /etc/ssl/$ssl_server_name.crt“), wurde hinzugefügt. Für die Cache-Verwaltung wurden die Direktiven „ssl_certificate_cache“, „proxy_ssl_certificate_cache“, „grpc_ssl_certificate_cache“ und „uwsgi_ssl_certificate_cache“ hinzugefügt. Über die angegebenen Direktiven können die maximale Cache-Größe, die Gültigkeitsdauer der Einträge und die Zeit für die Bereinigung ungenutzter Einträge konfiguriert werden. Zum Beispiel: „ssl_certificate_cache max=1000 inactive=20s valid=1m;“.
- Die Direktive „keepalive_min_timeout“ wurde hinzugefügt, die den Timeout definiert, innerhalb dessen nginx die Keep-Alive-Verbindung mit dem Client nicht schließt.
- Ein Problem mit der Meldung „gzip filter failed to use preallocated memory“ bei der Erstellung mit der zlib-ng-Bibliothek wurde behoben.
- Ein Problem beim Erstellen der libatomic-Bibliothek unter Verwendung der Build-Option „—with-libatomic=DIR“ wurde gelöst.
- Ein Fehler, der dazu führte, dass keine Verbindung über das QUIC-Protokoll bei Verwendung von 0-RTT hergestellt werden konnte, wurde behoben.
- Anfragen zur Aushandlung von QUIC-Versionen, die von Clients eingehen, werden ignoriert.
- Probleme beim Erstellen in Solaris 10 mit dem Modul ngx_http_v3_module wurden behoben.
- Fehler in der Implementierung von HTTP/3 wurden korrigiert.
Quelle: opennet.ru
