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-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру