T1611: Выход за пределы контейнера
Злоумышленники могут выйти за пределы контейнера для получения доступа к узлу, на котором он установлен. Таким образом атакующий может получить доступ к другим контейнерным ресурсам узла или к самому узлу. В теории контейнерные ресурсы должны обеспечивать четкое разделение функциональности приложений и быть изолированными от среды узла.
Существует несколько способов, которыми злоумышленник может выйти за пределы контейнера в среду узла. Например, он может создать контейнер, монтирующий файловую систему узла через параметр bind, что позволяет сохранять в нее полезные нагрузки и выполнять на узле административные утилиты, такие как cron; применить привилегированный контейнер для запуска команд или загрузки вредоносного модуля ядра на узле контейнера; или эксплуатировать системные вызовы, такие как unshare
и keyctl
, для повышения привилегий и кражи секретов.
Кроме того, злоумышленник может использовать скомпрометированный контейнер с установленным сокетом управления, например docker.sock
, чтобы выйти за пределы контейнера через средства администрирования контейнера. Злоумышленник также может покинуть контейнер, эксплуатируя уязвимости для повышения привилегий — например, уязвимости в глобальных символьных ссылках для доступа к корневому каталогу узла.
Доступ к узлу может позволить злоумышленнику достигнуть дальнейших целей, таких как закрепление, перемещение внутри периметра среды, доступ к другим контейнерам на узле или налаживание на нем канала связи с командным сервером.
Способы обнаружения
ID | DS0008 | Источник и компонент данных | Ядро: Загрузка модуля ядра | Описание | Отслеживайте установку модулей ядра, которые могут быть использованы для выхода за пределы контейнеров на узле. |
---|
ID | DS0034 | Источник и компонент данных | Том: Изменение в томе | Описание | Отслеживайте данные на уровне кластера (Kubernetes) и события, связанные с изменением конфигурации томов контейнеров. |
---|
ID | DS0032 | Источник и компонент данных | Контейнер: Создание контейнера | Описание | Отслеживайте развертывание подозрительных или неизвестных образов контейнеров и модулей в рабочей среде, особенно тех контейнеров, которые запускаются с привилегиями root. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Создание процесса | Описание | Отслеживайте поведение процессов (например, порождение нетипичных процессов за пределами контейнера и (или) на узле), которые могут указывать на попытки злоумышленников выйти на узел, расположенный за пределами привилегированного контейнера. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Вызовы API ОС | Описание | Отслеживайте нетипичные вызовы системных функций, например |
---|
Меры противодействия
ID | M1042 | Название | Отключение или удаление компонента или программы | Описание | Удалите из контейнеров ненужные инструменты и программное обеспечение. |
---|
ID | M1038 | Название | Защита от выполнения | Описание | По возможности используйте контейнеры только для чтения, файловые системы только для чтения и минимальные образы, чтобы предотвратить выполнение команд. По возможности используйте средства контроля приложений и ограничения программного обеспечения (например, предоставляемые SELinux), чтобы ограничить доступ к файлам, процессам и системным вызовам в контейнерах. |
---|
ID | M1048 | Название | Изоляция и помещение в песочницу приложений | Описание | По возможности используйте seccomp, seccomp-bpf или аналогичное решение, ограничивающее определенные системные вызовы, такие как mount. В средах Kubernetes следует определить стандарты безопасности контейнеров, ограничивающие доступ контейнеров к пространствам имен процессов хоста, сети хоста и файловой системе хоста. |
---|
ID | M1026 | Название | Управление привилегированными учетными записями | Описание | Проследите, чтобы контейнеры не запускались по умолчанию с правами root, не использовали лишние привилегии или смонтированные компоненты. В средах Kubernetes следует определить стандарты безопасности модулей, которые не позволят модулям запускать контейнеры с привилегиями. |
---|