
CVE-2026-42945 NGINX-Scanner- und Verifizierungstool für Heap-Überlauf-Schwachstellen
NGINX Rift ist ein Open-Source-Scanner und Verifikationstool für CVE-2026-42945 und CVE-2026-9256 (Heap-Overflow-Schwachstellen im NGINX ngx_http_rewrite_module). Es unterstützt Remote-Netzwerk-Fingerprinting und lokale, tiefgehende Konfigurationsaudits, um Sicherheitsteams dabei zu helfen, potenzielle Risiken in NGINX-Umgebungen schnell zu identifizieren.
| Eigenschaft | Detail |
|---|---|
| CVE-ID | CVE-2026-9256 |
| Schwachstellentyp | Heap-basierter Pufferüberlauf (Heap-based Buffer Overflow, CWE-122) |
| Betroffene Komponente | NGINX ngx_http_rewrite_module |
| Betroffene Versionen | NGINX Open Source 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| Patch-Versionen | NGINX 1.31.1 (mainline) / 1.30.2 (stable), veröffentlicht am 22.05.2026 |
| Bedrohungsstufe | Kritisch – kann zu Denial-of-Service (DoS) führen, bei deaktiviertem ASLR Remote-Code-Ausführung (RCE) |
Auslösebedingung: Die rewrite-Direktive verwendet PCRE-Regex mit überlappenden Erfassungen und die Ersetzungszeichenfolge referenziert mehrere unbenannte Erfassungsgruppen.
| Eigenschaft | Detail |
|---|---|
| CVE-ID | CVE-2026-42945 |
| Schwachstellentyp | Heap-Overflow |
| Betroffene Komponente | NGINX ngx_http_rewrite_module |
| Betroffene Versionen | NGINX Open Source 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| Patch-Versionen | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| Bedrohungsstufe | Kritisch – kann zu Denial-of-Service (DoS) und Remote-Code-Ausführung (RCE) führen |
Auslösebedingung: Die Ersetzungs-URL in der rewrite-Direktive enthält sowohl ? als auch Verweise auf unbenannte Erfassungsgruppen (z. B. $1).
# CVE-2026-42945 trigger configuration: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# CVE-2026-9256 trigger configuration: multiple $N capture references
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# Sichere Konfiguration (benannte Capture-Gruppen verwenden)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm-Paketmanagern zur Erkennung von Backport-Fixes in Distributionenrewrite-target-Annotationen in Kubernetes-Ingress-RessourcenLaden Sie die Binärdatei für Ihre Plattform von der Releases-Seite herunter.
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# Einzelplattform-Kompilierung
go build -o nginx_rift_scanner nginx_rift_scanner.go
# Plattformübergreifende Kreuzkompilierung
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# Einzelnes Ziel scannen
./nginx_rift_scanner scan -u http://example.com
# Massenscan (URL-Liste aus Datei lesen)
./nginx_rift_scanner scan -f url.txt
url.txt enthält eine URL pro Zeile, z. B.:
http://target1.com
https://target2.com
target3.com
# Standard-NGINX-Konfigurationspfad automatisch finden
./nginx_rift_scanner verify
# Konfigurationsdatei-Pfad angeben
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
Der Verify-Modus führt eine dreistufige Prüfung durch:
nginx -v aus und prüft OS-Paketmanager auf Backport-Patchesinclude-Direktiven) zur Identifizierung gefährlicher rewrite-Regelnkubectl erkannt wird, automatischer Scan aller Ingress-Ressourcen im Cluster| Priorität | Maßnahme | Beschreibung |
|---|---|---|
| P0 | NGINX aktualisieren | Upgrade auf 1.30.2+ (stable) / 1.31.1+ (mainline) / neueste NGINX Plus-Sicherheitsversion |
| P0 | OS-Paketmanager-Update | apt-get upgrade nginx oder yum update nginx |
| P1 | Dringende Konfigurationsminderung | Ersetzen von $1, $2 usw. in rewrite durch benannte Capture-Gruppen $name; kein Neustart erforderlich |
| P2 | K8s-Ingress-Reparatur | Ingress-Controller aktualisieren und rewrite-target-Annotation ändern |
| P3 | Verteidigung in der Tiefe | server_tokens off; konfigurieren, um Versions-Fingerprinting zu verbergen |
NGINX-Rift/
├── nginx_rift_scanner.go # Hauptprogramm-Quellcode
├── build.sh # Plattformübergreifendes Kreuzkompilierungsskript
├── go.mod # Go-Moduldefinition
└── README.md
net/http zum Senden von HTTP-Anfragen und Analysieren des Server-Response-Headersnginx/X.Y.Z) und der kommerziellen Edition (NGINX Plus RXX)include-Direktiven, Schutz vor zirkulären Referenzen mittels visited-Map? + $N (CVE-2026-42945) und mehrere $N-Referenzen (CVE-2026-9256)kubectl get ingress --all-namespaces -o yamldpkg-query/rpm --changelog zur Erkennung von OS-Level-Backport-Patches (Suche nach beiden CVE-Nummern)CGO_ENABLED=0), erzeugt eine eigenständige Binärdatei ohne C-AbhängigkeitenMIT License
Beigetragen von der Sicherheits-Community.