Витік секретів у CI/CD
Налагоджувальний echo виводить ваш ключ розгортання в публічний журнал збірки.
Що таке Витік секретів у CI/CD?
Журнали збірки публічніші, ніж гадають автори workflow. Налагоджувальний крок, який виводить секрет середовища через echo, друкує його відкритим текстом. У тому самому workflow часто є й друга проблема: заголовок пул-реквесту, вставлений прямо в крок run, де він виконується як команда оболонки. Ви скопіюєте токен розгортання з публічних журналів Actions і розгорнете з ним власний образ, а потім приберете echo, перестанете інтерполювати ненадійні вхідні дані, зафіксуєте сторонні кроки CI за SHA коміту та замінете токен, бо маскування майбутніх журналів нічого не скасовує.
Що ви дізнаєтесь у Витік секретів у CI/CD
- Розпізнавайте витік секретів у CI/CD: крок workflow, який виводить секрет через echo чи друкує його, записує значення в журнал збірки, а в публічному запуску цей журнал доступний кожному
- Розумійте ін'єкцію скрипта в workflow: ненадійні вхідні дані, як-от заголовок пул-реквесту чи назва гілки, інтерпольовані в крок run, можуть виконатися в конвеєрі як команди оболонки
- Застосовуйте виправлення для секрету, що витік: приберіть echo, передавайте секрет через змінну середовища в лапках, щоб його використовували, а не друкували, і замініть ключ, бо він уже з'явився в доступному журналі
- Посильте захист конвеєра: передавайте ненадійні вхідні дані через змінні середовища в лапках замість інтерполяції в кроки run і обмежте, до чого мають доступ запуски, ініційовані пул-реквестами
- Фіксуйте сторонні кроки CI за SHA коміту, щоб переміщений тег не міг непомітно підмінити код на шкідливий, і перевіряйте файли workflow на такі самі шаблони з echo та інтерполяцією
Витік секретів у CI/CD — Кроки навчання
-
Публічні журнали збірки
Vellmoor розробляє свій периферійний транскодер відкрито, тож конвеєр репозиторію публічний, як і все, що він друкує. Бобу не потрібні ані обліковий запис, ані запрошення, ані єдиний експлойт, щоб почати. Він відкриває історію запусків і читає.
-
Відкрийте запуск релізу
Запуски Integration лише збирають і тестують. Боба цікавить workflow Release, бо реліз має потрапити в продакшн, а для цього потрібні облікові дані. Боб відкриває останній запуск релізу.
-
Розкрийте крок розгортання
Запуск — це список кроків, і кожен згорнуто. Отримання коду та збірка — рутина. Бобу потрібен крок, що звертається до продакшну, бо саме там мають використовуватися облікові дані.
-
Токен відкритим текстом
Крок розкривається, і облікові дані просто лежать там. Хтось додав рядок, що друкує токен, поки шукав причину збою розгортання; розгортання полагодили, а рядок залишився. Бобу нічого не треба зламувати. Він виділяє значення й копіює його.
-
Як довго це друкується
Один рядок журналу — одна копія. Боб повертається до історії запусків і шукає префікс токена у виводі кожного запуску, щоб дізнатися, як довго це триває. Від відповіді залежить, скільки людей уже можуть мати токен.
-
До чого дає доступ токен
Перш ніж скористатися токеном, Боб питає сервіс розгортання Vellmoor, що ці облікові дані можуть робити. Він викликає ендпоінт environments, передаючи токен у заголовку Authorization. Відповідь надходить без жодної додаткової перевірки, і доступ не обмежується тестовим середовищем.
-
Розгортання власної збірки
Бобу не треба чіпати репозиторій, відкривати пул-реквест чи чекати на рев'ю. Сервісу розгортання байдуже, звідки образ, — важливо лише, щоб клієнт мав дійсний токен. Він спрямовує продакшн на образ у власному реєстрі.
-
Перевірка знань
-
Надходить сповіщення
Ви відповідаєте за workflow CI у Vellmoor. Цього ранку служба безпеки платформи розбирає наслідки неспокійної ночі: облікові дані, знайдені у відкритому виводі, і продакшн-розгортання, якого ніхто не планував.
-
Перегляньте це на власному конвеєрі
Повідомлення про витік — це одне. Ви відкриваєте запуск, на який вказує сповіщення, щоб побачити, що ваш конвеєр справді опублікував.
Охоплення стандартів безпеки
CWE
- CWE-532 Insertion of Sensitive Information into Log File
- CWE-540 Inclusion of Sensitive Information in Source Code
MITRE ATT&CK
- T1552.001 Unsecured Credentials: Credentials In Files
CIS Controls
- CIS 16 Application Software Security
- CIS 8 Audit Log Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security
- DE.AE Adverse Event Analysis