# TravisCI Security {{#include ../../banners/hacktricks-training.md}} ## Що таке TravisCI **Travis CI** - це **хостингова** або на **місці** служба **безперервної інтеграції**, яка використовується для створення та тестування програмних проектів, розміщених на кількох **різних git платформах**. {{#ref}} basic-travisci-information.md {{#endref}} ## Атаки ### Тригери Щоб розпочати атаку, спочатку потрібно знати, як запустити збірку. За замовчуванням TravisCI **запускає збірку при пушах і запитах на злиття**: ![](<../../images/image (145).png>) #### Cron Jobs Якщо у вас є доступ до веб-додатку, ви можете **налаштувати cron для запуску збірки**, це може бути корисно для збереження доступу або для запуску збірки: ![](<../../images/image (243).png>) > [!NOTE] > Схоже, що неможливо налаштувати cron всередині `.travis.yml` відповідно до [цього](https://github.com/travis-ci/travis-ci/issues/9162). ### PR від третіх сторін TravisCI за замовчуванням забороняє обмін змінними середовища з PR, що надходять від третіх сторін, але хтось може це увімкнути, і тоді ви зможете створити PR до репозиторію та ексфільтрувати секрети: ![](<../../images/image (208).png>) ### Витік секретів Як пояснено на сторінці [**основна інформація**](basic-travisci-information.md), існує 2 типи секретів. **Секрети змінних середовища** (які перераховані на веб-сторінці) та **кастомні зашифровані секрети**, які зберігаються в файлі `.travis.yml` у форматі base64 (зверніть увагу, що обидва, як зберігаються зашифрованими, в кінцевих машинах стануть змінними середовища). - Щоб **перерахувати секрети**, налаштовані як **змінні середовища**, перейдіть до **налаштувань** **проекту** та перевірте список. Однак зверніть увагу, що всі змінні середовища проекту, встановлені тут, з'являться при запуску збірки. - Щоб перерахувати **кастомні зашифровані секрети**, найкраще, що ви можете зробити, це **перевірити файл `.travis.yml`**. - Щоб **перерахувати зашифровані файли**, ви можете перевірити наявність **`.enc` файлів** у репозиторії, для рядків, подібних до `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` у конфігураційному файлі, або для **зашифрованих iv та ключів** у **змінних середовища**, таких як: ![](<../../images/image (81).png>) ### TODO: - Приклад збірки з реверс-шелом, що працює на Windows/Mac/Linux - Приклад збірки, що витікає змінну середовища, закодовану в base64, у логах ### TravisCI Enterprise Якщо зловмисник опиниться в середовищі, яке використовує **TravisCI enterprise** (більше інформації про те, що це таке, в [**основній інформації**](basic-travisci-information.md#travisci-enterprise)), він зможе **запускати збірки в Worker.** Це означає, що зловмисник зможе переміщатися по горизонталі до цього сервера, з якого він зможе: - втекти до хоста? - скомпрометувати kubernetes? - скомпрометувати інші машини, що працюють в тій же мережі? - скомпрометувати нові облікові дані хмари? ## Посилання - [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/) - [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security) {{#include ../../banners/hacktricks-training.md}}