TravisCI Security
O que é TravisCI
Travis CI é um serviço de integração contínua hospedado ou on premises usado para construir e testar projetos de software hospedados em várias diferentes plataformas git.
Basic TravisCI InformationAtaques
Triggers
Para lançar um ataque, você primeiro precisa saber como acionar uma build. Por padrão, TravisCI irá acionar uma build em pushes e pull requests:
Cron Jobs
Se você tiver acesso à aplicação web, pode configurar crons para executar a build, isso pode ser útil para persistência ou para acionar uma build:
Parece que não é possível configurar crons dentro do .travis.yml
de acordo com isto.
Third Party PR
TravisCI, por padrão, desabilita o compartilhamento de variáveis de ambiente com PRs vindos de terceiros, mas alguém pode habilitar isso e então você poderia criar PRs para o repositório e exfiltrar os segredos:
Dumping Secrets
Como explicado na página de informações básicas, existem 2 tipos de segredos. Segredos de Variáveis de Ambiente (que são listados na página web) e segredos criptografados personalizados, que são armazenados dentro do arquivo .travis.yml
como base64 (note que ambos, como são armazenados criptografados, acabarão como variáveis de ambiente nas máquinas finais).
Para enumerar segredos configurados como Variáveis de Ambiente, vá para as configurações do projeto e verifique a lista. No entanto, note que todas as variáveis de ambiente do projeto configuradas aqui aparecerão ao acionar uma build.
Para enumerar os segredos criptografados personalizados, o melhor que você pode fazer é verificar o arquivo
.travis.yml
.Para enumerar arquivos criptografados, você pode procurar por arquivos
.enc
no repositório, por linhas semelhantes aopenssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
no arquivo de configuração, ou por iv e chaves criptografadas nas Variáveis de Ambiente, como:
TODO:
Exemplo de build com shell reverso rodando em Windows/Mac/Linux
Exemplo de build vazando a variável de ambiente codificada em base64 nos logs
TravisCI Enterprise
Se um atacante acabar em um ambiente que usa TravisCI enterprise (mais informações sobre o que é isso na informação básica), ele poderá acionar builds no Worker. Isso significa que um atacante poderá se mover lateralmente para esse servidor, a partir do qual ele poderá:
escapar para o host?
comprometer o kubernetes?
comprometer outras máquinas rodando na mesma rede?
comprometer novas credenciais de cloud?
Referências
Last updated