
Proof-of-Concept-Exploit für CVE-2026-42945, einen Heap Buffer Overflow in NGINX rewrite/set-Direktiven, der DoS und potenzielle RCE durch manipulierte Anfragen ermöglicht.
CVE-2026-42945 ist eine schwerwiegende Heap-Pufferüberlauf-Schwachstelle im NGINX-Server, bekannt als "NGINX Rift". Die Schwachstelle existiert in der Verarbeitungslogik der rewrite- und set-Direktiven von NGINX. Wenn bestimmte Konfigurationsbedingungen erfüllt sind, kann ein Angreifer durch das Senden einer bösartigen Anfrage einen Heap-Überlauf auslösen, der zu einem Denial-of-Service (DoS) und potenziell zu einer Remote-Code-Ausführung (RCE) führt.
Schwachstellentyp: Heap-Pufferüberlauf
Risikostufe: Hoch
CVE-ID: CVE-2026-42945
Es wird empfohlen, sofort auf eine der folgenden Versionen zu aktualisieren:
Die Schwachstelle wird ausgelöst, wenn gleichzeitig die folgenden beiden Bedingungen erfüllt sind:
Konfigurationsbedingung: In der NGINX-Konfiguration werden gleichzeitig verwendet:
rewrite-Direktive (Ersetzungszeichenfolge enthält das Zeichen ?)set-Direktive (verweist auf Regex-Erfassungsgruppen von rewrite, z. B. $1, $2)Anfragebedingung: Die Anfrage-URI enthält escapbare Zeichen (z. B. +, &, % usw.)
Prinzip:
rewrite-Direktive setzt e->is_args = 1 (wird nie zurückgesetzt)set-Direktive verwendet in der Längenberechnungsphase eine Sub-Engine mit Nullen (le.is_args = 0)%25 zu %, aber ngx_escape_uri kodiert es wieder zu %25 (3 Bytes)%25-Zeichen wird von 1 Byte auf 3 Byte erweitert, was zu einem Schreiben über die Puffergrenze hinaus führt# Verwendung des Testskripts aus dem Projekt
python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25-Zeichen für einen kleinen Test%25-Zeichen (z. B. 2000), um einen Pufferüberlauf auszulösenIn einer Einschicht-NGINX-Konfiguration löst der Test die Schwachstelle aus:
Absturzprotokoll-Analyse:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseIn einer Zweischicht-NGINX-Konfiguration (Layer1 Weiterleitung + Layer2 Geschäftslogik) ergeben sich folgende Ergebnisse:
Dieses Projekt dient ausschließlich Sicherheitsforschungs- und Bildungszwecken. Benutzer müssen die geltenden Gesetze und Vorschriften ihres Landes oder ihrer Region einhalten. Der Autor übernimmt keine Verantwortung für unbefugte missbräuchliche Nutzung.
Verboten für illegale Angriffe!
Letzte Aktualisierung: 2026-05-19
| Konfigurationsszenario | Layer1-Ergebnis | Layer2-Ergebnis | Begründung |
|---|
rewrite ohne break + proxy_pass | ❌ Schwachstelle ausgelöst (404) | ❌ Keine Anfrage erreicht | Nach rewrite wird set ausgeführt, was Heap-Überlauf auslöst; Worker stürzt ab |
rewrite mit break + proxy_pass | ✅ Normal (200) | ⚠️ Möglicherweise Schwachstelle ausgelöst | break beendet die Ausführung von set; Anfrage wird normal an das Backend weitergeleitet |
| Datei | Beschreibung |
|---|
CVE-2026-42945/CVE-2026-42945-test.py | PoC-Testskript zur Überprüfung, ob das Ziel die Schwachstelle aufweist |
single_layer_test/single_layer_nginx.conf | Beispielkonfiguration für eine angreifbare Einschicht-NGINX-Architektur |
single_layer_test/image.png | Schematische Darstellung des Schwachstellenprinzips |
single_layer_test/test.log | Testprotokolldatei |
double_layer_test/layer1_nginx.conf | NGINX-Konfiguration der ersten Schicht (Weiterleitungsschicht) in einer Zweischicht-Architektur |
double_layer_test/layer2_nginx.conf | NGINX-Konfiguration der zweiten Schicht (Geschäftsschicht) in einer Zweischicht-Architektur |