
Ce document présente une recherche sur la vulnérabilité CVE-2025-1974 affectant le composant ingress-nginx (validating admission controller) pour Kubernetes.
CVE-2025-1974 est une vulnérabilité critique (CVSS 3.1 9.8) constituant une Remote Code Execution (RCE) non authentifiée dans le contexte du processus ingress-nginx. Lors de l'exécution de l'attaque, un attaquant disposant d'un accès au réseau des pods (ou d'un moyen de délivrer un AdmissionReview au validating webhook) peut parvenir à exécuter du code arbitraire dans le pod du contrôleur, ce qui mène potentiellement à la divulgation de Secrets et à la prise de contrôle du cluster.
Ingress-nginx est l'un des contrôleurs Ingress les plus répandus dans Kubernetes (les estimations indiquaient une utilisation dans des dizaines de pour cent des clusters), donc l'impact pratique de la vulnérabilité est très élevé. La description, l'analyse technique et les recommandations officielles de correctifs ont été publiées par Kubernetes, les chercheurs de Wiz et plusieurs blogs de fournisseurs.
Analyser pas à pas CVE-2025-1974 et préparer les éléments nécessaires au write-up :
Cette recherche est menée exclusivement à des fins éducatives et éthiques et s'adresse à des environnements de test/contrôlés.
En aucun cas ne lancez d'exploits/PoC contre des clusters tiers ou des instances publiquement accessibles sans l'autorisation écrite du propriétaire. La publication ouverte d'un PoC entièrement opérationnel « weaponized » augmente fortement le risque d'abus — il est préférable de fournir dans la partie publique un safe-PoC et une méthodologie. (Les advisories officiels et les fournisseurs soulignent également la prudence lors de la diffusion d'exploits).
cpe:2.3:a:kubernetes:ingress-nginx_controller:<version> — versions vulnérables d'ingress-nginx (les advisories indiquent des versions spécifiques ; mettez à jour les valeurs lors de la publication finale).Conditions de configuration pour lesquelles la vulnérabilité est pertinente :
Résumé succinct.
La vulnérabilité a été découverte dans le composant Validating Admission Controller du contrôleur Ingress-NGINX et est liée à la manière dont ce composant génère et vérifie la configuration temporaire de NGINX à partir des Ingress / AdmissionReview entrants. Lors du traitement, le contrôleur génère nginx.conf et lance la vérification de la configuration (nginx -t). En raison d'une sanitisation insuffisante des champs Ingress/AdmissionReview, un attaquant peut injecter des fragments spécialement préparés qui se retrouvent dans la configuration générée et entraînent l'exécution de commandes dans le processus du contrôleur — c'est-à-dire une exécution de code à distance (RCE) dans le pod ingress-nginx.
AdmissionReview/Ingress entrants, acceptés par le validating webhook du contrôleur, deviennent les données sources pour la génération de la configuration NGINX (y compris les champs d'annotations, les paramètres backend, etc.).Ingress malveillant ou un AdmissionReview direct peut injecter des chaînes contrôlées dans les modèles/fragments de configuration. Lors de la vérification/du chargement de ce nginx.conf, le processus de vérification (nginx -t) et les opérations ultérieures sur le fichier de configuration peuvent conduire à l'exécution de code arbitraire, à l'écriture/exécution de fichiers ou au lancement de commandes dans le contexte du contrôleur.AdmissionReview au validating webhook (accès depuis le réseau des pods ou accès réseau direct) ; l'absence de mesures compensatoires — NetworkPolicy, restrictions RBAC ou authentification supplémentaire du webhook. Dans certains scénarios, le contournement des droits Create/Update est possible en envoyant un AdmissionReview forgé directement au webhook.
Une exploitation réussie permet l'exécution de code dans le conteneur ingress-nginx, ce qui permet généralement :
ingress-nginx-controller-admission et le service ingress-nginx-controller depuis des sources non standard (dans les rapports — depuis des conteneurs de type alpine), ce qui ne devrait pas se produire en fonctionnement normal.nginx -t et les redémarrages soudains du contrôleur, ainsi que les opérations inattendues d'écriture de fichiers par le processus ingress-nginx.Ingress-NGINX est l'un des contrôleurs Ingress les plus utilisés dans Kubernetes (largement employé pour organiser l'accès externe aux services). Le contrôleur agit comme un proxy inverse : il reçoit le trafic externe et le proxifie vers les Service/Pod correspondants sur la base d'un ensemble de règles Ingress. Le projet Ingress-NGINX est très populaire et détient une part d'installation significative dans les clusters accessibles sur Internet.
Ingress-NGINX est présenté dans la documentation Kubernetes comme un exemple de référence de contrôleur Ingress. Selon les estimations, une part importante des clusters ouverts l'utilisent ; certaines études indiquent qu'environ 41 % des clusters publiquement accessibles utilisent Ingress-NGINX. C'est précisément en raison de sa large diffusion et de son rôle central dans le routage du trafic que les vulnérabilités de ce composant ont un impact pratique élevé.
validate.nginx.ingress.kubernetes.io). Cela le rend facile à atteindre depuis l'intérieur du cluster.Ingress / AdmissionReview spécialement forgé est créé, où certains champs contiennent des chaînes malveillantes n'ayant pas subi de filtrage approprié.nginx.conf sur la base de ces données d'entrée et exécute nginx -t / d'autres opérations de vérification.Ces vulnérabilités sont particulièrement dangereuses en combinaison avec d'autres défauts : un pod compromis (ou une SSRF dans une application publique) + un validating webhook exposé donne une forte probabilité de compromission totale. Par conséquent, l'analyse des incidents doit prendre en compte la chaîne de dépendances et les vecteurs potentiels, et pas seulement la version d'ingress-nginx.