Ошибка ядра Linux может позволить хакерам избежать контейнеров Kubernetes

Чем полезен SSL-сертификат?

Уязвимость, затрагивающая ядро ​​Linux и отслеживаемая как CVE-2022-0185, может использоваться для выхода из контейнеров в Kubernetes, предоставляя доступ к ресурсам в хост-системе.

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

Взлом контейнеров — это особый вид кибератак, которые могут проложить путь к более глубокому проникновению и боковому перемещению в скомпрометированной сети.

Не очень ограниченный недостаток

CVE-2022-0185 — это уязвимость переполнения буфера кучи в компоненте ядра Linux «Контекст файловой системы», которая может привести к записи за пределами границ, отказу в обслуживании и выполнению произвольного кода.

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

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

Однако для работы процесса эксплойта злоумышленнику необходимо использовать непривилегированное пространство имен или использовать «отменить общий доступ» для входа в пространство имен с разрешением CAP_SYS_ADMIN.

Эта возможность не является настройкой по умолчанию в Docker, и использование флага «– привилегированного» при запуске контейнера не является обычной практикой.

Кроме того, команда «unshare» по умолчанию блокируется фильтром Docker «seccomp», поэтому запуск команды изначально запрещен.

Аналитики Aquasec отмечают, что при использовании Docker или других контейнерных платформ в кластере Kubernetes фильтр seccomp по умолчанию отключен, поэтому команда unshare не блокируется.

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

Обнаружение этой уязвимости приписывается членам команды CTF Crusaders of Rust (CoR) Уильяму Лю и Джейми Хилл-Дэниелу. Всего в команде 21 участник из Европы и США.

В беседе с BleepingComputer члены CoR заявили, что планируют опубликовать код эксплойта для CVE-2022-0185 чуть более чем через неделю, чтобы дать больше времени для исправления. Код будет доступен в репозитории CoR на GitHub .

Ошибка переполнения кучи затрагивает все версии ядра Linux, начиная с 5.1-rc1 и заканчивая последними исправлениями (5.4.173, 5.10.93, 5.15.1). Это влияет на Ubuntu 20/21, Debian 11 и некоторые пакеты Red Hat.

Был создан эксплойт-код для этой уязвимости, и один из исследователей, обнаруживших ее, продемонстрировал, что ее можно успешно использовать.

Команда CoR также сообщила, что они также создали рабочий код эксплойта для оптимизированной операционной системы Google Container для контейнеров Docker.

Смягчение

Проблема решается обновлением ядра Linux до версии 5.16.2 или более поздней. Тем не менее, обновление доступно не для всех дистрибутивов Linux, и сборка ядра из исходного кода не подходит многим системным администраторам.

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

В Ubuntu используйте эту команду, чтобы отключить непривилегированные пространства имен:

sysctl -w kernel.unprivileged_userns_clone=0

Пользователи Red Hat, которым не требуется развертывание в контейнерах, могут отключить пространства имен пользователей с помощью следующей команды:

# echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf
# sysctl -p /etc/sysctl.d/userns.conf

Если вам нужны непривилегированные контейнеры, убедитесь, что фильтр seccomp активно блокирует вызов «unshare».

Для отдельных рабочих нагрузок можно добавить seccomp в качестве определения в поле «securityContext». В Kubernetes есть подробное руководство о том, как это сделать, поэтому обязательно ознакомьтесь с ним.

Последнее обновление 05.01.2023