T1611: Выход за пределы контейнера

Злоумышленники могут выйти за пределы контейнера для получения доступа к узлу, на котором он установлен. Таким образом атакующий может получить доступ к другим контейнерным ресурсам узла или к самому узлу. В теории контейнерные ресурсы должны обеспечивать четкое разделение функциональности приложений и быть изолированными от среды узла.

Существует несколько способов, которыми злоумышленник может выйти за пределы контейнера в среду узла. Например, он может создать контейнер, монтирующий файловую систему узла через параметр bind, что позволяет сохранять в нее полезные нагрузки и выполнять на узле административные утилиты, такие как cron; применить привилегированный контейнер для запуска команд или загрузки вредоносного модуля ядра на узле контейнера; или эксплуатировать системные вызовы, такие как unshare и keyctl, для повышения привилегий и кражи секретов.

Кроме того, злоумышленник может использовать скомпрометированный контейнер с установленным сокетом управления, например docker.sock, чтобы выйти за пределы контейнера через средства администрирования контейнера. Злоумышленник также может покинуть контейнер, эксплуатируя уязвимости для повышения привилегий — например, уязвимости в глобальных символьных ссылках для доступа к корневому каталогу узла.

Доступ к узлу может позволить злоумышленнику достигнуть дальнейших целей, таких как закрепление, перемещение внутри периметра среды, доступ к другим контейнерам на узле или налаживание на нем канала связи с командным сервером.

Способы обнаружения

IDDS0008Источник и компонент данныхЯдро: Загрузка модуля ядраОписание

Отслеживайте установку модулей ядра, которые могут быть использованы для выхода за пределы контейнеров на узле.

IDDS0034Источник и компонент данныхТом: Изменение в томеОписание

Отслеживайте данные на уровне кластера (Kubernetes) и события, связанные с изменением конфигурации томов контейнеров.

IDDS0032Источник и компонент данныхКонтейнер: Создание контейнераОписание

Отслеживайте развертывание подозрительных или неизвестных образов контейнеров и модулей в рабочей среде, особенно тех контейнеров, которые запускаются с привилегиями root.

IDDS0009Источник и компонент данныхПроцесс: Создание процессаОписание

Отслеживайте поведение процессов (например, порождение нетипичных процессов за пределами контейнера и (или) на узле), которые могут указывать на попытки злоумышленников выйти на узел, расположенный за пределами привилегированного контейнера.

IDDS0009Источник и компонент данныхПроцесс: Вызовы API ОСОписание

Отслеживайте нетипичные вызовы системных функций, например mount, которые могут указывать на попытку злоумышленников выйти за пределы привилегированного контейнера на узел.

Меры противодействия

IDM1042НазваниеОтключение или удаление компонента или программыОписание

Удалите из контейнеров ненужные инструменты и программное обеспечение.

IDM1038НазваниеЗащита от выполненияОписание

По возможности используйте контейнеры только для чтения, файловые системы только для чтения и минимальные образы, чтобы предотвратить выполнение команд. По возможности используйте средства контроля приложений и ограничения программного обеспечения (например, предоставляемые SELinux), чтобы ограничить доступ к файлам, процессам и системным вызовам в контейнерах.

IDM1048НазваниеИзоляция и помещение в песочницу приложенийОписание

По возможности используйте seccomp, seccomp-bpf или аналогичное решение, ограничивающее определенные системные вызовы, такие как mount. В средах Kubernetes следует определить стандарты безопасности контейнеров, ограничивающие доступ контейнеров к пространствам имен процессов хоста, сети хоста и файловой системе хоста.

IDM1026НазваниеУправление привилегированными учетными записямиОписание

Проследите, чтобы контейнеры не запускались по умолчанию с правами root, не использовали лишние привилегии или смонтированные компоненты. В средах Kubernetes следует определить стандарты безопасности модулей, которые не позволят модулям запускать контейнеры с привилегиями.