Уязвимость в RunC позволяет выполнить код с правами суперпользователя на хостах Docker
Проблема затрагивает все системы контейнерной изоляции, использующие RunC, включая Docker, containerd, Podman и CRI-O.
В инструменте для запуска изолированных контейнеров RunC выявлена критическая уязвимость (CVE-2019-5736), предоставляющая злоумышленнику возможность из вредоносного контейнера изменить исполняемый файл RunC и получить права суперпользователя на хост-системе. Проблема затрагивает все системы контейнерной изоляции, использующие RunC, включая Docker, containerd, Podman и CRI-O. Как отмечается, похожая уязвимость также присутствует в инструментах LXC и Apache Mesos. Для осуществления атаки необходимо, чтобы пользователь с привилегиями суперпользователя создал новый контейнер на основе подконтрольного атакующему образа или подключился к существующему контейнеру (достаточно выполнения docker exec), к которому злоумышленник ранее имел доступ на запись.
Проблема не блокируется политикой по умолчанию AppArmor и правилами SELinux в Fedora (поскольку процессы контейнера запускаются в контексте container_runtime_t). Тем не менее уязвимость не проявляется при корректном использовании пространств имен идентификатора пользователя (user namespaces)
Мейтейнер RunC Алекса Сараи (Aleksa Sarai) опубликовал патч, исправляющий уязвимость. Проблема уже устранена RHEL , Fedora и Ubuntu , но остается актуальной для Debian и SUSE. Публикация PoC-кода для данной уязвимости запланирована на 18 февраля нынешнего года.