Вразливі базові образи

Вразливі базові образи

Ваші залежності перевіряють. Операційну систему під ними — ні.

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

Залежності застосунку перевіряють після кожної зміни. Шар операційної системи під ними часто лишається без уваги. Рухомий тег на кшталт node:18 означає, що шар під вашим кодом змінюється щоразу, коли реєстр віддає щось нове, а вразливості знаходять із часом, тож образ, який був чистим під час випуску, сьогодні може бути критично вразливим. Ви просканюєте застарілий образ сервісу, знайдете CVE-2023-4863 у libwebp і перетворите її на віддалене виконання коду. Потім зафіксуєте базовий образ за точним дайджестом, перезберете образ і просканюєте його знову. Фіксація має свою ціну: потрібна свідома періодичність перезбирання.

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

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

  1. Образ scheduler у реєстрі

    Боб має доступ на читання до реєстру контейнерів Bremhollow через токен облікового запису робота, який витік. Його цікавить не код, а те, наскільки свіжі образи: сервіс, який давно не перезбирали, — це сервіс, чий базовий образ непомітно постарів. Сервіс scheduler обробляє завантажені зображення, тож те, на чому його зібрано, дуже цікавить Боба. Відкрийте сторінку образу й подивіться, що каже реєстр.

  2. Образ, що завмер

    Реєстру не обов'язково помилятися, щоб допомогти Бобу. Один рядок показує йому, що розгорнутий образ старий і зібраний на рухомому базовому образі.

  3. Просканіть базовий образ у пошуках лазівки

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

  4. Перетворіть CVE на оболонку

    Результат сканування стає експлойтом лише тоді, коли хтось його використає. До CVE-2023-4863 існує публічний proof of concept (PoC): спеціально створений WebP, який переповнює libwebp у момент декодування. Сервіс scheduler декодує кожне завантажене зображення, тому Боб монтує файл PoC в одноразовий запуск вразливого образу й декодує його, доводячи, що виявлена вразливість — це робочий шлях до віддаленого виконання коду, ще до того, як він торкнеться продакшну.

  5. Де криється вразливість

  6. Сканер позначає парк образів

    Компанія Bremhollow додала сканування образів у конвеєр, і перше повне сканування всього, що вже працює в продакшні, виявило те, що не може чекати.

  7. Подивіться самі

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

  8. Відкрийте Dockerfile

    Базовий образ обирається в одному рядку Dockerfile. Усе, що знайшов сканер, прийшло через цей рядок.

  9. Знайдіть рухомий базовий образ

    Тут немає ні одруківок, ні хибного синтаксису. Проблема — в одному рядку, який містить менше, ніж потрібно.

  10. Зафіксуйте базовий образ за дайджестом

    Тег — це мітка, яку можна пересунути; дайджест образу — відбиток його вмісту, і він ніколи не вкаже ні на що інше. Node 18 досяг кінця життєвого циклу в квітні 2025 року, тож виправленого базового образу node:18 уже не буде. Аліса переходить на збірку Node 22 LTS у варіанті slim і фіксує її за дайджестом образу, тож кожна наступна збірка завантажує ті самі перевірені байти, а зміна цієї фіксації стає свідомою зміною, яку можна перевірити в рев'ю.

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

CWE

  • CWE-1104 Use of Unmaintained Third Party Components
  • CWE-1395 Dependency on Vulnerable Third-Party Component

MITRE ATT&CK

  • T1190 Exploit Public-Facing Application

CIS Controls

  • CIS 7 Continuous Vulnerability Management
  • CIS 2 Inventory and Control of Software Assets

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.RA Risk Assessment
  • ID.AM Asset Management