
Este documento apresenta uma pesquisa sobre a vulnerabilidade CVE-2025-1974, que afeta o componente ingress-nginx (validating admission controller) para Kubernetes.
CVE-2025-1974 é uma vulnerabilidade crítica (CVSS 3.1 9.8), consistindo em Remote Code Execution (RCE) não autenticado no contexto do processo ingress-nginx. Ao executar o ataque, um invasor que tenha acesso à pod-network (ou uma forma de entregar um AdmissionReview ao validating webhook) pode conseguir executar código arbitrário no pod do controlador, o que potencialmente leva à exposição de Secrets e à tomada do cluster.
Ingress-nginx é um dos controladores Ingress mais comuns no Kubernetes (estimativas indicam uso em dezenas de por cento dos clusters), portanto o impacto prático da vulnerabilidade é muito alto. A descrição, a análise técnica e as recomendações oficiais de correções foram publicadas pela Kubernetes, por pesquisadores da Wiz e por vários blogs de fornecedores.
Analisar a CVE-2025-1974 passo a passo e preparar os materiais necessários para o write-up:
Esta pesquisa é conduzida exclusivamente para fins educacionais e éticos e é voltada para ambientes de teste/controlados.
Sob nenhuma circunstância execute exploits/PoCs contra clusters de terceiros ou instâncias publicamente acessíveis sem autorização por escrito do proprietário. A publicação de um PoC totalmente funcional e "weaponized" em formato aberto aumenta fortemente o risco de abuso — na parte pública, é melhor apresentar um safe-PoC e a metodologia. (Advisories oficiais e fornecedores também enfatizam cautela na disseminação de exploits).
cpe:2.3:a:kubernetes:ingress-nginx_controller:<version> — versões vulneráveis do ingress-nginx (as versões específicas estão indicadas nos advisories; atualize os valores na publicação final).Condições de configuração nas quais a vulnerabilidade é relevante:
Resumo breve.
A vulnerabilidade foi encontrada no componente Validating Admission Controller do controlador Ingress-NGINX e está relacionada à forma como esse componente gera e valida a configuração temporária do NGINX com base nos Ingress / AdmissionReview recebidos. Durante o processamento, o controlador gera o nginx.conf e executa a verificação de configuração (nginx -t). Devido à sanitização insuficiente dos campos de Ingress/AdmissionReview, o atacante pode inserir fragmentos especialmente preparados que entram na configuração gerada e, como resultado, levam à execução de comandos dentro do processo do controlador — ou seja, à execução remota de código (RCE) no pod do ingress-nginx.
AdmissionReview/Ingress recebidos, aceitos pelo validating webhook do controlador, tornam-se dados de origem para a geração da configuração do NGINX (incluindo campos de anotações, configurações de backend, etc.).Ingress malicioso ou um AdmissionReview direto pode injetar strings controladas em templates/fragmentos de configuração. Durante a verificação/carregamento desse nginx.conf, o processo de validação (nginx -t) e as operações subsequentes com o arquivo de configuração podem levar à execução de código arbitrário, gravação/execução de arquivos ou execução de comandos no contexto do controlador.AdmissionReview ao validating webhook (acesso pela pod-network ou acesso de rede direto); ausência de medidas compensatórias — NetworkPolicy, restrições de RBAC ou autenticação adicional do webhook. Em alguns cenários, é possível contornar as permissões de Create/Update enviando um AdmissionReview crafted diretamente ao webhook.
A exploração bem-sucedida permite execução de código no contêiner do ingress-nginx, o que geralmente possibilita:
ingress-nginx-controller-admission e para o serviço ingress-nginx-controller a partir de origens não padronizadas (nos relatos — de contêineres como alpine), o que não deveria ocorrer na operação normal.nginx -t e reinicializações repentinas do controlador, bem como operações inesperadas de gravação de arquivos pelo processo do ingress-nginx.Ingress-NGINX é um dos controladores Ingress mais amplamente utilizados no Kubernetes (amplamente empregado para organizar o acesso externo a serviços). O controlador atua como um proxy reverso: recebe o tráfego externo e o encaminha aos Services/Pods correspondentes com base em um conjunto de regras de Ingress. O projeto Ingress-NGINX goza de grande popularidade e tem uma parcela significativa de instalações em clusters acessíveis pela internet.
Na documentação do Kubernetes, o Ingress-NGINX é citado como exemplo de referência de controlador Ingress. Estima-se que uma parcela significativa dos clusters abertos o utilize; algumas pesquisas indicam que cerca de 41% dos clusters publicamente acessíveis usam Ingress-NGINX. É justamente devido à ampla adoção e ao papel central no roteamento de tráfego que vulnerabilidades nesse componente têm alto impacto prático.
validate.nginx.ingress.kubernetes.io). Isso torna fácil acessá-lo a partir de dentro do cluster.Ingress / AdmissionReview especialmente crafted é criado, onde determinados campos contêm strings maliciosas que não passaram pela filtragem adequada.nginx.conf com base nesses dados de entrada e executa nginx -t / outras operações de validação.Essas vulnerabilidades são especialmente perigosas quando combinadas com outros defeitos: pod comprometido (ou SSRF em aplicação pública) + validating webhook exposto oferece alta probabilidade de comprometimento total. Portanto, a análise de incidentes deve considerar a cadeia de dependências e os vetores potenciais, e não apenas a versão do ingress-nginx.