Уязвимости Incus позволяют обычному пользователю выполнить код на хосте

vulnerability

Incus - это система управления контейнерами и виртуальными машинами. В ней нашлась группа уязвимостей, которые дают пользователю с низкими привилегиями власть над всем хостом. Он выполняет команды от имени root, то есть суперпользователя, читает и перезаписывает файлы хоста. Затронуты сам Incus, дистрибутив РЕД ОС и Debian GNU/Linux.

Обход проектных ограничений и подмена путей в Incus

Банк данных угроз безопасности информации (BDU) описал связанную группу уязвимостей и присвоил им записи BDU:2026-18020, BDU:2026-18021, BDU:2026-18023, BDU:2026-18024 и BDU:2026-18025. Оценка по CVSS 3.1, метрике тяжести уязвимостей, достигает здесь 9,9 балла. Это критический уровень. При этом по устаревшей версии CVSS 2.0 базовая оценка равна 9. Эксплойт, то есть готовый код для атаки, BDU называет доступным публично, хотя сведений о реальных атаках нет.

Все перечисленные ошибки затрагивают установки, где один кластер делят несколько проектов или арендаторов. Если Incus использует одна доверенная команда, риск ниже, зато чужие образы и переносы экземпляров всё равно требуют проверки. Ключевое условие - право пользователя создавать образы, тома или экземпляры. Без такого права атака не проходит.

Инъекция аргументов при создании блочного тома

Первую уязвимость порождает проверка параметров блочного тома в конфигурации хранилища. Пользователь закрытого проекта подставляет лишние аргументы в команду создания файловой системы. Демон выполняет эту команду от имени root. Поэтому внедрённые аргументы дают произвольное выполнение команд на хосте. Атака идёт по сети, а учётной записи хватает с низкими привилегиями.

Обход ограничений проекта при миграции и копировании

Две другие уязвимости касаются проверки прав при переносе и копировании экземпляров. При миграции настройки экземпляра применяются без учёта ограничений проекта. Среди них есть ключи, включающие привилегированный режим и произвольный код инициализации. В результате пользователь закрытого проекта получает привилегированный контейнер и выходит на хост. Похожая ошибка возникает при копировании между проектами.

Здесь проверку выполняют до слияния конфигурации исходного экземпляра. Опасные ключи попадают в запрос уже после проверки. Поэтому ограничения целевого проекта не срабатывают. Ошибка кроется в порядке действий, а не в самом правиле доступа.

Практический итог один: закрытый проект перестаёт быть границей безопасности. Пользователь с правом создавать экземпляры получает root на хосте, а значит и доступ к данным других проектов. Для арендной модели это означает полный обход изоляции.

Символьные ссылки в образе и доступ к файлам хоста

Ещё две уязвимости опираются на символьные ссылки внутри образа. Символьная ссылка - это файл, который указывает на другой путь. В одном случае образ содержит файл резервной копии как ссылку на файл хоста. Демон с правами root записывает копию экземпляра и идёт по ссылке. Так пользователь с правом создавать образы и экземпляры выполняет код от имени root.

Второй случай касается файла метаданных в образе. Смежные пути разработчики закрыли в прошлом релизе. Там проверка отбрасывает ссылки и держит доступ в пределах каталога. Однако файл метаданных в те исправления не попал. Через API метаданных аутентифицированный пользователь читает и перезаписывает любой файл хоста от имени root.

Исправление вышло в Incus 7.3.0. Разработчики закрыли все перечисленные уязвимости в этой версии. Обновления также подготовили для РЕД ОС и Debian GNU/Linux. BDU сообщает, что производитель выпустил исправления и присвоил уязвимостям статус подтверждённых. Пока патч не установлен, администратору стоит проверить, кто имеет право создавать образы, тома и экземпляры. Также полезно ограничить круг пользователей, которым разрешены миграции между проектами.

Ссылки

Комментарии: 0