Старший инженер SUSE Алекса Сараи (Aleksa Sarai) сообщил о серьезной бреши в инструменте для запуска контейнеров runC. Уязвимость CVE-2019-5736, обнаруженная исследователями Адамом Иванюком (Adam Iwaniuk) и Борисом Поплавски (Borys Popławski), позволяет злоумышленнику перезаписать исполняемый файл и получить root-привилегии для выполнения стороннего кода.

Проблема затрагивает все системы, для которых runC является стандартной средой запуска контейнеров, в частности Docker, CRI-O, containerd и Kubernetes. Исследователь отметил, что в ходе дальнейшего изучения обнаружил аналогичную уязвимость в Apache Mesos и LXC.

Чтобы повысить свои привилегии, атакующий должен перезаписать исполняемый файл в хост-системе. Этого можно добиться двумя способами:

  • Вынудить пользователя с root-привилегиями создать контейнер из подготовленного злоумышленником образа.
  • Подключиться с помощью команды docker exec к уже существующему контейнеру, к которому преступник имел доступ на запись.

В результате вредоносный контейнер сможет перезаписать исполняемый файл runc на хосте, и злоумышленник получит root-доступ.

Уязвимость угрожает системам со стандартными настройками AppArmor и SELinux в Fedora, поскольку в них root-процессы хоста и контейнера находятся в общем пространстве имен. Это и позволяет непривилегированным приложениям получать доступ к правам суперпользователя.

Для исправления бага в runC можно воспользоваться патчем, опубликованным Сараи. Уязвимость также устранена в проектах Docker, Amazon, Fedora и Ubuntu. Разработчики AWS и Google Cloud порекомендовали пользователям обновить контейнеры уязвимых сервисов. Представитель Red Hat сообщил, что продукты Enterprise Linux и OpenShift не подвержены уязвимости, но также посоветовал обновить ПО. В Debian и SUSE проблема пока что не устранена.

Категории: Уязвимости