
Un outil de test minimal pour aider à détecter les vulnérabilités d’injection d’annotations dans les contrôleurs Kubernetes NGINX Ingress. Ce script envoie une requête AdmissionReview conçue pour simuler un chemin d’exploitation potentiel de CVE-2025-1974 et vérifie les signes d’annotations mal interprétées dans les journaux du contrôleur.
Ce script teste les vulnérabilités d'injection d'annotations dans les clusters Kubernetes utilisant le contrôleur Ingress NGINX. Il est destiné uniquement à des fins de détection en lien avec CVE-2025-1974, qui permet à des annotations malveillantes d'influencer la configuration NGINX.
La vulnérabilité, divulguée par Wiz.io (article de blog), implique l'injection d'annotations qui sont mal gérées par le contrôleur. Par exemple :
nginx.ingress.kubernetes.io/auth-url: "http://placeholder/#; error_log /root/this_path_shouldnt_exist.log debug; #"
Cela peut entraîner un comportement inattendu de la configuration NGINX et des erreurs de permission si elle est traitée. Dans des scénarios plus avancés, ce type d'injection pourrait être combiné avec d'autres mauvaises configurations pour aboutir à une exécution de code à distance (RCE).
AdmissionReview fabriquée à partir d'un fichier YAML./validate du contrôleur d'admission.admission_review.yaml : Contient la requête AdmissionReview fabriquée.main.py : Envoie la charge utile au contrôleur.D'abord, transférez le port du contrôleur d'admission :
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller-admission 8443:443
Ensuite, exécutez :
python main.py --url https://localhost:8443
Vérifiez les logs du contrôleur Ingress :
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
Vous pourriez voir :
nginx: [emerg] open() "/root/this_path_shouldnt_exist.log" failed (13: Permission denied)
Cela indique que l'annotation a été exécutée de manière incorrecte en tant que directive.
Pour un usage éducatif et des tests autorisés uniquement. N'exécutez pas sur des systèmes sans permission.
Utilisez cet outil pour vérifier si votre cluster est vulnérable à l'injection d'annotations via Ingress NGINX. L'exploitation de cette vulnérabilité peut faire partie d'une chaîne d'attaque plus large menant à une exécution de code à distance.