Відкритий доступ до демона Docker

Відкритий доступ до демона Docker

Демон Docker, доступний у мережі, — це віддалений root.

Що таке Відкритий доступ до демона Docker?

Docker API еквівалентний root і не має власної автентифікації. Демон, прив'язаний до звичайного TCP-порту, дає будь-кому, хто може до нього дістатися, змогу запускати контейнери, монтувати файлову систему хоста й читати машину. Жодна вразливість тут не задіяна. Ви надішлете на порт 2375 ззовні пробний запит без автентифікації, виведете список контейнерів продакшну й змонтуєте корінь хоста, щоб прочитати його файл середовища. Потім приберете прив'язку tcp://0.0.0.0:2375, увімкнете вимогу клієнтських сертифікатів TLS і побачите, що той самий пробний запит відхилено. У вправі також розглянуто монтування /var/run/docker.sock у контейнер.

Що ви дізнаєтесь у Відкритий доступ до демона Docker

Відкритий доступ до демона Docker — Кроки навчання

  1. Читання публічної сторінки статусу

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

  2. Рядок, що видає забагато

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

  3. Постукайте до демона

    Демону Docker можна вказати слухати мережевий порт, а не лише локальний сокет. Коли він так налаштований, а TLS вимкнено, він відповідає будь-кому. Боб спрямовує власний Docker CLI на порт 2375 цього вузла й ставить найневинніше з усіх запитань: яка версія працює. Якщо демон відповість, Боб уже фактично переміг.

  4. Подивіться, що працює в продакшні

    Docker API — не вузький інструмент. Він показує список контейнерів, запускає й зупиняє їх, збирає образи, і все це робить від імені root. Перший хід Боба — просто подивитися, що насправді працює на цьому хості.

  5. Змонтуйте хост, заберіть секрети

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

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

  7. Журнал демона фіксує стороннього

    Компанія Palliston надсилає журнали свого демона Docker до центрального збирача. Щоб помітити, що з'явилося, не потрібен жоден продукт для виявлення вторгнень: це виклики API до демона на ops-node-01 з IP-адреси, яка не належить нікому в компанії Palliston.

  8. Підтвердьте, що двері відчинені

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

  9. Відкрийте конфігурацію демона

    Поведінка демона задається в одному файлі — /etc/docker/daemon.json. Те, що наказало йому слухати мережу без TLS, — це рядок саме тут.

  10. Знайдіть, що відкрило порт

    Два налаштування поруч — це весь відкритий доступ. Одне виставляє API в мережу, інше велить не перевіряти, хто викликає.

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

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-284 Improper Access Control

MITRE ATT&CK

  • T1610 Deploy Container
  • T1133 External Remote Services

CIS Controls

  • CIS 4 Secure Configuration of Enterprise Assets and Software
  • CIS 6 Access Control 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
  • PR.AA Identity Management, Authentication, and Access Control