
Proof-of-Concept-Exploit für CVE-2026-42945, einen heap-basierten Pufferüberlauf im Rewrite-Modul von NGINX, der eine nicht authentifizierte Remote-Code-Ausführung mittels Cross-Request-Heap-Feng-Shui ermöglicht.
RCE Proof of Concept für CVE-2026-42945, ein kritischer Heap-Buffer-Overflow im ngx_http_rewrite_module von NGINX, eingeführt 2008. Der Fehler ermöglicht nicht authentifizierte entfernte Codeausführung auf Servern, die rewrite- und set-Direktiven verwenden.
Diese Schwachstelle – zusammen mit drei weiteren Speicherkorruptionsproblemen (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) – wurde autonom vom Sicherheitsanalysesystem von depthfirst entdeckt, nach einem einzigen Klick beim Einbinden der NGINX-Quelle.
Möchten Sie solche Probleme in Ihrem eigenen Code finden? Probieren Sie dasselbe System unter https://depthfirst.com/open-defense aus.
Die Skriptengine von NGINX verwendet einen Zwei-Durchlauf-Prozess: Zuerst wird die erforderliche Puffergröße berechnet, dann werden die Daten kopiert. Das is_args-Flag wird auf der Hauptengine gesetzt, wenn ein rewrite-Ersatz ? enthält, aber der Längenberechnungsdurchlauf läuft auf einer frisch genullten Subengine. Also:
is_args = 0 → gibt die rohe Erfassungslänge zurück.is_args = 1 → ruft ngx_escape_uri mit NGX_ESCAPE_ARGS auf und erweitert jedes escapfähige Byte auf 3 Bytes.Der Kopiervorgang lässt den zu kleinen Heap-Puffer mit vom Angreifer kontrollierten URI-Daten überlaufen. Die Ausnutzung verwendet Cross-Request-Heap-Feng-Shui, um einen benachbarten cleanup-Zeiger eines ngx_pool_t zu korrumpieren (der über POST-Bodies versprüht wird, da URI-Bytes keine Nullbytes enthalten können), und leitet ihn zu einem gefälschten ngx_pool_cleanup_s um, das bei der Zerstörung des Pools system() aufruft.
Lesen Sie mehr über diesen Fehler in unserem technischen Bericht.
| Produkt | Betroffen | Behoben in |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
Vollständige Herstellerberatung: https://my.f5.com/manage/s/article/K000160932
Getestet auf Ubuntu 24.04.3 LTS.
./setup.sh — Container erstellen.docker compose -f env/docker-compose.yml up — Starten des anfälligen NGINX-Servers.python3 poc.py --shell — Eine Shell öffnen.