
Uma ferramenta de teste mínima para ajudar a detectar vulnerabilidades de injeção de anotações em controladores NGINX Ingress do Kubernetes. Este script envia uma solicitação AdmissionReview cuidadosamente elaborada para simular um possível vetor de exploração do CVE-2025-1974 e verifica se há sinais de anotações mal interpretadas nos logs do controlador.
Este script testa vulnerabilidades de injeção de anotações em clusters Kubernetes usando o Controlador Ingress NGINX. Ele é destinado apenas para fins de detecção em relação ao CVE-2025-1974, que permite que anotações maliciosas influenciem a configuração do NGINX.
A vulnerabilidade, divulgada pela Wiz.io (post no blog), envolve a injeção de anotações que são tratadas incorretamente pelo controlador. Por exemplo:
nginx.ingress.kubernetes.io/auth-url: "http://placeholder/#; error_log /root/this_path_shouldnt_exist.log debug; #"
Isso pode levar a comportamento inesperado da configuração do NGINX e erros de permissão se processado. Em cenários mais avançados, esse tipo de injeção pode ser encadeado com outras configurações incorretas para alcançar execução remota de código (RCE).
AdmissionReview criado de um arquivo YAML./validate do controlador de admissão.admission_review.yaml: Contém a solicitação AdmissionReview criada.main.py: Envia o payload para o controlador.Primeiro, encaminhe a porta do controlador de admissão:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller-admission 8443:443
Então execute:
python main.py --url https://localhost:8443
Verifique os logs do controlador ingress:
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
Você pode ver:
nginx: [emerg] open() "/root/this_path_shouldnt_exist.log" failed (13: Permission denied)
Isso indica que a anotação foi executada indevidamente como uma diretiva.
Apenas para testes educacionais e autorizados. Não execute em sistemas sem permissão.
Use esta ferramenta para verificar se seu cluster está vulnerável à injeção de anotações via Ingress NGINX. A exploração desta vulnerabilidade pode fazer parte de uma cadeia de ataques mais ampla que leva à execução remota de código.