Секрети в шарах образів
Видалення секрету під час наступного RUN не видаляє його.
Що таке Секрети в шарах образів?
Шари зображень можна лише додавати. Облікові дані, передані в один RUN, записуються на цьому рівні назавжди, а пізніший RUN, який видаляє файл, лише додає шар зверху. Файл зник; секрет все ще в історії збірки. Ви отримаєте загальнодоступний образ, прочитаєте необрізану команду збірки та використаєте маркер публікації. Порядок виправлення має значення: спершу відкликайте маркер, видайте заміну з обмеженою областю і лише потім замініть аргумент збірки секретним монтуванням BuildKit, щоб нічого не було записано в надісланий рівень.
Що ви дізнаєтесь у Секрети в шарах образів
- Поясніть, чому шари зображень призначені лише для додавання, тому пізніший ЗАПУСК, який видаляє файл облікових даних, залишає секрет в історії збірок
- Відновіть вбудований маркер, надрукувавши необрізані команди шару, оскільки перегляд історії скорочує стовпець CREATED BY
- Спершу відкликайте витік облікових даних і видайте повну, обмежену за часом заміну, перш ніж щось змінювати в зображенні
- Застосуйте секретне монтування BuildKit, щоб маркер був доступним під час збірки, але ніколи не записувався на шарі, який надсилається
- Перевірте відновлене зображення, прочитавши його повну історію шарів і підтвердивши, що облікові дані більше ніде не з’являються
Секрети в шарах образів — Кроки навчання
-
Оцінка цілі
Сьогодні Боб атакує Cindralt, платіжну компанію, чий сервіс розрахунків постачається у вигляді образу контейнера. Він починає з того, з чого може почати будь-хто: власного реєстру контейнерів компанії. Опублікований образ — зручна ціль для атаки. Це точнісінько той артефакт, що працює у продакшені, а завантажити його нічого не коштує.
-
Завантажити може будь-хто
Репозиторій опубліковано для анонімного завантаження. Для багатьох компаній це свідомий вибір, а не вразливість сама по собі, але це означає, що артефакт доступний Бобу на тих самих умовах, що й власним серверам збірки Cindralt.
-
Завантаження образу
Боб завантажує тег, який реєстр позначає як latest. На його машину потрапляє побайтова копія того, що Cindralt запускає в продакшені, включно з кожним шаром, створеним у процесі збірки.
-
Читання історії збірки
Кожен образ несе в собі команди, якими його було зібрано. Бобу не потрібно запускати контейнер чи щось розпаковувати: історія шарів — це метадані, і вона надходить разом із завантаженням. На перший погляд ця збірка виглядає акуратною. Хтось навіть прибрав за собою після встановлення залежностей.
-
Запит повної команди
Таблиця за замовчуванням побудована так, щоб влізти в термінал, а не щоб показувати правду. Боб запитує команди збірки окремо, без жодного обрізання. Команда встановлення записала облікові дані у файл конфігурації, і вони досі лежать у шарі, який ця команда створила.
-
Чому видалення не допомогло
Момент на розбір механізму, перш ніж Боб використає знайдене.
-
Перевірка, що відкриває токен
Цінність облікових даних визначається тим, до чого вони дають доступ. Боб запитує в індексу пакетів Cindralt, кому належить цей токен і що йому дозволено робити. Відповідь гірша, ніж один сервіс. Токен дозволяє публікувати будь-який пакет, проти якого збирається Cindralt, і він ніколи не закінчується.
-
Чого вартий цей токен
Бобу більше не потрібно торкатися серверів Cindralt. Маючи права публікації на кожен пакет, проти якого збирається компанія, наступну версію будь-якої внутрішньої бібліотеки може створити він, і її завантажить кожна збірка, яка запуститься після цього.
-
Індекс фіксує публікацію
Індекс пакетів Cindralt логує кожен автентифікований виклик. Уночі він зафіксував використання токена ci-publisher з адреси, яка нікому в компанії не належить.
-
Підтвердження за образом
Аліса самостійно перевіряє це твердження на опублікованому артефакті, використовуючи саме те, що мав би сторонній зловмисник: публічний тег і стандартний клієнт Docker.
Охоплення стандартів безпеки
CWE
- CWE-540 Inclusion of Sensitive Information in Source Code
- CWE-522 Insufficiently Protected Credentials
MITRE ATT&CK
- T1552.001 Unsecured Credentials: Credentials In Files
CIS Controls
- CIS 3 Data Protection
- CIS 16 Application Software Security
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.DS Data Security
- PR.PS Platform Security