W popularnym kontrolerze Ingress-Nginx w wersjach do 1.12.0 i 1.11.4 włącznie znaleziono krytyczne podatności umożliwiające zdalne wykonanie kodu bez konieczności uwierzytelnienia. Ingress-Nginx jest domyślnym kontrolerem zarządzania ruchem sieciowym oferującym funkcje reverse-proxy oraz load balancingu w klastrach Kubernetes.
Zagrożenie
Znalezione podatności pozwalają na zdalne wykonanie kodu w klastrach z uruchomionym kontrolerem Ingress-Nginx poprzez wykorzystanie webhooka wystawianego domyślnie przez tę usługę. Jest ona domyślnie wystawiona na porcie TCP 8443 i z reguły osiągalna dla wszystkich podów w klastrze. Atakujący mający sieciowy dostęp do tej usługi, może zdalnie wykonać kod wykonując zapytanie HTTP.
Podatności otrzymały następujące CVE: CVE-2025-1097, CVE-2025-1098, CVE-2025-24513, CVE-2025-24514 oraz najpoważniejsza z nich CVE-2025-1974, której krytyczność oceniono na CVSS 9.8.
Advisory producenta dostępne jest na stronie: https://kubernetes.io/blog/2025/03/24/ingress-nginx-CVE-2025-1974.
Informacja znalazców podatności dostępna jest na stronie https://wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities.
Uwaga: Podany jest Ingress NGINX Controller, a nie NGINX Ingress Controller.
Weryfikacja podatności
Podatna jest wersja 1.12.0 oraz wszystkie do 1.11.4.
Podatny webhook nazywa się "ingress-nginx-admission", i można zweryfikować jego obecność wykonując polecenie
kubectl get ValidatingWebhookConfiguration -A
Jeżeli polecenie zwróci konfigurację, a wersja Ingress-Nginx to 1.12.0 lub 1.11.4 i niższa, podatność jest możliwa do wykorzystania.
Rekomendacje
Rekomendujemy pilną aktualizację komponentu Ingress-Nginx do wersji 1.12.1 lub 1.11.5: https://kubernetes.github.io/ingress-nginx/deploy/upgrade/.
Jeżeli nie jest to możliwe, należy podjąć następujące działania zaradcze:
-
Ograniczenie dostępu sieciwego do usługi Validating Admission Controller na porcie TCP :8443 wyłącznie do usługi API kube-apiserver.
-
Wyłączenie funkcji Validating Admission Controller:
- jeżeli do instalacji Ingress-Nginx użyto Helm, należy przeinstalować ją używając opcjicontroller.admissionWebhooks.enabled=false
.
- jeżeli Ingress-Nginx zainstalowano ręcznie, należy usunąć konfiguracjęValidatingWebhookConfiguration
oraz usunąć parametr--validating-webhook
z polecenia w konfiguracji Deployment lub DaemonSetingress-nginx-controller
.