Die Hauptversion nginx 1.31.0 wurde veröffentlicht, im Rahmen derer die Entwicklung neuer Funktionen fortgesetzt wird, sowie die parallele UnterstĂŒtzung der stabilen Version nginx 1.30.1, in die nur Ănderungen zur Behebung schwerwiegender Fehler und SicherheitsanfĂ€lligkeiten eingeflossen sind. In den Updates wurden 6 SicherheitsanfĂ€lligkeiten behoben, wobei die gefĂ€hrlichste die AusfĂŒhrung von Code aus der Ferne durch das Senden einer speziell gestalteten HTTP-Anfrage erlaubt. Zum Zeitpunkt der Erstellung dieser Nachricht wurden keine Patches fĂŒr angie und freenginx veröffentlicht.
Die SicherheitsanfĂ€lligkeit (CVE-2026-42945), die als kritisch eingestuft wird, resultiert aus einem PufferĂŒberlauf im Modul ngx_http_rewrite_module, der ausgenutzt werden kann, um Code mit den Rechten des nginx-Prozesses durch das Senden einer HTTP-Anfrage mit einem speziell gestalteten URI auszufĂŒhren. Das Problem tritt in Konfigurationen mit der Direktive ârewriteâ auf, in der regulĂ€re AusdrĂŒcke mit Platzhaltern durch unbenannte Variablen (z.B. $1 und $2) verwendet werden, sofern in der Ersetzungszeichenfolge ein Symbol â?â vorhanden ist. Beispiel fĂŒr eine angreifbare Konstruktion: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
AusdrĂŒcke mit benannten Platzhaltern sind von der SicherheitsanfĂ€lligkeit nicht betroffen. Zum Beispiel betrifft die SicherheitsanfĂ€lligkeit nicht Konstruktionen: rewrite ^\/users\/(?[0-9]+)\/profile\/(?
Die SicherheitsanfĂ€lligkeit besteht seit Version 0.6.27, die im MĂ€rz 2008 veröffentlicht wurde. Der Grund fĂŒr das Auftreten der SicherheitsanfĂ€lligkeit war, dass der Puffer so dimensioniert wurde, dass unmaskierte Daten darin gespeichert werden, und tatsĂ€chlich maskierte Daten nach der Verarbeitung von Sonderzeichen kopiert wurden, deren GröĂe gröĂer war, da jedes Zeichen â+â, â%â und â&â nicht als ein Byte, sondern als drei Bytes kodiert wurde. Diese Diskrepanz trat auf, weil bei der Verwendung des Zeichens â?â in der Regel rewrite das Flag âe->is_argsâ gesetzt wurde, wodurch die Maskierung aktiviert wurde, wĂ€hrend der Puffer bei einem zurĂŒckgesetzten Flag dimensioniert wurde, bei dem die Maskierung nicht angewendet wurde.
Weitere SicherheitsanfÀlligkeiten:
- CVE-2026-42926 â die Möglichkeit der Datenersetzung durch den Angreifer in die proxierte Anfrage bei Verwendung der Direktive âproxy_set_bodyâ und der Kommunikation mit dem Backend ĂŒber HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 â Zugriff auf Speicher nach dessen Freigabe (use-after-free) im Modul ngx_http_ssl_module, der bei der Verarbeitung von Antworten vom DNS-Server in Konfigurationen mit der Direktive âssl_ocspâ auftritt.
- CVE-2026-42946 â Lesen aus einem Bereich auĂerhalb des Puffers in den Modulen ngx_http_uwsgi_module und ngx_http_scgi_module, das bei der Verarbeitung einer speziell formatierten Antwort auftritt. Das Problem kann zu einem Speicherinhalt-Leck im Arbeitsprozess oder zu einem Absturz fĂŒhren.
- CVE-2026-42934 â Lesen aus einem Bereich auĂerhalb des Puffers im Arbeitsprozess, das bei der Verarbeitung von Antworten mit Dekodierung aus der UTF-8-Codierung bei Verwendung der Direktive âcharset_mapâ auftritt. Das Problem kann zu einem Speicherinhalt-Leck im Arbeitsprozess oder zu einem Absturz fĂŒhren.
- CVE-2026-40460 â Schwachstelle in der Implementierung des HTTP/3-Protokolls, die Spoofing zulĂ€sst IP-Adressen zur Umgehung von Autorisierungen oder EinschrĂ€nkungen.
Verbesserungen, die in der Veröffentlichung von nginx 1.31.0 hinzugefĂŒgt wurden:
- Das Modul ngx_http_tunnel_module wurde hinzugefĂŒgt, das die Möglichkeit eines Proxy-Betriebs (âforward proxyâ) bereitstellt, das Anfragen an einen anderen Server bei den Anfragen des Clients mittels der HTTP/1.1-Methode CONNECT weiterleitet. Es ist möglich, die Authentifizierung des Proxy-Zugriffs mit den Direktiven âauth_basicâ, âsatisfyâ und âauth_delayâ zu konfigurieren.
- Im Block âupstreamâ wurde die Direktive âleast_timeâ hinzugefĂŒgt, die eine Lastverteilungsmethode mit der Ăbertragung von Anfragen zu einem Server mit der geringsten durchschnittlichen Antwortzeit und der geringsten Anzahl aktiver Verbindungen umfasst.
- Im Modul âstream_proxyâ wurde die Direktive âproxy_ssl_alpnâ hinzugefĂŒgt, um die Liste der Protokolle festzulegen, die im ALPN-Erweiterung beim Verbinden mit dem proxierten Server zulĂ€ssig sind. Beispielsweise: âproxy_ssl_alpn h2 http/1.1â.
- Es wurde sichergestellt, dass Anfragen ĂŒber die Protokolle HTTP/2 und HTTP/3, die die Header âConnectionâ, âProxy-Connectionâ, âKeep-Aliveâ, âTransfer-Encodingâ, âUpgradeâ enthalten, abgelehnt werden.
- Im Modul ngx_http_dav_module wurde sichergestellt, dass COPY- und MOVE-Anfragen mit wiederholten Quell- und Zielressourcen oder verschachtelten Sammlungen abgelehnt werden.
- Das Fehlermeldungsprotokollierungsniveau SSL âinvalid alertâ, ârecord layer failureâ und âSSL alert number Nâ wurde von âcritâ auf âinfoâ gesenkt.
- Im Skript configure wurde der Parameter ââwithout-http_upstream_sticky_moduleâ hinzugefĂŒgt, um den Bau des Moduls http_upstream_sticky_module zu deaktivieren (der Parameter ââwithout-http_upstream_stickyâ ist als veraltet gekennzeichnet).
Zusatz: Ein Exploit fĂŒr die RCE-Schwachstelle im ngx_http_rewrite_module ist verfĂŒgbar.
Quelle: opennet.ru
