Falha no Bitbucket vaza segredos da AWS
22 de Maio de 2024

Atores de ameaças foram descobertos violando contas da AWS usando segredos de autenticação vazados como texto simples (plaintext) em objetos de artefato do Atlassian Bitbucket.

O problema foi descoberto pela Mandiant, que estava investigando uma exposição recente de segredos do Amazon Web Services (AWS) que atores de ameaças usaram para ganhar acesso ao AWS.

Embora o problema tenha sido descoberto no contexto de uma investigação, ilustra como os dados anteriormente considerados seguros podem ser vazados em texto simples para repositórios públicos.

Bitbucket é um repositório compatível com Git e um serviço de hospedagem baseado na web administrado pela Atlassian, oferecendo aos desenvolvedores uma plataforma de gestão de código e colaboração.

Bitbucket Pipelines é um serviço integrado de entrega/implantação contínua (CI/CD) que automatiza os processos de construção, teste e implantação.

Administradores de sistemas frequentemente vinculam Pipelines diretamente ao AWS para implantação rápida de aplicativos e para acessar recursos usando AWS CLI, SDKs e outras ferramentas AWS.

Para facilitar essa automação, o Bitbucket permite que os desenvolvedores armazenem informações sensíveis, como segredos de autenticação AWS, em 'Variáveis Seguras' para usá-las facilmente em seu código sem expor as chaves a outras pessoas.

Quando uma variável é configurada como segura no BitBucket, elas são armazenadas de forma criptografada para evitar a exposição pública de seus valores no ambiente Bitbucket.

"Você pode proteger uma variável, o que significa que ela pode ser usada em seus scripts, mas seu valor será ocultado nos logs de construção (veja o exemplo abaixo)", explica a documentação do Bitbucket.

"Se você quiser editar uma variável segura, você só pode dar a ela um novo valor ou deletá-la.
Variáveis seguras são armazenadas como valores criptografados," continua a documentação.

No entanto, a Mandiant descobriu que objetos de artefato gerados durante execuções de pipeline podem conter informações sensíveis, incluindo variáveis seguras em texto simples.

Como os desenvolvedores podem não estar cientes de que esses segredos são expostos em arquivos de artefato, o código-fonte pode ser publicado em repositórios públicos onde atores de ameaças podem roubá-los.

Artefatos são definidos no arquivo de configuração bitbucket-pipelines.yml usado para especificar os processos de CI/CD de um projeto Bitbucket.

Uma das diretivas desses arquivos é `artifacts:`, que é usada para especificar variáveis, arquivos e diretórios que são exportados para objetos de artefato para serem retidos e usados em etapas futuras do processo de construção e teste.

A Mandiant diz que é comum para os desenvolvedores usar o comando `printenv` para armazenar todos os arquivos de ambiente em um arquivo de texto, que é então passado para um objeto de artefato para etapas futuras no processo de construção.

No entanto, ao fazer isso, as "variáveis seguras" serão exportadas em texto simples para o arquivo de artefato, em vez de em sua forma criptografada.

Se esses arquivos de artefato forem então armazenados em um local público, um ator de ameaça pode simplesmente abrir o arquivo de texto e visualizar todas as variáveis em texto simples, roubando facilmente segredos de autenticação que podem ser usados para roubar dados ou realizar outras atividades maliciosas.

"A Mandiant viu casos em que equipes de desenvolvimento usaram artefatos do Bitbucket no código-fonte de aplicações web para fins de solução de problemas, mas, sem o conhecimento das equipes de desenvolvimento, esses artefatos continham valores em texto simples de chaves secretas", lê-se no relatório.

Isso resultou em chaves secretas sendo expostas à internet pública onde foram localizadas e subsequentemente aproveitadas por atacantes para ganhar acesso não autorizado.

Outra possibilidade, de acordo com a Mandiant, é a má configuração do arquivo 'bitbucket-pipelines.yml', que define o pipeline de CI/CD, para incluir variáveis seguras nos logs ou artefatos.

Quando scripts de pipeline registram variáveis de ambiente para fins de depuração, eles podem registrar inadvertidamente informações sensíveis e, uma vez que esses logs geralmente são armazenados em locais acessíveis, há novamente um risco de exposição de segredos.

A Mandiant lembra aos desenvolvedores que o Bitbucket não foi projetado para gerenciar segredos, sugerindo que um produto dedicado e especializado seja usado para esse fim.

Também é recomendado que os desenvolvedores revisem cuidadosamente os artefatos para garantir que não contenham segredos em texto simples dentro dos arquivos gerados.

Por fim, é aconselhável implantar varreduras de código em todo o ciclo de vida do pipeline para capturar eventos de exposição de segredos e removê-los antes que o código alcance a produção.

É incomum para um usuário imprimir variáveis seguras em um arquivo durante a construção de um pipeline e essa ação vai contra as melhores práticas de segurança.

Entendemos que os clientes têm uma variedade de casos de uso para CI/CD e recomendamos fortemente que os usuários do Bitbucket sigam as melhores práticas de segurança ao configurar seus Pipelines.Também incentivamos os clientes a adicionarem varredura de segredos, varredura de código com Snyk e outras integrações de segurança suportadas.

Além disso, o Bitbucket segue a prática padrão da indústria de criptografar as variáveis do Pipelines e mascarar sua saída nos logs para evitar o vazamento inadvertido de segredos.

Publicidade

Curso gratuito de Python

O curso Python Básico da Solyd oferece uma rápida aproximação à linguagem Python com diversos projetos práticos. Indo do zero absoluto até a construção de suas primeiras ferramentas. Tenha também suporte e certificado gratuitos. Saiba mais...