The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в cgroups v1, позволяющая выйти из изолированного контейнера

06.03.2022 11:56

Раскрыты детали уязвимости (CVE-2022-0492) в реализации механизма ограничения ресурсов cgroups v1 в ядре Linux, которая может использоваться для выхода из изолированных контейнеров. Проблема проявляется начиная с ядра Linux 2.6.24 и устранена в выпусках ядра 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 и 4.9.301. Проследить за публикаций обновления пакетов в дистрибутивах можно на данных страницах: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Уязвимость вызвана логической ошибкой в обработчике файлов release_agent, из-за которой не выполнялись должные проверки при запуске обработчика с полным набором полномочий. Файл release_agent используется для определения программы, выполняемой ядром при завершении процесса в cgroup. Данная программа запускается с правами root и со всеми "capabilities" в корневом пространстве имён. Подразумевалось, что доступ к настройке release_agent имеет только администратор, но на деле проверки ограничивались предоставлением доступа пользователю root, что не исключало изменение настройки из контейнера или пользователем root без прав администратора (CAP_SYS_ADMIN).

Раньше подобная особенность не была бы воспринята как уязвимость, но ситуация изменилась с появлением пространств имён идентификаторов пользователей (user namespaces), которые позволяют создавать в контейнерах отдельных пользователей root, не пересекающихся с пользователем root основного окружения. Соответственно, для атаки достаточно в контейнере, имеющем своего пользователя root в отдельном пространстве идентификаторов пользователей, подключить свой обработчик release_agent, который после завершения процесса будет выполнен с полными привилегиями основного окружения.

По умолчанию cgroupfs монтируется в контейнере в режиме только для чтения, но нет проблем перемонтировать данную псевдофс в режиме записи при наличии прав CAP_SYS_ADMIN или через создание при помощи системного вызова unshare вложенного контейнера с отдельным user namespace, в котором для созданного контейнера доступны права CAP_SYS_ADMIN.

Атака может быть совершена при наличии root-полномочий в изолированном контейнере или при запуске контейнера без флага no_new_privs, запрещающего получение дополнительных привилегий. В системе должна быть включена поддержка user namespaces (по умолчанию включена в Ubuntu и Fedora, но не активирована в Debian и RHEL) и присутствовать доступ к корневому cgroup v1 (например Docker запускает контейнеры в корневом RDMA cgroup). Атака также возможна при наличии привилегий CAP_SYS_ADMIN, в этом случае поддержка user namespaces и доступ к корневой иерархии cgroup v1 не требуется.

Кроме выхода из изолированного контейнера уязвимость также позволяет процессам, запущенным пользователем root без "capabilities" или любым пользователем с правами CAP_DAC_OVERRIDE (для атаки требуется доступ к файлу /sys/fs/cgroup/*/release_agent, который принадлежит root), получить доступ ко всем системным "capabilities".

Отмечается, что уязвимость не может быть эксплуатирована при применении механизмов защиты Seccomp, AppArmor или SELinux для дополнительной изоляции контейнеров, так как Seccomp блокирует обращение к системному вызову unshare(), а AppArmor и SELinux не позволяют примонтировать cgroupfs в режиме записи.

 
  1. Главная ссылка к новости (https://unit42.paloaltonetwork...)
  2. OpenNews: Уязвимость в VFS ядра Linux, позволяющая повысить свои привилегии
  3. OpenNews: Уязвимости в подсистеме eBPF, позволяющие выполнить код на уровне ядра Linux
  4. OpenNews: Уязвимость в ядре Linux, позволяющая обойти ограничения user namespace
  5. OpenNews: Анализ безопасности показал переоценку защиты с использованием "capabilities"
  6. OpenNews: Уязвимость в подсистеме netfilter, позволяющая выполнить код на уровне ядра Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56812-cgroups
Ключевые слова: cgroups, kernel, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:21, 06/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +6 +/
    Чем они думали, когда вносили столь масштабные усложнения в обработку пользователей? Изначально же их предупреждали, что с user namespaces будут проблемы и теперь любая ошибка, проявляющаяся только при наличии прав root, стала общей дырой системы.
     
     
  • 2.40, Аноним (40), 09:07, 07/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    О виртуализация на уровне операционной системы.
     

  • 1.2, Аноним (2), 13:30, 06/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    > начиная с ядра Linux 2.6.24

    Cgroups и namespaces были ещё тогда?

     
     
  • 2.4, Аноним (4), 13:37, 06/03/2022 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +8 +/
    Именно в этой версии cgroups и появились.
     
     
  • 3.13, Аноним (13), 16:06, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Но ведь мы же не скажем что это было сделано специально. Это всё случайность, кто бы мог подумать.
     
     
  • 4.27, Адмирал Майкл Роджерс (?), 19:20, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    > Это всё случайность

    Именно так, сэр.

     
  • 4.29, псевдонимус (?), 20:09, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Халатность.
     
  • 4.55, Аноним (55), 01:18, 14/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    совершенно случайно дверь построили...
     
  • 2.6, Аноним (6), 14:19, 06/03/2022 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Кроме user namespaces.
     

  • 1.3, Аноним (3), 13:32, 06/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –5 +/
    До конца не понял, какие контейнеры кроме docker подвержены проблеме.
     
     
  • 2.5, Аноним (5), 13:49, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +13 +/
    Любые под линуксом, которые используют cgroups. Баг именно в этой фиче, а не в докере.
     

  • 1.7, Аноним (7), 14:41, 06/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +2 +/
    А в чем ПРОБЛЕМА то?
    Докер не песочница в полном её смысле, это средство доставки ПО на сервер или юзеру ак что-бы работало везде.
    Только повод сделать всё тормознее и продать больше новых процов.
     
     
  • 2.8, john_erohin (?), 14:49, 06/03/2022 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > А в чем ПРОБЛЕМА то?

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

     
     
  • 3.26, лютый жабби__ (?), 18:21, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    >злонамеренный доскер-контейнер из публичного репозитория забыл как его там.

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

    и изоляцию делать на уровне железа + фаервол (а не виртуалок и тем более мусорных контейнеров)

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

     
  • 2.18, Аноним (18), 17:05, 06/03/2022 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    Проблемы есть только у физики и энергетики.
     
     
  • 3.28, Ананоним (?), 19:48, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Проблемы с этими есть только у уверовавших в непреодолимость этих якобы проблем.
     
  • 2.19, Аноним (19), 17:09, 06/03/2022 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +2 +/
    Проблема в cgroups. А оно было создано как раз для изоляции.
     
     
  • 3.20, Аноним (20), 17:21, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    версии 1 Сгроуп ггг,с ядра 4.5 версия Сгоуп уже 2,если верить Хабре.MCBC только использует такое,да и то не факт,что там не патчено по самые помидоры.
     
     
  • 4.42, lockywolf (ok), 10:56, 07/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Libcgroup до сих пор поддерживает cgroups v2 еле-еле.

     
  • 2.21, Аноним (21), 17:26, 06/03/2022 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    > А в чем ПРОБЛЕМА то?
    > Докер не песочница в полном её смысле, это средство доставки ПО на

    Это они потом, когда стало ясно, что оно скорее "дыркер", переобулись.
    https://web.archive.org/web/20140718075034/https://docs.docker.com/introductio
    >>> At its core, Docker provides a way to run almost any application securely isolated in a container.

    https://web.archive.org/web/20140718074754/https://www.docker.com/whatisdocker
    >>> How is this different from Virtual Machines?
    >>> ... it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.

     
     
  • 3.22, Аноним (20), 17:35, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    >>> At its core, Docker provides a way to run almost any application securely isolated in a container.

    DВы разве не знаете, что надежность это только надежда на нее. В доке про Раст такое примерно даже написано.

     

  • 1.24, Аноним (24), 17:59, 06/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    > Отмечается, что уязвимость не может быть эксплуатирована при применении механизмов защиты Seccomp, AppArmor или SELinux

    То есть проблеме по сути подвержены только васянские сервачки, где настройка начинается с «setenforce 0», потому что васян не осилил ни доку на 3½ страницы, ни комикс-раскраску для деб^Wэникеев. Ок.

     
     
  • 2.30, Аноним (30), 20:18, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ну, дока там на поболее, чем 3.5 страницы, скажем честно. Но насчет комикса - 100%
     
     
  • 3.31, Аноним (31), 20:30, 06/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ой, а можно мне ссыль на комикс-раскрасску? Чисто из любопытства.
     
     
  • 4.48, fafafafap (?), 16:25, 07/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Друг попросил?
     

  • 1.41, bOOster (ok), 10:23, 07/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    Вот что значит - "горе от ума"
     
     
  • 2.54, Аноним (54), 02:55, 09/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    rOOster
     

  • 1.43, Павел Отредиез (ok), 12:07, 07/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Привет! А я живу без CAP_SYS_ADMIN CAP_DAC_OVERRIDE и ещё некоторых. http://www.tinyware.ru/documentation
     
  • 1.44, lockywolf (ok), 12:29, 07/03/2022 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +/
    Не выходи из контейнера, не совершай ошибку.
     
  • 1.45, Аноним (45), 14:45, 07/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +1 +/
    с 11 марта с контейнера невыйдет никто
     
     
  • 2.47, Аноним (40), 15:11, 07/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Почему?
     

  • 1.46, Аноним (46), 14:50, 07/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    А если пустить докер под докером из виртуалки то как оно будет?
     
     
  • 2.56, Аноним (55), 01:55, 14/03/2022 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А ещё лучше пустить докер на телефонке, которая лежит внутри системника... Вот уж точно никто из телефонки не выберется!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру