1 pontos por GN⁺ 2025-08-20 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A equipe de pesquisa de segurança conseguiu execução remota de código (RCE) nos servidores de produção do CodeRabbit e vazamento de tokens de API e segredos
  • Com um PR usando Rubocop, foi possível roubar variáveis de ambiente, além de acessar o PostgreSQL e ler/escrever em 1 milhão de repositórios
  • Com o vazamento da chave privada do GitHub App, tornou-se possível injetar código malicioso e modificar código-fonte em larga escala, incluindo repositórios públicos e privados
  • A equipe do CodeRabbit respondeu imediatamente em poucas horas após o reporte da vulnerabilidade e reforçou as medidas de segurança
  • Ao executar ferramentas externas, destaca-se a necessidade de prevenir incidentes de segurança com isolamento em sandbox, princípio do menor privilégio e bloqueio de rede

Introdução

  • Em janeiro de 2025, a equipe de pesquisa da Kudelski Security divulgou uma vulnerabilidade grave no CodeRabbit
  • No CodeRabbit, amplamente usado como ferramenta de automação de revisão de PRs, foram confirmados problemas críticos como remote code execution (RCE), vazamento de variáveis de ambiente e informações sensíveis, e obtenção de permissão de leitura/escrita em mais de 1 milhão de repositórios
  • Este texto traz uma análise detalhada da vulnerabilidade pública apresentada na Black Hat USA e tem alto valor como caso real de falha em ferramentas de revisão baseada em código e sistemas integrados
  • A vulnerabilidade reportada foi corrigida rapidamente logo após a notificação

Visão geral do CodeRabbit

  • O CodeRabbit é o aplicativo de revisão de código com IA mais instalado no GitHub/GitLab Marketplace
  • Nas duas plataformas, ele revisa 1 milhão de repositórios e 5 milhões de pull requests
  • Sempre que o usuário cria ou atualiza um PR, o mecanismo de IA analisa o código e gera automaticamente comentários e sugestões
  • Ele traz ganhos significativos de produtividade de desenvolvimento, como resumo de código, detecção de vulnerabilidades de segurança, sugestões de melhoria e geração de diagramas

Uso do CodeRabbit e estrutura de permissões

  • O plano Pro oferece integração com ferramentas de linter e SAST (análise estática)
  • Ao autenticar a conta do GitHub e instalar o app, o usuário concede permissão de leitura e escrita aos repositórios selecionados
  • Se esse modelo de permissões for explorado de forma maliciosa, ele pode causar impacto direto no código de todos os repositórios onde o app estiver instalado

Execução de ferramentas externas e descoberta do exploit

  • Quando detecta alterações de código em um PR, o CodeRabbit executa automaticamente várias ferramentas externas de análise estática (ex.: Rubocop)
  • O Rubocop foi projetado para usar o arquivo de configuração .rubocop.yml a fim de carregar arquivos externos de extensão Ruby (ext.rb etc.)
    • O atacante insere código malicioso em .rubocop.yml e ext.rb, envia um PR e induz o CodeRabbit a executar esse código em seu servidor remoto
  • O código executado por essa técnica envia todas as variáveis de ambiente do servidor para o servidor do atacante

Análise do conteúdo vazado das variáveis de ambiente

  • As variáveis de ambiente vazadas continham API keys, tokens e senhas de diversos serviços, incluindo:
    • chaves de API da Anthropic/OpenAI, salt/senha de criptografia, chave privada do GitHub App, informações de conexão com PostgreSQL etc.
  • Com RCE, os danos secundários podem ser grandes e de alto impacto, incluindo acesso ao banco de dados, alterações de código e vazamento de informações internas do serviço
  • Seria possível aprofundar a exploração maliciosa no servidor real, mas, considerando a operação do serviço, a verificação foi interrompida após o mínimo necessário

Obtenção de permissão de leitura/escrita em 1 milhão de repositórios

  • Foi possível autenticar na API do GitHub usando o GITHUB_APP_PEM_FILE (chave privada) presente nas variáveis de ambiente
  • Em todos os repositórios aos quais o CodeRabbit podia acessar, incluindo públicos e privados, seria possível exercer permissões extremamente poderosas, como:
    • leitura/escrita de código-fonte, substituição de arquivos de release (ataque à cadeia de suprimentos) e alteração do histórico git
  • O código de reprodução (PoC) foi divulgado, comprovando a viabilidade de exploração real

Resumo da PoC

  • Usando bibliotecas como PyGitHub e a chave privada vazada, o App ID etc., foi possível emitir tokens de acesso arbitrários para repositórios
  • Com esses tokens, torna-se possível automatizar clonagem de repositórios privados, alteração de arquivos, novos commits e adulteração de arquivos de release

Possibilidade de comprometimento dos repositórios internos/privados do CodeRabbit

  • Como a própria organização do CodeRabbit também utilizava a instalação do serviço, também seria possível acessar e clonar os repositórios internos de código-fonte do CodeRabbit
  • Bastava conhecer o nome da organização para consultar o installation ID e então acessar imediatamente a lista de repositórios correspondente

Resumo do impacto

  • Acesso não autorizado a repositórios privados e vazamento de dados pessoais
  • Ameaça de ataques à cadeia de suprimentos, como manipulação de código-fonte e inserção de malware/backdoors
  • Possibilidade de encadear com vulnerabilidades adicionais, como GitHub Actions
  • A RCE direta pode causar destruição de dados, indisponibilidade do serviço e danos em cascata a outros serviços

Contexto e limites do julgamento da IA

  • Mesmo durante o ataque, o próprio PR foi revisado normalmente pelo CodeRabbit, e embora tenha deixado comentários de alerta sobre vulnerabilidade, não conseguiu identificar de fato o trecho malicioso
  • Isso mostra que uma ferramenta de revisão de código com IA não necessariamente compreende o contexto completo de uma situação de risco real

Resposta e recomendações

  • O CodeRabbit desativou o Rubocop, trocou segredos e realizou auditoria do sistema em poucas horas após o reporte da vulnerabilidade
  • O problema ocorreu em uma ferramenta sem sandbox aplicada (Rubocop) e, após as medidas, o sistema foi melhorado para executar todas as ferramentas externas em ambientes isolados
  • Para reforçar a segurança, destaca-se a necessidade de design defensivo no ambiente de execução de ferramentas externas, com minimização de variáveis de ambiente, restrição de IPs com acesso à rede e bloqueio de acesso à internet

Divulgação responsável e conclusão

  • Em janeiro de 2025, após o reporte, houve resposta e correções rápidas
  • Ficou apenas na PoC, mas confirmou-se que um atacante malicioso poderia explorar isso facilmente para selecionar repositórios de alto valor, realizar ransomware em larga escala ou ataques destrutivos à cadeia de suprimentos
  • Reforça-se a importância de implementar sandbox e o princípio do menor privilégio ao integrar ferramentas externas de análise e serviços automatizados baseados em IA

Ainda não há comentários.

Ainda não há comentários.