Локальные root-уязвимости в инструментарии управления пакетами Snap

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
18-Фев-2022 03:30

Компания Qualys
выявила две уязвимости (CVE-2021-44731, CVE-2021-44730) в утилите snap-confine, поставляемой с флагом SUID root и вызываемой процессом snapd для формирования исполняемого окружения для приложений, поставляемых в самодостаточных пакетах в формате snap. Уязвимости позволяют локальному непривилегированному пользователю добиться выполнения кода с правами root в системе. Проблемы устранены в сегодняшнем обновлении пакетов snapd для Ubuntu 21.10, 20.04 и 18.04.
Первая уязвимость (CVE-2021-44730) позволяет совершить атаку через манипуляцию жёсткими ссылками, но требует отключения системной защиты жёстких ссылок (установки sysctl fs.protected_hardlinks в 0). Проблема вызвана некорректной проверкой местоположения исполняемых файлов вспомогательных программ snap-update-ns и snap-discard-ns, запускаемых с правами root. Путь к данным файлам вычислялся в функции sc_open_snapd_tool() на основе собственного пути из /proc/self/exe, что позволяет создать жёсткую ссылку на snap-confine в своём каталоге и разместить в этом каталоге свои варианты утилит snap-update-ns и snap-discard-ns. После запуска по жёсткой ссылке snap-confine с правами root запустит из текущего каталога файлы snap-update-ns и snap-discard-ns, подставленные атакующим.
Вторая уязвимость вызвана состоянием гонки и может быть эксплуатирована в конфигурации Ubuntu Desktop по умолчанию. Для успешной работы эксплоита в Ubuntu Server требуется выбор при установке одного из пакетов из секции "Featured Server Snaps". Состояние гонки проявляется в функции setup_private_mount(), вызываемой во время подготовки пространства имён точек монтирования для пакета snap. Данная функция создаёт временный каталог "/tmp/snap.$SNAP_NAME/tmp" или использует уже существующий для bind-монтировния в него каталогов для пакета в формате snap.
Так как имя временного каталога предсказуемо, атакующий может подменить его содержимое на символическую ссылку в момент после проверки владельца, но перед обращением к системному вызову mount. Например, можно создать в каталоге /tmp/snap.lxd символическую ссылку "/tmp/snap.lxd/tmp", указывающую на произвольный каталог, и вызов mount() последует за символической ссылкой и примонтирует каталог в пространстве имён snap. Подобным образом можно примонтировать своё содержимое в /var/lib и через замену /var/lib/snapd/mount/snap.snap-store.user-fstab организовать монтирование своего каталога /etc в пространстве имён snap-пакета для организации загрузки своей библиотеки с правами root через замену /etc/ld.so.preload.
Отмечается, что создание эксплоита оказалось нетривиальной задачей, так как утилита snap-confine написана на языке Go с использованием приёмов безопасного программирования, имеет защиту на основе профилей AppArmor, производит фильтрацию системных вызовов на основе механизма seccomp и применяет для изоляции пространство имён для монтирования. Тем не менее, исследователям удалось подготовить рабочий эксплоит для получения прав root в системе. Код эксплоита будет опубликован через несколько недель, после того как пользователи установят предоставленные обновления.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_snap
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 02-Май 12:36
Часовой пояс: UTC + 5