Привілейовані контейнери
Корінь у контейнері є коренем у ядрі хоста.
Що таке Привілейовані контейнери?
За замовчуванням контейнер не є кордоном безпеки. Процес, що виконується як root всередині одного, є root на ядрі хоста, і привілейований прапор плюс монтування прив’язки до хосту видаляють те небагато, що залишилося між ними. Ви виконаєте вихід: прочитаєте наданий набір можливостей, перерахуєте файлову систему хоста через монтування, вкрадете її кореневий ключ SSH і додасте свій власний для збереження. Виправлення стосується двох файлів. Ви додасте некорінного USER у Dockerfile, а потім скинете позначку привілейованого доступу та всі можливості в Compose.
Що ви дізнаєтесь у Привілейовані контейнери
- Поясніть, чому ізоляція контейнера — це набір функцій ядра, а не межа, тому root всередині є коренем ядра хоста
- Визначте, що надає --privileged, прочитавши власний набір можливостей контейнера з файлу стану процесу
- Відстеження виходу хоста через монтування прив’язки, від переліку файлової системи хоста до викрадення її кореневого ключа SSH і встановлення власного
- Додайте некореневу директиву USER до Dockerfile, щоб запущений процес мав набагато менше переваг від розриву межі
- Скиньте прапорець привілейованого доступу та монтування хоста в Compose, застосуйте cap_drop ALL і rootfs лише для читання, а потім повторіть спробу виходу під час проміжної обробки
Привілейовані контейнери — Кроки навчання
-
Оболонка в контейнері
Боб атакує Vosswark, логістичну платформу, чий медіасервіс змінює розмір і перекодовує завантажені клієнтами файли. Незалатана бібліотека обробки зображень у цьому сервісі дала йому віддалене виконання коду, і тепер у нього є оболонка, що працює всередині нього. Як він потрапив усередину — не найцікавіша частина. Цікаво те, що йому дозволяє зробити далі контейнер.
-
Хто я і що я можу
Два питання визначають, чи стане цей плацдарм глухим кутом, чи дверима: від якого користувача працює процес і що ядро дозволить робити цьому користувачу. Один файл відповідає на обидва.
-
Що насправді дав режим privileged
Привілейований режим означає, що звичайні обмеження не застосовуються. Боб перевіряє найцінніше, що може з цього випливати: чи було щось від хоста передано контейнеру напряму.
-
Забрати ключ хоста
Контейнер був лише засобом досягнення мети. Те, що потрібно Бобу, знаходиться на машині під ним, в одному каталозі, який перетворює один скомпрометований хост на плацдарм у всьому парку машин.
-
Що зробило втечу можливою
Момент на розбір механізму, перш ніж підбити підсумки завданої шкоди.
-
Залишити спосіб повернутися
Прочитати ключ — це крадіжка. Записати на хост — це закріплення (persistence). Оскільки том підключено не лише для читання, Боб може дописати свій власний публічний ключ до authorized_keys хоста, і відтоді вкрадений ключ йому взагалі не потрібен. Додавання нічого не виводить, точно так само, як і в справжній оболонці. Ця тиша і є суттю: ніщо тут не виглядає як атака.
-
Порахуйте, чого досяг один контейнер
Тепер Боб має власний ключ хоста і підкинув поруч свій. Медіаобробник був сервісом низької цінності, що обробляв завантаження клієнтів. Але, з огляду на конфігурацію, він також був маршрутом до кожної машини, яка довіряє цьому ключу, і дверима, які Боб може відчинити знову в будь-який момент.
-
Хост фіксує читання файлу
Vosswark використовує моніторинг цілісності файлів на своїх хостах. Йому байдуже, який саме контейнер щось зробив; він повідомляє, що власний ключовий матеріал хоста було прочитано.
-
Погляньте, як його було запущено
Dockerfile описує, що всередині образу. Він нічого не каже про прапорці, з якими було запущено контейнер, а саме в них і криється цей інцидент. Відповісти на це може лише хост.
-
Відкриття Dockerfile
Виправити потрібно дві частини, і вони живуть у різних файлах. Образ визначає, від чийого імені працює процес; розгортання визначає, до чого цьому процесу дозволено торкатися. Почніть з образу.
Охоплення стандартів безпеки
CWE
- CWE-250 Execution with Unnecessary Privileges
- CWE-269 Improper Privilege Management
MITRE ATT&CK
- T1611 Escape to Host
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