Шкідливі базові образи

Шкідливі базові образи

Базове зображення на один символ менше, а ваша збірка надсилає бекдор.

Що таке Шкідливі базові образи?

Кожен рядок FROM є довірчим рішенням. Будь-хто може опублікувати в загальнодоступному реєстрі під іменем, яке на один символ відрізняється від вашого, і без перевірки підпису рядок FROM перетворюється на те, що обслуговує реєстр. Ви запустите подібне зображення, спостерігатимете за майнером і реверсивним снарядом під час запуску, а потім відстежите попередження про видобуток назад через історію шару до рядка FROM, який його назвав. Ви прикріпите основу до підписаного офіційного зображення за допомогою дайджесту, щоб ім’я не могло бути пов’язане з чимось іншим.

Що ви дізнаєтесь у Шкідливі базові образи

Шкідливі базові образи — Кроки навчання

  1. Назва, що відрізняється на один символ

    Боб нікуди не зламується. Він публікує. У публічному хабі образів будь-хто може завантажити (push) репозиторій, і він завантажив один під простором імен, що читається майже так само, як офіційний базовий образ Node.js. Потім він чекає, доки якась збірка десь помилково не завантажить його.

  2. Замасковано під оригінал

    Репозиторій Боба з'являється в результатах пошуку одразу під справжнім, з таким самим слоганом і пристойною кількістю завантажень. Єдина різниця — це та частина, яку поспішний інженер пропускає поглядом.

  3. Що він насправді постачав

    Схожий образ Боба — це не перепакований образ Node з новою етикеткою. Він зібрав його на основі справжнього образу й додав один рядок. Ось Dockerfile базового образу, який він опублікував.

  4. Рядок, який виконує всю роботу

    Усе, що вище цього рядка, — звичайний базовий образ Node.js. Один RUN, замаскований під невинний коментар, перетворює його на зброю.

  5. Подивіться, як спрацьовує корисне навантаження

    Базовий образ виглядає і поводиться як звичайний образ Node.js, тому збірка на його основі проходить успішно, а застосунок на ньому запускається. Але доданий Бобом шар завантажує й запускає корисне навантаження в момент старту контейнера. Він одноразово запускає власний базовий образ, щоб переконатися, що навантаження все ще спрацьовує.

  6. Скористайтеся входом

    Збірка Marlspire вийшла на основі його базового образу, і закладений імплант зв'язався з ним. Бобу більше не потрібно зламуватися: у нього вже є оболонка всередині їхнього продакшн-контейнера. Він доручає їй передати все, до чого вона має доступ.

  7. Що зробило це можливим

    Один момент на механізм, перш ніж почнеться реагування.

  8. Хост повідомляє про майнер

    Marlspire використовує моніторинг кінцевих точок на своїх хостах контейнерів. Йому байдуже, що контейнер має робити; він повідомляє про те, що побачив.

  9. Перегляньте шари образу

    Образ фіксує, як його було зібрано, — по одній команді на шар. Якщо майнер встановлює сам себе, якийсь шар мав виконати команду, що його завантажила. Аліса переглядає історію збірки випущеного образу.

  10. Звідки взявся базовий образ

    Отрута міститься в базовому образі, тож питання в тому, у якому саме. Аліса перевіряє двох кандидатів у публічному хабі, порівнюючи їх поруч.

Охоплення стандартів безпеки

CWE

  • CWE-494 Download of Code Without Integrity Check
  • CWE-345 Insufficient Verification of Data Authenticity

MITRE ATT&CK

  • T1195.002 Supply Chain Compromise: Compromise Software Supply Chain

CIS Controls

  • CIS 2 Inventory and Control of Software Assets
  • 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
  • ID.AM Asset Management
  • PR.PS Platform Security