
Proof-of-Concept-Exploit für CVE-2026-42945, einen kritischen Heap-Pufferüberlauf im Rewrite-Modul von NGINX, der nicht authentifizierte Remote-Codeausführung ermöglicht. Enthält Setup-Skript und Python-Exploit, der eine Shell öffnet.
RCE-Proof-of-Concept für CVE-2026-42945, ein kritischer Heap-Pufferüberlauf im ngx_http_rewrite_module von NGINX, der 2008 eingeführt wurde. Der Fehler ermöglicht unauthentifizierte Remote-Codeausführung auf Servern, die die Direktiven rewrite und set verwenden.
Diese Schwachstelle – zusammen mit drei weiteren Speicherkorruptionsproblemen (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) – wurde nach einem einzigen Klick zur Einbindung des NGINX-Quellcodes eigenständig vom Sicherheitsanalysesystem von depthfirst entdeckt.
Die Skript-Engine von NGINX nutzt einen Zwei-Pass-Prozess: Zuerst wird die benötigte Puffergröße berechnet, dann werden die Daten kopiert. Das is_args-Flag wird am Haupt-Engine gesetzt, wenn eine rewrite-Ersetzung ein ? enthält, aber der Längenberechnungslauf läuft auf einer frisch auf null gesetzten Sub-Engine. Also:
is_args = 0is_args = 1 → ruft ngx_escape_uri mit NGX_ESCAPE_ARGS auf, wobei jedes escapebare Byte auf 3 Bytes expandiert wird.Der Kopiervorgang lässt den zu kleinen Heap-Puffer mit angreiferkontrollierten URI-Daten überlaufen. Die Ausnutzung nutzt Cross-Request-Heap-Feng-Shui, um den cleanup-Zeiger eines benachbarten ngx_pool_t zu korrumpieren (per POST-Bodies gesprayt, da URI-Bytes keine Null-Bytes enthalten können), und leitet ihn auf eine gefälschte ngx_pool_cleanup_s-Struktur um, die beim Zerstören des Pools system() aufruft.
Mehr über diesen Bug in unserem Telegram-Kanal: https://t.me/p3Nt3st3rsTAr
| 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ändiger Sicherheitshinweis des Herstellers: https://my.f5.com/manage/s/article/K000160932
Getestet auf Ubuntu 24.04.3 LTS.
./setup.sh — Container bauen.docker compose -f env/docker-compose.yml up — den verwundbaren NGINX-Server starten.python3 poc.py --shell — eine Shell öffnen.