Уязвимость в snapd, позволяющая получить root-привилегии в системе

В snapd, инструментарии для управления самодостаточными пакетами в формате snap, выявлена уязвимость (CVE-2019-7304), позволяющая непривилегированному пользователю получить права администратора (root) в системе. Для проверки систем на наличие уязвимости опубликовано два прототипа эксплоита — первый позволяет завести нового пользователя в системе, а второй даёт возможность установить любой snap-пакет и запустить код с правами root (через установку пакета в режиме «devmode» с прикреплением обработчика, вызываемого с привилегиями root при установке пакета).

Уязвимость вызвана отсутствием в snapd должных проверок при обработке адреса внешнего сокета в процессе оценки прав доступа для Unix-сокетов. При обработке запросов к API через Unix-сокет проверяется ассоциированный с соединением UID пользователя и на основании его принимается решение о предоставлении доступа. Пользователь может прикрепить к имени файла с сокетом строку «;uid=0;» (например, создать сокет «/tmp/sock;uid=0;») и данная строка будет обработана как часть адреса клиентского сокета.

При парсинге параметров в snapd идентификатор пользователя выделяется через цикличный поиск по маске «;uid=» в строке, также включающей имя файла с сокетом (например, при создании клиентского сокета «/tmp/sock;uid=0;» эта строка примет вид «pid=5275;uid=1000;socket=/run/snapd.socket;/tmp/sock;uid=0;»). Таким образом, при наличии строки «;uid=0;» в имени сокета идентификатор будет выделен из неё, а не из штатного параметра с реальным UID. Локальный атакующий может использовать данную ошибку для доступа через сокет /run/snapd.socket к привилегированным API snapd и получения полномочий администратора (в вышеупомянутых эксплоитах используется обращение к API v2/create-user и /v2/snaps).

Проблема проявляется в версиях snapd с 2.28 по 2.37 и затрагивает все поддерживаемые ветки дистрибутива Ubuntu (с 14.04 по 18.10), в котором начиная с Ubuntu 18.04 поддержка snap предлагается по умолчанию. Проблема также затрагивает дистрибутивы Fedora и Debian, в которых snapd предлагается из штатных репозиториев. Уязвимость устранена в выпуске snapd 2.37.1, а также в обновлениях пакетов для дистрибутивов Ubuntu и Debian.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.