
Analisi tecnica approfondita di CVE-2025-1974 (IngressNightmare), un RCE critico nel validating admission controller di ingress-nginx per Kubernetes, inclusi la causa principale, la catena di exploit e le linee guida per il rilevamento.
Questo documento presenta un'analisi della vulnerabilità CVE-2025-1974, che riguarda il componente ingress-nginx (validating admission controller) per Kubernetes.
CVE-2025-1974 è una vulnerabilità critica (CVSS 3.1 9.8), che consiste in un Remote Code Execution (RCE) non autenticato nel contesto del processo ingress-nginx. Durante un attacco, un malintenzionato con accesso alla pod network (o in grado di inviare un AdmissionReview al validating webhook) può ottenere l'esecuzione di codice arbitrario nel pod del controller, portando potenzialmente alla divulgazione di Secrets e alla compromissione del cluster.
Ingress-nginx è uno dei controller Ingress più diffusi in Kubernetes (le stime indicano un utilizzo in decine di percentuali dei cluster), quindi l'impatto pratico della vulnerabilità è molto elevato. Descrizione, analisi tecnica e raccomandazioni ufficiali per le correzioni sono state pubblicate da Kubernetes, dai ricercatori di Wiz e da vari blog di vendor.
Analizzare passo dopo passo CVE-2025-1974 e preparare i materiali necessari per un write-up:
Questa ricerca è condotta esclusivamente a scopo educativo ed etico ed è rivolta ad ambienti di test/controllati.
In nessun caso eseguire exploit/PoC contro cluster altrui o istanze pubblicamente accessibili senza autorizzazione scritta del proprietario. Pubblicare un PoC completamente funzionante e "weaponized" in forma aperta aumenta notevolmente il rischio di abusi — nella parte pubblica è meglio fornire un safe-PoC e la metodologia. (Anche gli advisory ufficiali e i vendor sottolineano la cautela nella diffusione degli exploit).
cpe:2.3:a:kubernetes:ingress-nginx_controller:<version> — versioni vulnerabili di ingress-nginx (negli advisory sono indicate versioni specifiche; aggiornare i valori al momento della pubblicazione finale).Condizioni di configurazione per cui la vulnerabilità è rilevante:
Riassunto breve.
La vulnerabilità è stata scoperta nel componente Validating Admission Controller del controller Ingress-NGINX ed è legata al modo in cui questo componente genera e verifica la configurazione temporanea di NGINX sulla base degli Ingress / AdmissionReview in arrivo. Durante l'elaborazione, il controller genera nginx.conf ed esegue un controllo della configurazione (nginx -t). A causa di una sanificazione insufficiente dei campi di Ingress/AdmissionReview, un attaccante può iniettare frammenti appositamente predisposti che finiscono nella configurazione generata, portando all'esecuzione di comandi all'interno del processo del controller — ovvero a un'esecuzione remota di codice (RCE) nel pod di ingress-nginx.
AdmissionReview/Ingress in arrivo, ricevuti dal validating webhook del controller, diventano dati di origine per la generazione della configurazione NGINX (inclusi campi di annotazioni, impostazioni backend, ecc.).Ingress malevolo o un AdmissionReview diretto può inserire stringhe controllate nei template/frammenti di configurazione. Durante la verifica/caricamento di questo nginx.conf, il processo di verifica (nginx -t) e le successive operazioni sul file di configurazione possono portare all'esecuzione di codice arbitrario, alla scrittura/esecuzione di file o all'esecuzione di comandi nel contesto del controller.AdmissionReview al validating webhook (accesso dalla pod network o accesso di rete diretto); assenza di misure compensative — NetworkPolicy, restrizioni RBAC o autenticazione aggiuntiva del webhook. In alcuni scenari, l'elusione dei permessi Create/Update è possibile inviando un AdmissionReview appositamente costruito direttamente al webhook.
Uno sfruttamento riuscito consente l'esecuzione di codice nel container ingress-nginx, che di solito permette di:
ingress-nginx-controller-admission e il servizio ingress-nginx-controller da origini non standard (nei report, da container come alpine), cosa che non dovrebbe accadere durante il funzionamento normale.nginx -t e riavvii improvvisi del controller, nonché operazioni inaspettate di scrittura di file da parte del processo ingress-nginx.Ingress-NGINX è uno dei controller Ingress più utilizzati in Kubernetes (ampiamente impiegato per organizzare l'accesso esterno ai servizi). Il controller funge da proxy inverso: riceve il traffico esterno e lo inoltra ai Service/Pod corrispondenti in base a un insieme di regole Ingress. Il progetto Ingress-NGINX gode di grande popolarità e ha una quota di installazione significativa nei cluster accessibili via Internet.
Ingress-NGINX viene citato nella documentazione di Kubernetes come esempio di riferimento di controller Ingress. Secondo le stime, una parte significativa dei cluster pubblici lo utilizza; alcune ricerche indicano che circa il 41% dei cluster accessibili pubblicamente utilizza Ingress-NGINX. È proprio a causa dell'ampia diffusione e del ruolo centrale nel routing del traffico che le vulnerabilità in questo componente hanno un elevato impatto pratico.
validate.nginx.ingress.kubernetes.io). Ciò lo rende facile da raggiungere dall'interno del cluster.Ingress / AdmissionReview appositamente predisposto, in cui determinati campi contengono stringhe dannose che non hanno subito un'adeguata filtrazione.nginx.conf sulla base di questi input ed esegue nginx -t / altre operazioni di verifica.Tali vulnerabilità sono particolarmente pericolose se combinate con altri difetti: un pod compromesso (o SSRF in un'applicazione pubblica) + un validating webhook esposto offrono un'alta probabilità di compromissione totale. Pertanto, l'analisi degli incidenti deve considerare la catena di dipendenze e i potenziali vettori, non solo la versione di ingress-nginx.