The OpenNET Project / Index page

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

Уязвимость в runc, позволяющая выбраться из контейнеров Docker и Kubernetes

03.02.2024 11:52

В инструментарии для запуска изолированных контейнеров runc, применяемом в Docker и Kubernetes, найдена уязвимость CVE-2024-21626, позволяющая получить доступ к файловой системе хост-окружения из изолированного контейнера. В ходе атаки злоумышленник может перезаписать некоторые исполняемые файлы в хост-окружения и таким образом добиться выполнения своего кода вне контейнера. Уязвимость устранена в выпуске runc 1.1.12. В runtime LXC, crun и youki, альтернативных runc, проблема не проявляется.

В случае использования инструментариев Docker или Kubernetes атака может быть совершена через подготовку специально оформленного образа контейнера, после установки и запуска которого из контейнера можно обратиться к внешней ФС. При использовании Docker имеется возможность эксплуатации через специально оформленный Dockerfile. Уязвимость также может быть эксплуатирована в случае запуска в контейнере процессов командой "runc exec" через привязку рабочего каталога к пространству имён хостового окружения.

Уязвимость вызвана утечкой внутренних файловых дескрипторов. Перед запуском кода внутри контейнера в runc выполняется закрытие всех файловых дескрипторов при помощи флага O_CLOEXEC. Тем не менее, после последующего выполнения функции setcwd() остаётся открытым файловый дескриптор, указывающий на рабочий каталог и продолжающий оставаться доступным после запуска контейнера. Предложено несколько базовых сценария атаки на хост-окружение, используя оставшийся файловый дескриптор.

Например, атакующий может указать в образе контейнера параметр process.cwd, указывающий на "/proc/self/fd/7/", что приведёт к привязке к процессу pid1 в контейнере рабочего каталога, находящегося в пространстве монтирования хост-окружения. Таким образом, в образе контейнера можно настроить запуск "/proc/self/fd/7/../../../bin/bash" и через выполнение shell-скрипта перезаписать содержимое "/proc/self/exe", которое ссылается на хостовую копию /bin/bash.

Другой вариант атаки позволяет злоумышленнику, ограниченному внутри контейнера, получить доступ к каталогу хостового окружения, если в указанном контейнере запускаются привилегированные процессы при помощи команды "runc exec с опцией "--cwd". Атакующий может подменить путь запускаемого процесса на символическую ссылку, указывающую на "/proc/self/fd/7/" и добиться открытия "/proc/$exec_pid/cwd" для доступа к ФС на стороне хоста. Атакующий также может добиться перезаписи исполняемых файлов на стороне хостового окружения, через организацию запуска исполняемого файла из хостового окружения ("/proc/self/fd/7/../../../bin/bash") с последующей перезаписью файла "/proc/$pid/exe", ссылающегося на запущенный файл.

Кроме того, в компонентах инструментария Docker выявлено ещё пять уязвимостей:

  • CVE-2024-23651 - состояние гонки в пакете BuildKit, применяемом в Docker для преобразования исходного кода в сборочные артефакты. Уязвимость вызвана использованием в параллельно выполняемых стадиях сборки одной общей точки монтирования c кэшем ("--mount=type=cache,source="), что позволяет при обработке в BuildKit специально оформленного Dockerfile получить из сборочного контейнера доступ к файлам в хостовом окружении. Уязвимость устранена в BuildKit 0.12.5.
  • CVE-2024-23652 - ошибка при удалении пустых файлов, созданных для точки монтирования при использовании опции "--mount", позволяет добиться удаления файла вне контейнера при обработке специально оформленного Dockerfile. Уязвимость устранена в BuildKit 0.12.5.
  • CVE-2024-23653 - ошибка в реализации API в BuildKit позволяет добиться выполнения контейнера с повышенными привилегиями, невзирая на состояние настройки security.insecure. Уязвимость устранена в BuildKit 0.12.5.
  • CVE-2024-23650 - вредоносный клиент или фронтэнд BuildKit может вызвать аварийное завершение фонового процесса BuildKit. Уязвимость устранена в BuildKit 0.12.5.
  • CVE-2024-24557 - возможность отравления кэша в Moby, компоненте для построения специализированных систем контейнерной изоляции. При обработке специально оформленного образа контейнера можно добиться помещения в кэш данных, которые могут использоваться на следующих этапах сборки. Уязвимость устранена в Moby 25.0.2 и 24.0.9.


 
  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в runc, позволяющая получить доступ к ФС вне контейнера
  3. OpenNews: Уязвимость в runc и LXC, затрагивающая Docker и другие системы контейнерной изоляции
  4. OpenNews: Docker 1.11 переведён на containerd и runC
  5. OpenNews: Уязвимость в Docker, позволяющая выбраться из контейнера
  6. OpenNews: Уязвимость в cgroups v1, позволяющая выйти из изолированного контейнера
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60545-runc
Ключевые слова: runc, docker, kubernetes, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (202) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Шарп (ok), 13:16, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +6 +/
    >Уязвимость вызвана утечкой внутренних файловых дескрипторов.

    Вот и "гениальная" идея передавать файловые дескрипторы в дочерний процесс выстрелила. Ради возможности проворачивать всякие форк-трюки сделали дыру.

     
  • 1.2, Аноним (2), 13:19, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +1 +/
    Кстати, утилита runc написана на безопасном языке Go
     

     ....большая нить свёрнута, показать (61)

  • 1.8, Аноним (8), 13:36, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    >в образе контейнера можно настроить запуск "/proc/self/fd/7/../../../bin/bash" и через выполнение shell-скрипта перезаписать содержимое "/proc/self/exe", которое ссылается на хостовую копию /bin/bash

    Какая детсадовская ошибка! А кто-то утвержает, что контейнеры - production ready.

     
     
  • 2.14, Аноним (13), 14:14, 03/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +3 +/
    Кто-то утверждал, что OpenBSD можно в проде использовать. И до, и после обнаружения функци remote shell в OpenSMTPD.
     
     
  • 3.52, User (??), 18:21, 03/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Этак что же, и exim с sendmail'ом низзя? Дила...
     
     
  • 4.54, _ (??), 18:27, 03/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    Этадругое! (С)
     
     
  • 5.79, Аноним (13), 00:20, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Нет, то же самое.
    Хотя и меньше Тео-пафоса про "наши лучшие специалисты делают самую безопасную в мире ОС, безжалостно жертвуя функциональностью, чтобы достичь высочайшей защищённости".
     
  • 4.77, Аноним (13), 00:14, 04/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    >  Этак что же, и exim с sendmail'ом низзя? Дила...

    Exim — точно нет. Его писали такие же "специалисты", как и в команде Тео. Единственный плюс им в карму — они не так сильно злоупотребляли маркетинговыми лозунгами про "суперзащищённость".

    sendmail — вроде можно, но лучше не надо. Формат конфигов у него так себе, хотя это и вкусовщина.

     
     
  • 5.101, User (??), 12:57, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >>  Этак что же, и exim с sendmail'ом низзя? Дила...
    > Exim — точно нет. Его писали такие же "специалисты", как и в
    > команде Тео. Единственный плюс им в карму — они не так
    > сильно злоупотребляли маркетинговыми лозунгами про "суперзащищённость".
    > sendmail — вроде можно, но лучше не надо. Формат конфигов у него
    > так себе, хотя это и вкусовщина.

    Оу. Т.е. про шлимыл вы примерно ничего не знаете, да?

     
     
  • 6.108, Аноним (13), 14:43, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Прочитал про его настройку, посмотрел конфиги, выбрал postfix.
     
     
  • 7.144, User (??), 07:02, 05/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Прочитал про его настройку, посмотрел конфиги, выбрал postfix.

    Ну, это вы совершенно правильно поступили - но прикол тут в том, что у sendmail'а история проблем с безопасностью, гм, спе-ци-фич-ная - оно дырявое by design даже по меркам ранних 90х - так что говорить про sendmail "вроде можно" в контексте обсуждения сесурити весьма и весьма забавно.

     
  • 3.206, Аноним (-), 19:33, 05/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Кто-то утверждал, что OpenBSD можно в проде использовать. И до, и после
    > обнаружения функци remote shell в OpenSMTPD.

    Запись в kernel mode хоста из виртуалки-гуеста тоже ничего так, норм было. В каком-нибудь несекурном пингвине я даже и не знаю - было ли такое хоть когда.

    ...при том с фиксом они тоже ухитрились обгадиться по первости, за что получили недвусмсленный стеб насчет security circus от NetBSD'шника который нашел этот позор.

     
  • 2.25, Аноним (8), 14:46, 03/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    А сколько еще подобных "секретиков" и "куличиков" там заложено?!
     
     
  • 3.27, Аноним (13), 14:48, 03/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Покажете хоть один, если их там так много, а вы такой умный?
     
     
  • 4.50, Аноним (50), 18:07, 03/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Это знаменитая аналитика общими словами и под лозунгом "ну что вы не понимаете?"
     
  • 4.81, нах. (?), 00:35, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Покажете хоть один, если их там так много, а вы такой умный?

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

     
     
  • 5.109, Аноним (13), 14:44, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вот только все эти дыры, кроме сегодняшней — из-за кривой реализации namespaces и/или eBPF в ядре.
     
     
  • 6.113, нах. (?), 14:49, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Вот только все эти дыры, кроме сегодняшней — из-за кривой реализации namespaces
    > и/или eBPF в ядре.

    мифы и легенды опеннета, рулонами по 54 метра на вес.

    Открывать список cve дыркера, где нет ни слова про ведро, конечно же не будем.

     
     
  • 7.115, Аноним (13), 14:54, 04/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Открывать список cve дыркера, где нет ни слова про ведро, конечно же не будем.

    И где там убегание из контейнера при его выполнении?

     

  • 1.10, Аноним (10), 14:07, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    'S' for security!
     
     
  • 2.44, Аноним (13), 17:52, 03/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Ну, если запускать этот код с SSD, то должно быть безопасно. Вдвойне.
     

  • 1.29, Аноним (29), 15:00, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –6 +/
    Гораздо секурнее булет эмуляция без паравиртуализации. Контейнеры - костыли, слишком много хаков в их реализации. Эмулятор создает виртуальное окружение, которое с хостом никак не взаимодействует.
     
     
  • 2.36, нах. (?), 16:25, 03/02/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 3.39, Аноним (39), 17:02, 03/02/2024 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 3.43, Аноним (13), 17:51, 03/02/2024 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 2.155, Tron is Whistling (?), 14:13, 05/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Ты как-то смешал PV и контейнеры.
    Контейнеры - это вообще костыль и подпорка в виде в основном разделения таблиц внутри ядра, никакой виртуализации там и близко нет.
     
     
  • 3.199, voiceofreason (?), 16:51, 05/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Суть в итоге та же - запустить несколько экземпляров ОС на одной железке. Виртуализация избавляет от вагона узкоспецифичного секса, но даёт больший оверхед.
     
     
  • 4.211, Tron is Whistling (?), 20:24, 05/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Суть далеко не та же.
    В контейнерах нет никаких "экземпляров ОС", они все ворочаются на одном ведре.
     

  • 1.64, Аноним (64), 20:59, 03/02/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

  • 1.66, Аноним (66), 21:46, 03/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Podman затрагивает?
     
     
  • 2.163, Аноним (172), 14:35, 05/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Если не заставишь использовать crun - да.
     

  • 1.89, penetrator (?), 06:55, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –4 +/
    кому нужны эти контейнеры? чтобы что? сэкономить 3 цента на виртуализации?

    виртуализации хотя бы аппартно поддерживается вплоть до шифрования памяти гостевых ситем

    и это не совсем надежно и дыры были в том числе

    а это что? иллюзия изолированности?

     

     ....большая нить свёрнута, показать (101)

  • 1.130, Аноним (-), 22:22, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    В нулевых в Gentoo пакетный менеджер мог создавать минимальное окружение необход... большой текст свёрнут, показать
     
     
  • 2.145, Аноним (145), 07:54, 05/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Как выглядит ebuild со старым вариантом configure ?
     
     
  • 3.239, Аноним (-), 19:47, 06/02/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Не помню уже, Более 20 лет прошло. Надо найти portage-200?.tar.bz2 и посмотреть функцию configure {} например в ебылде для bind.

    "Это другое" *-chroot.sh скрипты для создания chroot и иниты для запуска в chroot: https://wiki.gentoo.org/wiki/Chrooting_proxy_services возможно *-chroot.sh похож на старую функцию configure в ебылдах.

     
  • 2.176, Аноним (172), 15:04, 05/02/2024 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    Ишшо pacman есть, который нормальный, а не арчевский.
     

  • 1.148, Аноним (148), 09:41, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    а в подмане?
     
  • 1.149, Пряник (?), 10:02, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +/
    Я нашёл уязвимость в Docker

    docker run -v /:/dir1 debian rm -rf /dir1/*

     

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



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

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