Falha crítica no AWS CodeBuild expôs dois terços da nuvem global

Uma vulnerabilidade grave no serviço CodeBuild da Amazon Web Services colocou em risco cerca de 66% de todos os ambientes em nuvem do planeta. A falha, descoberta pela empresa de segurança Wiz e apelidada de CodeBreach, foi corrigida em setembro de 2024 antes de ser explorada por criminosos ou agências governamentais. O impacto potencial era tão grande que poderia superar o ataque à cadeia de suprimentos do SolarWinds em 2020.

O detalhe técnico que separou a segurança de um desastre global foi mínimo: a ausência de dois caracteres (^ e $) em uma expressão regular usada para validar identidades.

Como a falha veio à tona

A investigação começou quando pesquisadores da Wiz detectaram uma tentativa de ataque à cadeia de suprimentos envolvendo a extensão Amazon Q para o VS Code. Isso levou a equipe a analisar o pipeline de integração contínua da AWS, em especial o CodeBuild, serviço que executa builds automáticos a partir de repositórios no GitHub.

O CodeBuild utiliza filtros de webhook para definir quem pode disparar compilações. Um desses filtros, o ACTOR_ID, funciona como uma lista de permissões baseada em IDs confiáveis do GitHub. O problema: as expressões regulares usadas nessa validação não tinham âncoras de início e fim. Na prática, qualquer ID que contivesse, em algum ponto, um ID autorizado era aceito.

Exploração simples, impacto gigante

Para provar a falha, a Wiz automatizou a criação de 200 GitHub Apps, cada uma recebendo um ID sequencial. Era uma questão estatística: em algum momento, um ID gerado conteria o ID de um mantenedor confiável da AWS. Em poucas horas, isso aconteceu.

Com o ID malicioso validado, os pesquisadores submeteram um pull request aparentemente inofensivo, corrigindo um problema menor. Dentro das dependências, porém, havia um pacote projetado para rodar durante o build e extrair credenciais do GitHub. O CodeBuild iniciou a compilação automaticamente, executou o script e expôs credenciais com privilégios administrativos.

Repositórios estratégicos em risco

A vulnerabilidade afetava quatro repositórios críticos da AWS. O mais sensível era o AWS SDK for JavaScript (aws-sdk-js-v3), com cerca de 15 milhões de downloads semanais e presente em aproximadamente 66% dos ambientes cloud do mundo. Esse SDK é usado por praticamente todo serviço AWS que roda JavaScript, inclusive pelo próprio AWS Console.

Também estavam expostos o AWS Libcrypto, o Amazon Corretto Crypto Provider e o Registry of Open Data on AWS. Um comprometimento real do SDK JavaScript daria a atacantes acesso ao que especialistas chamam de “sistema nervoso central da nuvem”.

Por que poderia ser pior que SolarWinds

O ataque SolarWinds, revelado em 2020, comprometeu cerca de 18 mil clientes corporativos por meio do software Orion. Levou quase nove meses para ser descoberto e causou prejuízos bilionários, atingindo empresas privadas e órgãos governamentais de alto nível.

No cenário hipotético traçado por especialistas, a falha no CodeBuild permitiria algo ainda mais silencioso. Após obter acesso administrativo ao repositório, os atacantes aguardariam o momento do release semanal do SDK. Pouco antes da publicação, inseririam um commit sutil, disfarçado de telemetria ou analytics. Em poucas horas, milhões de aplicações baixariam o pacote comprometido.

A partir daí, o código malicioso poderia coletar credenciais AWS, tokens de sessão e dados de aplicações, abrindo caminho para acesso a serviços como S3, RDS, Lambda, VPC e IAM — tudo sem levantar alertas imediatos.

Correção rápida e medidas adicionais

Ao perceber a gravidade do problema, a Wiz reportou a falha à AWS em agosto de 2024 por meio do programa de bug bounty. Em 48 horas, a vulnerabilidade foi corrigida com a inclusão das âncoras nas expressões regulares. Em setembro, a empresa implementou camadas adicionais de segurança.

A AWS também realizou auditorias extensivas no CloudTrail e em seus repositórios públicos, concluindo que não há evidências de exploração por terceiros. Além disso, reforçou as proteções em processos de build que lidam com tokens do GitHub e outras credenciais mantidas em memória.

O episódio deixa um recado direto para quem trabalha com cloud e DevOps: detalhes aparentemente pequenos, como uma regex mal escrita, podem escalar para riscos sistêmicos globais. Em ambientes hiperconectados, o diabo continua morando nos detalhes.