Skip to content
RiverCore
NGINX Rift: 18 Jahre alter Rewrite-Fehler ermöglicht unauthenifizierte RCE
NGINX RCE vulnerabilityCVE-2026-42945heap overflowNGINX rewrite module remote code executionunauthenticated RCE exploit 2026

NGINX Rift: 18 Jahre alter Rewrite-Fehler ermöglicht unauthenifizierte RCE

15 Mai 20267 Min. LesezeitJames O'Brien

In der Archäologie gibt es eine alte Überlieferung über die römischen Aquädukte: Die Bleirohre laugten jahrhundertelang Giftstoffe ins Wasser aus, und niemand bemerkte es, weil die Aquädukte weiterhin funktionierten. NGINX hat gerade seinen Bleirohren-Moment erlebt. Ein Heap-Buffer-Overflow steckt seit ungefähr der Ära der Bush-Regierung im Rewrite-Modul, hat zuverlässig den halben Internetverkehr weitergeleitet – und niemand hat ihn bis jetzt entdeckt.

Das Wasser schmeckt noch immer einwandfrei. Das Rohr ist vergiftet.

Was Passiert Ist

Am Mittwoch, dem 14. Mai 2026, veröffentlichte F5 eine Sicherheitsmeldung zu einer kritischen Schwachstelle in NGINX Plus und NGINX Open Source. Der Fehler, unter dem Namen NGINX Rift bekannt und als CVE-2026-42945 geführt, hat einen CVSS-v4-Score von 9,2 und blieb 18 Jahre lang unentdeckt. Wie The Hacker News berichtete, wurde die Schwachstelle von einem Forscher mit dem Pseudonym depthfirst entdeckt und am 21. April 2026 verantwortungsvoll gemeldet.

Es handelt sich um einen Heap-Buffer-Overflow in ngx_http_rewrite_module, dem Teil von NGINX, der URL-Rewrites verarbeitet. F5s eigene Formulierung: „NGINX Plus und NGINX Open Source weisen eine Schwachstelle im Modul ngx_http_rewrite_module auf." Die Auslösebedingungen sind spezifisch, aber nicht ungewöhnlich: eine rewrite-Direktive gefolgt von einem weiteren rewrite, if oder set, unter Verwendung eines unbenannten PCRE-Captures wie $1 oder $2, und ein Ersetzungs-String mit einem Fragezeichen. Dieses Konfigurationsmuster ist weit verbreitet. Jeder, der jemals eine Weiterleitungskette für eine SEO-Migration manuell konfiguriert hat, hat es verwendet.

Der Schadensradius ist groß. NGINX Plus R32 bis R36 sind verwundbar, mit Fixes in R32 P6 und R36 P4. NGINX Open Source 1.0.0 bis 1.30.0 ist betroffen, gepatcht in 1.30.1 und 1.31.0. Das wirklich Beunruhigende: Die Versionen 0.6.27 bis 0.9.7 sind ebenfalls verwundbar, und F5 plant keine Fixes für sie. Auch F5s nachgelagerte Produkte sind betroffen: NGINX Instance Manager, F5 WAF for NGINX, App Protect WAF und DoS, Gateway Fabric sowie Ingress Controller in mehreren Hauptversionen. Drei weitere CVEs wurden in derselben Meldung gepatcht, auf die wir noch eingehen.

Technische Analyse

Das Innenleben ist unangenehm elegant. Wenn NGINX eine Rewrite-Direktive mit einem unbenannten PCRE-Capture und einem Ersetzungs-String mit Fragezeichen verarbeitet, berechnet der Worker die Allokationsgröße für den umgeschriebenen URI falsch. Bytes werden über den Puffer hinaus geschrieben. Die überlaufenden Bytes sind kein zufälliges Auffüllen durch den Kernel – sie stammen aus dem URI des Angreifers. depthfirsts eigene Beschreibung macht das explizit: „Die Bytes, die über die Allokation hinaus geschrieben werden, stammen aus dem URI des Angreifers, sodass die Beschädigung vom Angreifer geformt wird und nicht zufällig ist."

Dieser Unterschied ist entscheidend. Eine zufällige Heap-Beschädigung ist ein Denial-of-Service-Primitiv. Eine gezielt geformte Heap-Beschädigung ist ein Exploit-Primitiv. Der Unterschied zwischen „wir haben Ihren Worker zum Absturz gebracht" und „wir führen unseren Code in Ihrem Worker aus" liegt darin, ob der Angreifer kontrolliert, was wo landet – und hier ist das der Fall.

Die Vorbedingungen sind kurz genug, um auf einen Post-it zu passen. Keine Authentifizierung. Keine Sitzung. Kein vorheriger Zugriff. Noch einmal depthfirst zitiert: „Ein Angreifer, der einen verwundbaren NGINX-Server über HTTP erreichen kann, kann eine einzelne Anfrage senden, die den Heap im Worker-Prozess zum Überlaufen bringt und Remote-Code-Ausführung ermöglicht. Es gibt keinen Authentifizierungsschritt, keine Anforderung an vorherigen Zugriff und keine Notwendigkeit einer bestehenden Sitzung."

Eine einzige HTTP-Anfrage. Das ist die gesamte Exploit-Kette.

Für vollständige RCE muss ASLR auf dem Zielsystem deaktiviert sein – das ist der einzige substanzielle Milderungsfaktor. Bei gehärteten modernen Linux-Distributionen ist das nicht der Standard, aber wer schon einmal eine Flotte gemischter VMs in einer Zahlungs- oder iGaming-Umgebung auditiert hat, weiß, dass ASLR-deaktivierte Systeme häufiger auftauchen als sie sollten, insbesondere in älteren Container-Basisimages und individuellen Kernel-Builds. Selbst auf ASLR-aktivierten Systemen stürzt der Worker in einer Endlosschleife ab. Wiederholte Anfragen halten die Worker in einem Neustart-Zyklus und beeinträchtigen die Verfügbarkeit jeder von dieser Instanz bereitgestellten Website. Das bedeutet: RCE auf schwach geschützten Zielen und zuverlässiger DoS auf allen anderen.

Die drei Begleit-CVEs in derselben Meldung sind erwähnenswert. CVE-2026-42946 (CVSS 8,3) ist eine übermäßige Speicherzuweisung in den SCGI- und uWSGI-Modulen, ausnutzbar über AitM, wenn scgi_pass oder uwsgi_pass konfiguriert ist. CVE-2026-40701 (CVSS 6,3) ist ein Use-after-Free im SSL-Modul, wenn Client-Zertifikatsprüfung und OCSP-Stapling aktiviert sind. CVE-2026-42934 (CVSS 6,3) ist ein Out-of-Bounds-Read im Charset-Modul unter bestimmten Proxy-Buffering-Konfigurationen. Keine davon ist NGINX Rift, aber wenn Sie ohnehin patchen, patchen Sie alle.

Wer Betroffen Ist

NGINX ist der bevorzugte Load Balancer und Reverse Proxy für einen erheblichen Teil der internetseitigen Infrastruktur. Wenn Ihr Stack eine Edge-Schicht hat, besteht eine gute Chance, dass NGINX darin steckt.

Im iGaming-Bereich sitzt das typische Sportsbook-Frontend hinter einer NGINX-Schicht, die Geo-Routing, A/B-Splits und Legacy-URL-Rewrites für jahrelang aufgebaute marktspezifische Landingpages durchführt. Diese Rewrite-Ketten, die sich über ein Jahrzehnt regulatorischer Fusionen angehäuft haben, sind genau die Art von Konfiguration, die diese CVE aktiviert. Das vergiftete Aquädukt hat die ganze Zeit Wettscheine transportiert.

Fintech steckt im selben Boot. Zahlungs-Gateways verwenden NGINX routinemäßig als TLS-Termination und Routing-Schicht vor zustandslosen API-Services. Das Compliance-Team wird bis nächsten Montag eine schriftliche Antwort auf die Frage benötigen: „Liefen irgendwelche unserer PCI-relevanten Worker auf einer betroffenen Version?" Wer NGINX App Protect WAF in den Versionen 4.9.0 bis 4.16.0 oder 5.1.0 bis 5.8.0 betreibt, oder F5 WAF for NGINX 5.9.0 bis 5.12.1, hat das besondere Vergnügen zu erklären, warum ihre WAF selbst verwundbar war.

Krypto- und DeFi-Unternehmen, die den NGINX Ingress Controller in Kubernetes verwenden (Versionen 3.5.0 bis 3.7.2, 4.0.0 bis 4.0.1 und 5.0.0 bis 5.4.1 sind alle betroffen), müssen ihre Cluster-Manifeste sofort überprüfen. Ein kompromittierter Ingress-Pod in einem Multi-Tenant-Cluster ist ein außerordentlich schlechter Tag.

Ad-Tech ist möglicherweise am stärksten exponiert. Die gesamte Branche läuft auf NGINX-basierten Bid-Endpunkten mit enormen Anfragevolumen, wo ein abstürzender Worker nicht nur Ausfallzeit bedeutet, sondern Umsatzverluste im Dollar-pro-Sekunde-Bereich. Wiederholte DoS-Anfragen gegen eine RTB-Exchange wären verheerend – selbst ohne den RCE-Pfad.

Schließlich die Gruppe der Versionen 0.6.27 bis 0.9.7 ohne geplanten Fix. Das ist NGINX aus der Zeit vor 2012. Wer diese noch betreibt, befindet sich in einem Museum – und Museen haben in der Regel keine effizienten Patching-Pipelines.

Leitfaden für Sicherheitsteams

Erstens: Inventarisierung. Führen Sie in Ihrer gesamten Flotte etwas aus, das nginx -v aufruft und gegen die Liste der betroffenen Versionen abgleicht. Verlassen Sie sich nicht allein auf die Ansicht des Paketmanagers, denn in containerisierten Umgebungen unterscheidet sich die laufende Binary oft von dem, was der Host als installiert erachtet. Überprüfen Sie auch Sidecar-Proxies in Service-Meshes – viele davon liefern NGINX intern mit.

Zweitens: Patchen. NGINX Plus-Benutzer wechseln zu R32 P6 oder R36 P4. Open Source-Benutzer wechseln zu 1.30.1 oder 1.31.0. Wenn Sie im F5-Downstream-Stack arbeiten (Instance Manager, App Protect WAF, Gateway Fabric, Ingress Controller), prüfen Sie die Versionsmatrix in der Meldung und spielen Sie den passenden Fix ein.

Drittens: Falls Sie diese Woche nicht patchen können, ist F5s Mitigation-Workaround unkompliziert: Ersetzen Sie unbenannte Captures durch benannte Captures in jeder betroffenen Rewrite-Direktive. Aus rewrite ^/foo/(.*)$ /bar/$1?baz=1; wird eine Version mit benannten Gruppen wie (?<path>.*) und $path. Durchsuchen Sie Ihre Konfigurationen nach dem Muster und schreiben Sie sie um. Das ist der langweilige Teil – aber genau der Schritt, bei dem der Workaround stillschweigend nicht greift, wenn Sie eine Konfigurationsdatei übersehen.

Viertens: Stellen Sie sicher, dass ASLR auf jedem Host mit NGINX aktiviert ist. cat /proc/sys/kernel/randomize_va_space sollte 2 zurückgeben. Das stoppt den DoS-Pfad nicht, verschiebt RCE jedoch von „eine einzige Anfrage" zu „wesentlich schwieriger".

Fünftens: Suchen Sie aktiv. Der Exploit besteht aus gezielt gestalteten HTTP-Anfragen mit PCRE-Capture-lastigen URIs und Fragezeichen. Ziehen Sie die Zugriffslogs einer Woche heran und suchen Sie nach ungewöhnlichen Mustern, die auf Rewrite-Endpunkte treffen. Das KEV-Katalog von CISA wird dies voraussichtlich schnell aufnehmen, sobald die Ausnutzung öffentlich wird – beobachten Sie ihn daher.

Wichtigste Erkenntnisse

  • CVE-2026-42945, unter dem Namen NGINX Rift bekannt, ist ein Heap-Buffer-Overflow mit CVSS 9,2 in ngx_http_rewrite_module, der 18 Jahre lang unentdeckt blieb und unauthentifizierte RCE über eine einzige präparierte HTTP-Anfrage ermöglicht.
  • Die Schwachstelle wird ausgelöst, wenn eine rewrite-Direktive unbenannte PCRE-Captures mit einem Ersetzungs-String verwendet, der ein Fragezeichen enthält – ein Konfigurationsmuster, das in langlebigen Produktionsumgebungen weit verbreitet ist.
  • Patches sind in NGINX Plus R32 P6 und R36 P4 sowie in NGINX Open Source 1.30.1 und 1.31.0 verfügbar. Die Versionen 0.6.27 bis 0.9.7 sind verwundbar, ohne dass ein Fix geplant ist.
  • Drei Begleit-CVEs (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) wurden in derselben Meldung gepatcht und sollten gemeinsam behoben werden.
  • Das Aquädukt hat Ihren Datenverkehr die ganze Zeit transportiert, aber das Blei ist nun sichtbar. Inventarisieren, patchen und unbenannte Captures als sofortigen Workaround durch benannte ersetzen.

Häufig Gestellte Fragen

F: Was ist CVE-2026-42945 und wie schwerwiegend ist es?

CVE-2026-42945, unter dem Namen NGINX Rift bekannt, ist eine Heap-Buffer-Overflow-Schwachstelle im Rewrite-Modul von NGINX mit einem CVSS-v4-Score von 9,2. Sie erlaubt es einem nicht authentifizierten Angreifer, Remote-Code-Ausführung oder Denial-of-Service durch eine einzige präparierte HTTP-Anfrage zu erreichen. Die Schwachstelle existierte 18 Jahre lang unentdeckt.

F: Welche NGINX-Versionen sind von NGINX Rift betroffen?

NGINX Plus R32 bis R36, NGINX Open Source 1.0.0 bis 1.30.0 und der Legacy-Bereich 0.6.27 bis 0.9.7 sind alle betroffen. Fixes sind in NGINX Plus R32 P6 und R36 P4 sowie in NGINX Open Source 1.30.1 und 1.31.0 verfügbar. Für die Versionen 0.6.27 bis 0.9.7 ist kein Fix geplant.

F: Was ist der schnellste Workaround, wenn ich nicht sofort patchen kann?

F5s empfohlene Mitigation besteht darin, unbenannte PCRE-Captures (wie $1, $2) durch benannte Captures in jeder betroffenen Rewrite-Direktive zu ersetzen. Sie sollten außerdem sicherstellen, dass ASLR auf allen Hosts mit NGINX aktiviert ist, da der RCE-Pfad speziell erfordert, dass ASLR für eine zuverlässige Code-Ausführung deaktiviert ist.

JO
James O'Brien
RiverCore Analyst · Dublin, Ireland
TEILEN
// RELATED ARTICLES
StartseiteLösungenProjekteÜber unsKontakt
News06
Dublin, Irland · EUGMT+1
LinkedIn
🇩🇪DE