Мінімальні образи контейнерів
Кожен інструмент, який ви надсилаєте, є інструментом, який успадковує зловмисник.
Що таке Мінімальні образи контейнерів?
Виробничий образ із менеджером пакунків, компілятором, оболонкою та мережевими утилітами перетворює обмежену помилку програми на робочий інструментарій. Нападник нічого не приносить; зображення вже відправило його. Ви будете використовувати одну команду з помилки служби перевірки, щоб знайти curl і прочитати облікові дані ролі екземпляра з кінцевої точки метаданих за адресою 169.254.169.254. Потім ви розділите збірку на два етапи, скопіюєте лише скомпільований артефакт у кінцевий образ без дистрибутива та спостерігатимете, як оболонка не відкривається в повторно розгорнутому контейнері, оскільки її немає.
Що ви дізнаєтесь у Мінімальні образи контейнерів
- Визнайте, що оболонка, менеджер пакунків, компілятор і мережеві інструменти, які постачаються в образі середовища виконання, стають набором інструментів зловмисника
- Простежте, як одна команда з недоліку програми використовує надісланий curl для читання облікових даних ролі екземпляра з 169.254.169.254
- Налаштуйте багатоетапну збірку, яка зберігає інструменти збірки на етапі збірки та копіює лише скомпільований артефакт вперед
- Застосуйте остаточний образ без дистрибутива та переконайтеся, що оболонку неможливо відкрити в повторно розгорнутому контейнері
- Поясніть, як видалення оболонки та менеджера пакетів порушує найпростіший шлях від обмеженого виконання коду до контролю
Мінімальні образи контейнерів — Кроки навчання
-
Точка опори в checkout
Bob не починає з оболонки. Сервіс checkout формує PDF-етикетки доставки й для цього викликає зовнішню оболонку, а одне поле в цьому запиті не санітизоване. Він впроваджує зонд, щоб підтвердити, що може виконати команду, і дізнатися, хто він і де перебуває.
-
Усе, що постачає образ
У Bob є виконання по одній команді за раз від імені застосунку, але оболонки поки що немає. Зазвичай саме тут зловмисник застрягає, якщо тільки контейнер не дає йому набір інструментів. Перш ніж робити щось помітне, він перевіряє, що вже встановлено.
-
Отримати хмарні облікові дані через curl
Контейнер працює в хмарі, і кожен хмарний інстанс надає сервіс метаданих за фіксованою внутрішньою адресою, який видає тимчасові облікові дані ролі машини. Щоб дістатися до нього, потрібен HTTP-клієнт. Образ його вже постачає.
-
Як одна команда стала витоком даних
Доступ Bob до застосунку був жорстко обмежений.
-
Оболонка в runtime-контейнері
Skelwyn використовує виявлення на кінцевих точках на своїх хостах контейнерів. Воно не знає, для чого призначений кожен контейнер; воно повідомляє про поведінку, яка не відповідає runtime.
-
Підтвердити, що постачалося
Alice відтворює те, що знайшов зловмисник: вона запитує в запущеного контейнера, які з цих інструментів він насправді містить.
-
Runtime на 412 МБ
Набір інструментів не безкоштовний. Це вага, і це поверхня атаки. Alice перевіряє розмір образу, який фактично виконує сервіс.
-
Звідки береться набір інструментів
Образ побудовано з одного Dockerfile. Alice відкриває його, щоб побачити, чому runtime-контейнер зрештою містить компілятор.
-
Один етап, постачається все
Образ будується й запускається в одному етапі, тож усе, що потрібно для збірки, несе із собою й runtime.
-
Розділити збірку та runtime
Виправлення — це багатоетапна збірка: зберегти повний образ та його ланцюг інструментів як етап збірки, що компілює застосунок, а потім скопіювати лише готовий застосунок і його залежності в distroless runtime-образ, у якого немає ні оболонки, ні пакетного менеджера, ні компілятора.
Охоплення стандартів безпеки
CWE
- CWE-1188 Initialization of a Resource with an Insecure Default
CIS Controls
- CIS 2 Inventory and Control of Software Assets
- CIS 4 Secure Configuration of Enterprise Assets and Software
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
- ID.AM Asset Management
- PR.PS Platform Security