
Lokaler Nur-Lese-Scanner für CVE-2026-42945 (NGINX Rift), der NGINX-, OpenResty- und Tengine-Instanzen auf anfällige rewrite-Konfigurationen überprüft, ohne Exploits auszuführen oder Dienste zu modifizieren.
Dieses Repository enthält zwei lokale Prüfskripte, um auf Linux-/Windows-Servern zu überprüfen, ob Nginx, OpenResty oder Tengine von CVE-2026-42945 betroffen sind.
Die Skripte führen nur schreibgeschützte Erfassung und lokale Bewertung durch, führen keinen Exploit-PoC durch, senden keine Angriffsanfragen, ändern keine Konfigurationen, starten keine Dienste neu und aktualisieren keine Software.
CVE-2026-42945, auch als NGINX Rift bekannt, wird in öffentlichen Quellen als Heap-Pufferüberlauf im ngx_http_rewrite_module beschrieben. Laut NVD-Beschreibung kann ein Angreifer durch eine bestimmte Kombination der rewrite-Direktive mit nachfolgenden rewrite-/if-/set-Direktiven, die unbenannte PCRE-Erfassungsvariablen (z. B. $1, $2) und Ersetzungsstrings mit Fragezeichen ? betreffen, durch Konstruktion einer HTTP-Anfrage einen Heap-Pufferüberlauf im NGINX-Worker-Prozess auslösen. Dies kann zu einem Neustart des Worker-Prozesses führen; unter bestimmten Bedingungen wie deaktiviertem ASLR besteht ein Risiko der Codeausführung.
Das offizielle NGINX-Sicherheitsbulletin kennzeichnet CVE-2026-42945 als Pufferüberlauf im ngx_http_rewrite_module und gibt die folgenden Fix-Versionen für NGINX Open Source an:
| Status | NGINX Open Source Version |
|---|---|
| Behoben | 1.31.0+ / 1.30.1+ |
| Vermutlich betroffen | 0.6.27-1.30.0 |
Distributionen, kommerzielle Produkte, OpenResty, Tengine oder individuelle Builds können abweichende Backports oder Versionszuordnungen aufweisen. Die Skripte versuchen, so viele Beweise wie möglich zu sammeln, aber es wird empfohlen, die Ergebnisse in Verbindung mit den Ankündigungen des Herstellers manuell zu überprüfen.
Dieses Tool ist kein Exploit-Validierungswerkzeug, sondern ein lokales Erfassungs- und statisches Konfigurationsprüfwerkzeug. Es konzentriert sich auf die Identifizierung der folgenden Kombinationen:
$1, $2 im Ersetzungsstring einer rewrite-Direktive.rewrite-Ersetzungsstring enthält ein nicht maskiertes ?; maskierte Fragezeichen wie \? gelten nicht als Risikobedingung.rewrite-, if- oder set-Direktiven.Beispiel für ein Risikomuster:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?endpoint=$1 last;
set $flag 1;
}
Das Risiko entsteht nicht durch eine einzelne rewrite- oder set-Anweisung, sondern durch die Kombination von Version, Konfigurationskontext und Ausführungsreihenfolge. Bei einem Treffer wird dennoch empfohlen, manuell zu überprüfen, ob es sich bei der Konfiguration um die tatsächlich aktive Konfiguration handelt, ob sie von externen Anfragen erreicht werden kann und ob sie bereits durch einen Backport der Distribution behoben wurde.
| Datei | Beschreibung |
|---|---|
check_nginx_linux.sh | Linux lokales Prüfskript |
check_nginx_windows.ps1 | Windows lokales Prüfskript |
README.md | Chinesische Anleitung |
README.en.md | English README |
Erste Version unterstützt:
rewrite-Konfigurationen im Zusammenhang mit CVE-2026-42945.summary.txt, summary.json und einem Verzeichnis mit Rohbeweisen.Erste Version enthält nicht:
Es wird empfohlen, das Skript mit Administratorrechten auszuführen:
root oder sudo-Berechtigungen.Ohne Administratorrechte bemüht sich das Skript nach Kräften; falls die vollständige nginx -T-Konfiguration nicht exportiert werden kann, wird das Ergebnis als Manuelle Überprüfung erforderlich markiert.
Laden Sie check_nginx_linux.sh auf den Server hoch und führen Sie es aus:
chmod +x check_nginx_linux.sh
sudo ./check_nginx_linux.sh
Falls sudo nicht verfügbar ist, führen Sie es direkt aus:
./check_nginx_linux.sh
Laden Sie check_nginx_windows.ps1 auf den Server hoch und führen Sie es mit PowerShell (Als Administrator ausführen) aus:
powershell -ExecutionPolicy Bypass -File .\check_nginx_windows.ps1
Das Skript erstellt ein Ergebnisverzeichnis im selben Verzeichnis wie das Skript. Der Verzeichnisname enthält den Hostnamen, die Zeit und die Prozess-ID des Skripts, um Überschreibungen bei gleichzeitigen Ausführungen zu vermeiden.
nginx_check_<主机名>_<时间>_<进程ID>/
summary.txt
summary.json
raw/
host_info.txt
process_info.txt
service_info.txt
package_info.txt
nginx_paths.txt
instances/
instance_01/
nginx_invocation.txt
nginx_version.txt
nginx_build.txt
nginx_config_dump.txt
risky_config_matches.txt
instance_02/
...
| Datei oder Verzeichnis | Beschreibung |
|---|---|
summary.txt | Chinesische Zusammenfassung, geeignet für manuelle Ansicht und Rückmeldung |
summary.json | Strukturierte Ergebnisse, zur späteren Batch-Zusammenfassung |
raw/ | Rohbefehlsausgaben und Beweisdaten |
raw/instances/instance_XX/ | Separate Version, Konfiguration und Risikobeweise für jede Instanz |
In der Zusammenfassung werden folgende Felder aufgezeichnet:
实例数量 | 本机发现并逐个检查的 Nginx / OpenResty / Tengine 候选实例数量 |
|---|---|
配置大小 | nginx -T 导出的原始配置结果文件大小 |
扫描行数 | 脚本实际扫描的配置输出行数 |
危险配置命中数量 | 命中的危险 rewrite 规则数量 |
证据摘要 | 最高风险实例的证据预览,完整证据见对应实例目录 |
Falls die Nginx-Konfiguration sehr groß ist, gibt das Skript die vollständige Konfiguration nicht in der Konsole aus; die vollständige aktive Konfiguration wird in der Datei nginx_config_dump.txt im entsprechenden Instanzverzeichnis gespeichert. Wenn die exportierte Konfigurationsdatei 10 MB überschreitet, setzt das Skript die automatische Überprüfung fort und gibt einen Hinweis, dass eine manuelle Stichprobenprüfung anhand der raw/-Ergebnisse empfohlen wird.
Falls auf dem Server mehrere Kandidatenausführungsdateien nginx, openresty, tengine gefunden werden, prüft das Skript jede einzeln und erstellt eine Instanzübersicht.
Die Schlussfolgerung in der Gesamtzusammenfassung basiert auf der Instanz mit dem höchsten Risiko. Die Gesamtbewertung verwendet eine konservative Priorität:
受影响有风险配置需人工复核受影响无风险配置不受影响未安装NginxDabei hat 需人工复核 eine höhere Priorität als 受影响无风险配置. Dies bedeutet, dass es Instanzen gibt, die noch nicht bestätigt wurden und weiter überprüft werden müssen, und nicht, dass bereits eine gefährliche Konfiguration bestätigt wurde.
结论 | 含义 |
|---|---|
未安装Nginx | 未发现 Nginx / OpenResty / Tengine 命令、进程或服务 |
不受影响 | 明确为修复版本,且未发现危险配置 |
受影响无风险配置 | 版本疑似受影响,但未发现危险 rewrite 配置 |
受影响有风险配置 | 版本疑似受影响或衍生版本需复核,且发现危险 rewrite 配置 |
需人工复核 | 版本未知、衍生版本、配置采集失败、权限不足或证据不足 |