
Walkthrough: iniezione di configurazione in ingress-nginx tramite l'annotazione rewrite-target
Parole chiave: CVE-2026-3288, vulnerabilità di ingress-nginx, sicurezza Kubernetes, injection di configurazione nginx, annotazione rewrite-target, RCE, divulgazione di Secret, CWE-20, CAPEC-176, CVE 2026 di ingress-nginx, compromissione del cluster Kubernetes
È stato scoperto un problema di sicurezza in ingress-nginx in cui l'annotazione Ingress nginx.ingress.kubernetes.io/rewrite-target può essere utilizzata per iniettare configurazione in nginx. Ciò può portare all'esecuzione di codice arbitrario nel contesto del controller ingress-nginx e alla divulgazione dei Secret accessibili al controller. (Si noti che nell'installazione predefinita, il controller può accedere a tutti i Secret a livello di cluster.)
Scoperto da: Kai Aizen
Pubblicato: 9 marzo 2026
Punteggio CVSS: 8.8 (Alto)
CWE: CWE-20 — Validazione impropria dell'input
CAPEC: CAPEC-176 — Manipolazione di configurazione/ambiente
Componente: ingress-nginx
Tipo di attacco: Injection di configurazione nginx tramite annotazione Ingress
Privilegi richiesti: Bassi (PR:L)
L'annotazione Ingress nginx.ingress.kubernetes.io/rewrite-target ha lo scopo di modificare il percorso della richiesta prima che venga inoltrata ai servizi upstream. Tuttavia, l'implementazione consente l'iniezione di direttive di configurazione arbitrarie direttamente nella configurazione nginx sottostante.
Un attaccante in grado di creare o modificare risorse Ingress può sfruttare questo per:
| Area di impatto | Gravità |
|---|---|
| Riservatezza | Alta — Divulgazione completa dei Secret (a livello di cluster nella configurazione predefinita) |
| Integrità | Alta — Esecuzione di codice arbitrario nel contesto del controller |
| Disponibilità | Alta — Compromissione totale del controller ingress-nginx |
Il problema principale è che ingress-nginx elabora il valore dell'annotazione rewrite-target senza una sufficiente validazione dell'input, consentendo che contenuti controllati dall'attaccante vengano scritti direttamente nella configurazione nginx. Questa è una vulnerabilità di injection di configurazione: il valore dell'annotazione è considerato attendibile come semplice percorso di rewrite ma può contenere direttive nginx arbitrarie.
La vulnerabilità è sfruttabile da qualsiasi utente con permessi per creare o modificare risorse Ingress in un cluster che esegue ingress-nginx. L'attacco richiede:
Questa vulnerabilità appartiene a una classe consolidata di bug di injection tramite annotazioni in ingress-nginx:
Il problema ricorrente: i valori delle annotazioni confluiscono nella configurazione nginx senza un'adeguata sanificazione. Annotazioni diverse, stessa causa principale.
| Ramo | Vulnerabile | Corretta |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 |
# 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
Se non hai ingress-nginx installato sul tuo cluster, non sei interessato.
Aggiorna ingress-nginx alla versione corretta per il tuo ramo:
# Using Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
Fai riferimento alla documentazione ufficiale di aggiornamento: Aggiornare Ingress-nginx
Utilizza l'admission control per bloccare l'uso dell'annotazione rewrite-target finché non puoi aggiornare:
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
Dati sospetti all'interno del campo rules.http.paths.path di una risorsa Ingress potrebbero indicare un tentativo di sfruttare questa vulnerabilità.
# 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"]}'
Se trovi prove che questa vulnerabilità è stata sfruttata, contatta [email protected].
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Data | Evento |
|---|---|
| — | Vulnerabilità scoperta e segnalata al Kubernetes Security Response Committee |
| 9 marzo 2026 | Pubblicato l'advisory di sicurezza |
| 9 marzo 2026 | Rilasciate le versioni corrette (1.13.8, 1.14.4, 1.15.0) |
| 9 marzo 2026 | Assegnato CVE-2026-3288 |
Ricercatore: Kai Aizen — SnailSploit
Riconoscimento: Tabitha Sable a nome del Kubernetes Security Response Committee
Queste informazioni sono fornite esclusivamente a scopo di ricerca sulla sicurezza e difesa. Qualsiasi sfruttamento di questa vulnerabilità per scopi dannosi è illegale e non etico. Ottieni sempre la dovuta autorizzazione prima di testare sistemi che non possiedi.
Per domande o informazioni aggiuntive su questa vulnerabilità:
Ultimo aggiornamento: 10 marzo 2026
Il writeup completo di questo progetto, la metodologia e le ricerche correlate sono disponibili su:
https://snailsploit.com/security-research/cves/cve-2026-3288/
Creato da Kai Aizen — ricercatore indipendente di sicurezza offensiva.
snailsploit.com · Ricerca · Framework · GitHub · LinkedIn · ResearchGate · X/Twitter
Stesso attacco. Substrato diverso.
| CVE | Anno | Annotazione | Impatto |
|---|
| CVE-2021-25746 | 2022 | Varie annotazioni | Injection di direttive |
| CVE-2023-5044 | 2023 | permanent-redirect | Injection di codice |
| CVE-2024-7646 | 2024 | Bypass della validazione delle annotazioni | Bypass della validazione |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + divulgazione di Secret |
| 1.15.x | < 1.15.0 | 1.15.0 |
| Metrica | Valore |
|---|
| Vettore d'attacco | Rete (AV:N) |
| Complessità d'attacco | Bassa (AC:L) |
| Privilegi richiesti | Bassi (PR:L) |
| Interazione dell'utente | Nessuna (UI:N) |
| Scope | Invariato (S:U) |
| Riservatezza | Alta (C:H) |
| Integrità | Alta (I:H) |
| Disponibilità | Alta (A:H) |