CEVIU Logo
Voltar
Falha crítica no Argo CD permite execução remota de código sem autenticação

Falha crítica no Argo CD permite execução remota de código sem autenticação

Aprofundamento CEVIU

Aprofundamento

O argo-cd é uma ferramenta open-source de continuous deployment declarativa para Kubernetes, baseada no paradigma GitOps, ou seja, o repositório Git é a única fonte confiável para estado desejado dos recursos. Ele funciona com três componentes principais: o API server (que lida com autenticação e requisições), o application controller (que reconcilia estado real x desejado) e o repo-server (vulnerável aqui), responsável por buscar e processar manifests de repositórios Git, incluindo Kustomize, Helm e Jsonnet. O repo-server não exige autenticação no endpoint gRPC /repository.RepoServerService/GenerateManifest, e aceita opções personalizadas de Kustomize via estrutura KustomizeOptions. Como essa estrutura pode ser injetada diretamente na chamada gRPC, sem validação, sem controle de acesso, um invasor consegue forçar a execução arbitrária de binários locais, como perl, usando flags legítimas do kustomize (ex: --help-command). A exploração não depende de credenciais nem de configurações específicas do usuário: basta que o repo-server esteja exposto em rede.

O ataque se estende ao Redis integrado: o argo-cd cacheia manifests *com segredos injetados por plugins* nesse banco, e o Redis, por padrão, roda sem autenticação. Uma vez com RCE no repo-server, o invasor extrai REDIS_PASSWORD do ambiente e acessa o Redis diretamente para ler credenciais de clusters, tokens de serviço e até chaves de repositórios privados. Isso permite movimentação lateral imediata dentro do cluster, inclusive para escalar privilégios via ServiceAccounts comprometidas.

O que mudou

Em abril de 2024, a Cycode já havia identificado que o Redis do argo-cd era acessível sem autenticação e poderia levar à tomada total do cluster, mas não demonstrou RCE pré-autenticada no repo-server nem detalhou o vetor de exploração. Agora, a Synacktiv não só confirmou o risco do Redis, mas descobriu e explorou uma falha de RCE *não autenticada* no próprio repo-server via gRPC, usando CodeQL para mapear fluxos de dados não confiáveis até sinks de execução de comando. Isso transforma uma vulnerabilidade de 'acesso não autorizado ao cache' em um caminho direto para execução remota de código, sem qualquer interação do usuário administrador.

Por que isso importa

Argo CD está em 93% dos ambientes de produção Kubernetes segundo pesquisa de 2023 da própria equipe. Sua arquitetura assume que o repo-server é um componente de confiança interna, mas, quando exposto em rede (ex: em implantações Helm sem políticas de rede restritivas), vira um alvo de alto impacto. Não há mitigação via atualização de versão no momento: o problema está na falta de autenticação no endpoint gRPC, não em um bug de parsing. A única defesa eficaz é isolar o repo-server e o Redis com NetworkPolicies rigorosas, o que muitas equipes ainda não aplicam por considerarem esses serviços 'internos'. Falhar nisso equivale a deixar uma porta aberta para o coração do cluster.

Repositório oficial: argoproj/argo-cd

Linha do tempo

  1. Cycode publica análise mostrando que o Redis do argo-cd é acessível sem autenticação e pode levar à tomada do cluster

  2. Synacktiv divulga falha de RCE não autenticada no repo-server do argo-cd via gRPC e KustomizeOptions, com exploração que combina RCE + exfiltração de credenciais do Redis

Perguntas frequentes

O que torna essa falha diferente de outras RCEs em ferramentas CI/CD?

Diferente de RCEs que exigem login, webhook malicioso ou configuração específica, essa falha permite execução remota *sem autenticação*, diretamente no endpoint gRPC do repo-server, um serviço que normalmente não é exposto publicamente, mas frequentemente fica acessível dentro da rede do cluster.

Por que o Redis é crítico nessa cadeia de exploração?

O argo-cd armazena no Redis manifests gerados por plugins, e esses manifests podem conter segredos injetados (como tokens de acesso a repositórios privados). Como o Redis roda sem senha por padrão, qualquer RCE no repo-server permite extrair esses dados e escalar para controles de cluster completos.

Atualizar para a última versão do argo-cd resolve o problema?

Não. O problema não está em uma versão específica, mas no design arquitetural: o endpoint gRPC do repo-server nunca exigiu autenticação. Até o release v3.4.4 (mais recente confirmado), a correção depende de mudanças de configuração de rede, não de patch de código.

Como saber se minha instância está vulnerável?

Verifique se o serviço repo-server está acessível via gRPC de fora do pod (ex: com grpcurl -plaintext :8081 list). Se listar serviços como repository.RepoServerService, e seu Redis não tem senha configurada (redis-cli -h ping responde 'PONG'), sua instância está exposta.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Segurança da Informação
Publicado
03 de julho de 2026
Editoria
CEVIU Segurança da Informação

Quer receber mais sobre CEVIU Segurança da Informação?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser