TravisCI Security
What is TravisCI
Travis CI es un servicio de integración continua alojado o en local utilizado para construir y probar proyectos de software alojados en varias plataformas git diferentes.
Basic TravisCI InformationAttacks
Triggers
Para lanzar un ataque primero necesitas saber cómo activar una construcción. Por defecto, TravisCI activará una construcción en los pushes y pull requests:
Cron Jobs
Si tienes acceso a la aplicación web, puedes configurar crons para ejecutar la construcción, esto podría ser útil para persistencia o para activar una construcción:
Parece que no es posible configurar crons dentro del .travis.yml
según esto.
Third Party PR
TravisCI, por defecto, desactiva el compartir variables de entorno con PRs provenientes de terceros, pero alguien podría habilitarlo y luego podrías crear PRs al repositorio y exfiltrar los secretos:
Dumping Secrets
Como se explica en la página de información básica, hay 2 tipos de secretos. Secretos de Variables de Entorno (que están listados en la página web) y secretos encriptados personalizados, que se almacenan dentro del archivo .travis.yml
como base64 (ten en cuenta que ambos, al ser almacenados encriptados, terminarán como variables de entorno en las máquinas finales).
Para enumerar secretos configurados como Variables de Entorno, ve a la configuración del proyecto y revisa la lista. Sin embargo, ten en cuenta que todas las variables de entorno del proyecto configuradas aquí aparecerán al activar una construcción.
Para enumerar los secretos encriptados personalizados, lo mejor que puedes hacer es revisar el archivo
.travis.yml
.Para enumerar archivos encriptados, puedes buscar archivos
.enc
en el repositorio, por líneas similares aopenssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
en el archivo de configuración, o por iv y claves encriptadas en las Variables de Entorno como:
TODO:
Ejemplo de construcción con shell inverso ejecutándose en Windows/Mac/Linux
Ejemplo de construcción filtrando la variable de entorno codificada en base64 en los logs
TravisCI Enterprise
Si un atacante termina en un entorno que utiliza TravisCI enterprise (más información sobre qué es esto en la información básica), podrá activar construcciones en el Worker. Esto significa que un atacante podrá moverse lateralmente a ese servidor desde el cual podría ser capaz de:
¿escapar al host?
¿comprometer kubernetes?
¿comprometer otras máquinas que se ejecutan en la misma red?
¿comprometer nuevas credenciales en la nube?
References
Last updated