TravisCI Security

Support HackTricks

O que é TravisCI

Travis CI é um serviço de integração contínua hospedado ou local usado para construir e testar projetos de software hospedados em várias plataformas git diferentes.

Ataques

Gatilhos

Para lançar um ataque, você primeiro precisa saber como acionar uma construção. Por padrão, o TravisCI acionará uma construção em pushes e pull requests:

Cron Jobs

Se você tiver acesso à aplicação web, pode configurar crons para executar a construção, isso pode ser útil para persistência ou para acionar uma construção:

Parece que não é possível configurar crons dentro do .travis.yml de acordo com isso.

PR de Terceiros

O TravisCI, por padrão, desabilita o compartilhamento de variáveis de ambiente com PRs provenientes de terceiros, mas alguém pode habilitá-lo 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 estão listados na página web) e segredos criptografados personalizados, que são armazenados dentro do arquivo .travis.yml como base64 (note que ambos, quando 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 definidas aqui aparecerão ao acionar uma construção.

  • 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 a openssl 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 construção com shell reverso rodando em Windows/Mac/Linux

  • Exemplo de construção vazando a env 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 construções no Worker. Isso significa que um atacante poderá se mover lateralmente para aquele servidor do qual ele poderá:

  • escapar para o host?

  • comprometer kubernetes?

  • comprometer outras máquinas rodando na mesma rede?

  • comprometer novas credenciais de nuvem?

Referências

Support HackTricks

Last updated