Update von nginx 1.31.0 zur Behebung einer RCE-Sicherheitsanfälligkeit, die über HTTP-Anfragen ausgenutzt werden kann.

Die Hauptversion nginx 1.31.0 wurde veröffentlicht, in der die Entwicklung neuer Funktionen fortgesetzt wird. Gleichzeitig wird die stabil unterstützte Version nginx 1.30.1 weitergeführt, in die nur Änderungen zur Behebung schwerwiegender Fehler und Sicherheitsanfälligkeiten übernommen werden. In den Updates wurden 6 Sicherheitsanfälligkeiten behoben, wobei die gefährlichste die Ausführung von Code aus der Ferne über speziell gestaltete HTTP-Anfragen zulässt. Für angie und freenginx sind zum Zeitpunkt der Veröffentlichung dieser Nachricht keine Patches verfügbar.

Die Sicherheitsanfälligkeit (CVE-2026-42945), die als kritisch eingestuft wird, wird durch einen Buffer Overflow im Modul ngx_http_rewrite_module verursacht. Diese kann ausgenutzt werden, um Code mit den Rechten des nginx-Prozesses auszuführen, indem eine HTTP-Anfrage mit einer speziell formatierten URI gesendet wird. Das Problem tritt in Konfigurationen mit der Direktive „rewrite“ auf, in denen in regulären Ausdrücken mit Platzhaltern unter Verwendung von unbenannten Variablen (z. B. $1 und $2) gearbeitet wird, vorausgesetzt, die Ersetzungszeichenkette enthält ein „?“-Zeichen. Beispiel für eine verwundbare 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. Beispielsweise betrifft die Anfälligkeit keine Konstruktionen wie: rewrite ^/users/(?[0-9]+)/profile/(?

.*)$ /profile.php?id=$user_id&tab=$section last;

Die Schwachstelle ist seit Version 0.6.27 vorhanden, die im März 2008 veröffentlicht wurde. Die Ursache der Schwachstelle liegt darin, dass der Puffer so alloziert wurde, als würden unveränderte Daten geschrieben, tatsächlich jedoch nach der Ausführung der Escape-Sequenz, die größer war, Daten kopiert wurden, da jedes Zeichen „+“, „%“ und „&“ nicht mit einem, sondern mit drei Bytes kodiert wurde. Diese Diskrepanz entstand, weil, wenn im Rewrite-Regel ein „?“ vorhanden war, das Flag „e->is_args“ gesetzt wurde, was das Escaping aktivierte, die Pufferallokation jedoch mit zurückgesetztem Flag vorgenommen wurde, bei dem das Escaping nicht angewendet wurde.

Weitere Schwachstellen:

  • CVE-2026-42926 – die Möglichkeit der Einspeisung von Angreifer-Daten in die proxierte Anfrage bei Verwendung der Direktive „proxy_set_body“ und Zugriff auf das Backend über HTTP/2 (proxy_http_version=2).
  • CVE-2026-40701 – Zugriff auf den Speicher nach seiner Freigabe (use-after-free) im Modul ngx_http_ssl_module, das bei der Verarbeitung von Antworten vom DNS-Server in Konfigurationen mit der Direktive „ssl_ocsp“ auftritt.
  • CVE-2026-42946 — Bufferüberlauf in den Modulen ngx_http_uwsgi_module und ngx_http_scgi_module, der auftritt, wenn eine speziell formatierte Antwort verarbeitet wird. Dieses Problem kann zu einem Speicherleck im Arbeitsprozess oder zu dessen Absturz führen.
  • CVE-2026-42934 — Bufferüberlauf im Arbeitsprozess, der auftritt, wenn Antworten mit UTF-8-Dekodierung unter Verwendung der Direktive „charset_map“ verarbeitet werden. Dieses Problem kann zu einem Speicherleck im Arbeitsprozess oder zu dessen Absturz führen.
  • CVE-2026-40460 — Sicherheitsanfälligkeit in der Implementierung des HTTP/3-Protokolls, die Spoofing ermöglicht, IP-Adressen um Authentifizierungs- oder Zugriffsrechte zu umgehen.

Verbesserungen, die in der Version nginx 1.31.0 hinzugefügt wurden:

  • Das Modul ngx_http_tunnel_module wurde hinzugefügt, das als Proxy („forward proxy“) fungiert, um Anfragen an einen anderen Server weiterzuleiten, wenn ein Client die HTTP/1.1-Methode CONNECT verwendet. Die Authentifizierung für den Zugriff auf den Proxy kann mit den Direktiven „auth_basic“, „satisfy“ und „auth_delay“ konfiguriert werden.
  • In den Block „upstream“ wurde die Direktive „least_time“ aufgenommen, die eine Lastenausgleichsmethode mit einer Anfrageübermittlung beinhaltet. Server mit der niedrigsten durchschnittlichen Antwortzeit und der geringsten Anzahl aktiver Verbindungen.
  • Im Modul „stream_proxy“ wurde die Direktive „proxy_ssl_alpn“ hinzugefügt, um die Liste der Protokolle festzulegen, die im ALPN-Header beim Verbinden mit dem proxierten Server zulässig sind. Beispiel: „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“ umfassen, abgelehnt werden.
  • Im Modul ngx_http_dav_module wurde die Ablehnung von COPY- und MOVE-Anfragen mit sich wiederholenden Quell- und Zielressourcen oder verschachtelten Sammlungen sichergestellt.
  • Fehlerprotokollierungsebene SSL Die Protokollierung von „invalid alert“, „record layer failure“ und „SSL alert number N“ wurde von „crit“ auf „info“ herabgestuft.
  • Im Konfigurationsskript wurde der Parameter „—without-http_upstream_sticky_module“ hinzugefügt, um den Build des Moduls http_upstream_sticky_module zu deaktivieren (der Parameter „—without-http_upstream_sticky“ ist veraltet).

Zusatz: Ein Exploit für die RCE-Schwachstelle im ngx_http_rewrite_module ist verfügbar.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster