Проблема связана с компонентом AccountsService, который отслеживает пользователей в системе.
Уязвимость в графическом дисплейном менеджере GNOME Display Manager (GDM) может позволить обычному пользователю создавать учетные записи с повышенными привилегиями, предоставляя локальному злоумышленнику возможность запустить код с правами администратора.
Процесс эксплуатации включает выполнение нескольких простых команд в терминале и изменение общих настроек системы, не требующих повышенных прав. Использование уязвимости в GDM3 приводит к сбою в работе компонента AccountsService, который отслеживает пользователей, доступных в системе.
Исследователь безопасности Кевин Бэкхаус (Kevin Backhouse) обнаружил простой способ обманом заставить уже настроенную Ubuntu запустить процедуру настройки учетной записи для новой системы. В обычной ситуации для этого требуется учетная запись администратора для настройки устройства и установки приложений. Однако эксперт обнаружил, что GDM3 запускал эту последовательность, когда account-daemon компонента AccountsService не работал. По его словам, обычный пользователь не должен иметь возможность остановить данный процесс.
Эксперт обнаружил уязвимости в AccountsService, из-за которых компонент зависал (
CVE-2020-16127 ) и сбрасывал права учетной записи (
CVE-2020-16126 ), позволяя обычному пользователю аварийно завершить работу демона, отправив ему отложенный сигнал ошибки сегментации (kill -SIGSEGV). Уязвимости затрагивают версии Ubuntu 20.10, Ubuntu 20.04, Ubuntu 18.04 и Ubuntu 16.04.
Уязвимость CVE-2020-16127 была вызвана кодом, добавленным в версию AccountService Ubuntu, который не существует в исходной версии, поддерживаемой freedesktop.
«Патч Ubuntu добавляет функцию is_in_pam_environment, которая ищет файл с именем .pam_environment в домашнем каталоге пользователя и читает его. Уязвимость отказа в обслуживании работает, делая .pam_environment символической ссылкой на /dev/zero./dev/zero — специальный файл, которого на самом деле не существует на диске. Он предоставляется операционной системой и ведет себя как бесконечно длинный файл, в котором каждый байт равен нулю. Когда is_in_pam_environment пытается прочитать .pam_environment, он перенаправляется на /dev/zero по символической ссылке, а затем застревает в бесконечном цикле, потому что /dev/zero не имеет конца», — пояснил специалист.
Активировать его можно было путем внесения изменений в системные настройки, которые не требовали повышенных привилегий. Без запущенной службы AccountsService GDM3 не имеет представления об учетных записях на устройстве и предоставляет возможность создать новую с привилегиями суперпользователя.
Данная уязвимость получила идентификатор
CVE-2020-16125 и оценку в 7,2 балла по шкале CVSS. Проблема затрагивает версии Ubuntu 20.10, Ubuntu 20.04 и Ubuntu 18.04.
Исследователь сообщил разработчикам Ubuntu и GNOME о своих находках, и проблемы были исправлены в последней версии кода.