
Walkthrough: ingress-nginx Konfigurations-Injection über rewrite-target Annotation
Schlüsselwörter: CVE-2026-3288, ingress-nginx vulnerability, Kubernetes security, nginx configuration injection, rewrite-target annotation, RCE, Secret disclosure, CWE-20, CAPEC-176, ingress-nginx CVE 2026, Kubernetes cluster compromise
In ingress-nginx wurde ein Sicherheitsproblem entdeckt, bei dem die Ingress-Annotation nginx.ingress.kubernetes.io/rewrite-target verwendet werden kann, um Konfiguration in nginx einzuschleusen. Dies kann zur Ausführung von beliebigem Code im Kontext des ingress-nginx-Controllers und zur Offenlegung von Secrets führen, die für den Controller zugänglich sind. (Beachten Sie, dass der Controller in der Standardinstallation auf alle Secrets clusterweit zugreifen kann.)
Entdeckt von: Kai Aizen
Veröffentlicht: 9. März 2026
CVSS-Punktzahl: 8.8 (Hoch)
CWE: CWE-20 — Unzureichende Eingabevalidierung
CAPEC: CAPEC-176 — Konfigurations-/Umgebungsmanipulation
Komponente: ingress-nginx
Angriffstyp: Nginx-Konfigurationsinjektion über Ingress-Annotation
Erforderliche Berechtigungen: Niedrig (PR:L)
Die Ingress-Annotation nginx.ingress.kubernetes.io/rewrite-target soll den Anfragepfad ändern, bevor er an Upstream-Dienste weitergeleitet wird. Die Implementierung erlaubt jedoch das Einschleusen beliebiger Konfigurationsdirektiven direkt in die zugrunde liegende nginx-Konfiguration.
Ein Angreifer mit der Fähigkeit, Ingress-Ressourcen zu erstellen oder zu ändern, kann dies nutzen, um:
| Auswirkungsbereich | Schweregrad |
|---|---|
| Vertraulichkeit | Hoch — Vollständige Offenlegung von Secrets (clusterweit in Standardkonfiguration) |
| Integrität | Hoch — Beliebige Codeausführung im Controller-Kontext |
| Verfügbarkeit | Hoch — Vollständige Kompromittierung des ingress-nginx-Controllers |
Das Kernproblem ist, dass ingress-nginx den Wert der rewrite-target-Annotation ohne ausreichende Eingabevalidierung verarbeitet, sodass vom Angreifer kontrollierter Inhalt direkt in die nginx-Konfiguration geschrieben werden kann. Dies ist eine Konfigurationsinjektions-Schwachstelle – der Wert der Annotation wird als einfacher Rewrite-Pfad vertraut, kann aber beliebige nginx-Direktiven enthalten.
Die Schwachstelle ist für jeden Benutzer erreichbar, der Berechtigungen zum Erstellen oder Ändern von Ingress-Ressourcen in einem Cluster mit ingress-nginx hat. Der Angriff erfordert:
Diese Schwachstelle gehört zu einer etablierten Klasse von Annotation-Injektionsfehlern in ingress-nginx:
| CVE | Jahr | Annotation | Auswirkung |
|---|---|---|---|
| CVE-2021-25746 | 2022 | Verschiedene Annotationen | Direktiveninjektion |
| CVE-2023-5044 | 2023 | permanent-redirect | Codeinjektion |
| CVE-2024-7646 | 2024 | Umgehung der Annotation-Validierung | Validierungsumgehung |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + Secret-Offenlegung |
Das wiederkehrende Muster: Annotationswerte gelangen ohne ausreichende Bereinigung in die nginx-Konfiguration. Unterschiedliche Annotationen, gleiche Grundursache.
| Branch | Verwundbar | Behoben |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 | 1.14.4 |
| 1.15.x | < 1.15.0 | 1.15.0 |
# Check if ingress-nginx is installed
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
# Check ingress-nginx version
kubectl exec -n ingress-nginx \
$(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \
-- /nginx-ingress-controller --version
If you do not have ingress-nginx installed on your cluster, you are not affected.
Führen Sie ein Upgrade von ingress-nginx auf die gepatchte Version für Ihren Branch durch:
# Using Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
Siehe offizielle Upgrade-Dokumentation: Upgrading Ingress-nginx
Verwenden Sie Admission Control, um die Verwendung der rewrite-target-Annotation zu blockieren, bis Sie ein Upgrade durchführen können:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: block-rewrite-target
webhooks:
- name: block-rewrite-target.security.local
rules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["ingresses"]
clientConfig:
# Point to a webhook service that rejects Ingress resources
# containing the rewrite-target annotation
Verdächtige Daten im Feld rules.http.paths.path einer Ingress-Ressource könnten auf einen Versuch hinweisen, diese Schwachstelle auszunutzen.
# Check for suspicious Ingress annotations
kubectl get ingress --all-namespaces -o json | \
jq '.items[] | select(.metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"] != null) | {namespace: .metadata.namespace, name: .metadata.name, rewrite: .metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"]}'
Wenn Sie Hinweise darauf finden, dass diese Schwachstelle ausgenutzt wurde, kontaktieren Sie [email protected].
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Metrik | Wert |
|---|---|
| Angriffsvektor | Netzwerk (AV:N) |
| Angriffskomplexität | Niedrig (AC:L) |
| Erforderliche Berechtigungen | Niedrig (PR:L) |
| Benutzerinteraktion | Keine (UI:N) |
| Scope | Unverändert (S:U) |
| Vertraulichkeit | Hoch (C:H) |
| Integrität | Hoch (I:H) |
| Verfügbarkeit | Hoch (A:H) |
| Datum | Ereignis |
|---|---|
| — | Schwachstelle entdeckt und an das Kubernetes Security Response Committee gemeldet |
| 9. März 2026 | Sicherheitshinweis veröffentlicht |
| 9. März 2026 | Gepatchte Versionen veröffentlicht (1.13.8, 1.14.4, 1.15.0) |
| 9. März 2026 | CVE-2026-3288 zugewiesen |