The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

11.11.2020 11:31

Исследователь безопасности из GitHub выявил уязвимость (CVE-2020-16125) в дисплейном менеджере GDM (GNOME Display Manager), отвечающем за вывод экрана входа в систему. В сочетании с другой уязвимостью в сервисе отслеживания учётных записей (accounts-daemon) проблема позволяет выполнить код с правами root. Уязвимость устранена в GNOME 3.36.2 и 3.38.2. Возможность эксплуатации уязвимости подтверждена в Ubuntu и производных дистрибутивах.

Уязвимость связана с некорректным запуском утилиты начальной настройки в случае невозможности обратиться к сервису accounts-daemon через DBus. Непривилегированный пользователь может вызвать крах или зависание процесса accounts-daemon, что создаст условия для запуска из GDM утилиты gnome-initial-setup, через которую можно зарегистрировать нового пользователя, входящего в группу sudo, т.е. имеющего возможность запуска программ с правами root. В штатной ситуации GDM вызывает gnome-initial-setup для заведения первого пользователя, если в системе отсутствуют учётные записи. Проверка наличия учётных записей производится через обращение к accounts-daemon. В случае сбоя указанного процесса, GDM считает, что учётные записи отсутствуют и запускает процесс начальной настройки.

Выявлено два способа нарушения работы accounts-daemon: Первый (CVE-2020-16126) вызван некорректным сбросом привилегий, а второй (CVE-2020-16127) ошибкой при обработке файла ".pam_environment". Кроме того в accounts-daemon найдена ещё одна уязвимость (CVE-2018-14036), вызванная неверными проверками файловых путей и позволяющая прочитать содержимое произвольных файлов в системе. Уязвимости в accounts-daemon вызваны изменениями, внесёнными разработчиками Ubuntu, и не проявляются в основном коде accounts-daemon от проекта FreeDesktop и в пакете из Debian.

Проблема CVE-2020-16127 присутствует в добавленном в Ubuntu патче с реализацией функции is_in_pam_environment, которая читает содержимое файла .pam_environment из домашнего каталога пользователя. Если вместо этого файла разместить символическую ссылку на /dev/zero, процесс accounts-daemon зависает на операции бесконечного чтения и перестаёт отвечать на запросы через DBus.

Уязвимость CVE-2020-16126 вызвана другим патчем, выполняющим сброс привилегий до текущего пользователя при обработке некоторых вызовов DBus (например, org.freedesktop.Accounts.User.SetLanguage). Процесс accounts-daemon штатно выполняется с правами root, что не позволяет обычному пользователю отправлять сигналы. Но благодаря добавленному патчу, привилегии процесса могут быть сброшены и пользователь может завершить этот процесс через отправку сигнала. Для совершения атаки достаточно создать условия для сброса привилегий (RUID) и отправить процессу accounts-daemon сигнал SIGSEGV или SIGSTOP.

Типовой сценарий атаки:

  • Создаётся символическая ссылка ~/.pam_environment, указывающая на /dev/zero:
    
        ln -s /dev/zero ~/.pam_environment
    
  • Вызывается операция для активации accounts-daemon, которая приводит к чтению файла ~/.pam_environment, зацикливанию и сбросу привилегий до RUID текущего пользователя (вместо запуска dbus-send можно просто изменить язык в настройках "Region & Language"):
    
       dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply=literal /org/freedesktop/Accounts/User`id -u` org.freedesktop.Accounts.User.SetLanguage string:kevwozere &
    
  • Обработчик останавливается через отправку сигнала SIGSTOP, а файл ~/.pam_environment удаляется, чтобы не блокировать следующие входы в систему:
    
       kill -SIGSTOP `pidof accounts-daemon`
       rm ~/.pam_environment
    
  • Пользователь завершает графический сеанс и переходит к текстовую консоль (Ctrl-Alt-F1).
  • После завершения графического сеанса GDM пытается вывести экран входа в систему, но подвисает, пытаясь получить ответ от accounts-daemon.
  • Из консоли процессу accounts-daemon отправляются сигналы SIGSEGV и SIGCONT, что приводит к его краху. Также можно отправить сигналы до выхода из графического сеанса, но нужно сделать это с задержкой, чтобы успеть завершить сеанс и до отправки сигнала успел запуститься GDM:
    
       nohup bash -c "sleep 30s; kill -SIGSEGV `pidof accounts-daemon`; kill -SIGCONT `pidof accounts-daemon`"
    
  • Запрос к accounts-daemon в GDM завершается сбоем и GDM вызывает утилиту gnome-initial-setup, в интерфейсе которой достаточно создать новую учётную запись.




  1. Главная ссылка к новости (https://securitylab.github.com...)
  2. OpenNews: Уязвимость в gnome-exe-thumbnailer, позволяющая выполнить код при просмотре каталога с MSI-файлом
  3. OpenNews: Уязвимость в GNOME Evince, позволяющая выполнить код при построении миниатюр
  4. OpenNews: Уязвимость, позволяющая обойти парольную защиту хранителя экрана GNOME
  5. OpenNews: Root-уязвимость в KAuth и smb4k
  6. OpenNews: Уязвимость, позволяющая обойти блокировку хранителя экрана
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/54065-gdm
Ключевые слова: gdm, gnome
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Любитель Монеточки (?), 11:54, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Gnome опять пробили дно?
     
     
  • 2.2, Qwerty (??), 11:56, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ой, ведь никогда такого не было!
     
  • 2.7, анонимус (??), 12:15, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Не гном, а убунта
     
  • 2.8, псевдонимус (?), 12:17, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    "Технологии ГНОМЕ" и фридрисктоп(дбус) рулят, да! ;-)
     
     
  • 3.18, Аноним (18), 13:08, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > Уязвимости в accounts-daemon вызваны изменениями, внесёнными разработчиками Ubuntu, и не проявляются в основном коде accounts-daemon от проекта FreeDesktop и в пакете из Debian.

    Вот уж да.

     
     
  • 4.28, Урри (ok), 15:13, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Но уязвимость в GDM, а не accounts-daemon.
     
     
  • 5.36, Аноним (36), 16:14, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Уязвимость в GDM только в Ubuntu. Остальный дистрибутивы такому не подвержены.
     
     
  • 6.39, псевдонимус (?), 16:34, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • –5 +/
    А в Дубас уязвимость тоже убунтеры накодили? Или все же "фри"дристопники?
     
     
  • 7.40, Аноним (18), 17:09, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А в Дубас уязвимость тоже убунтеры накодили?

    Судя по вопросу, текст новости вы не читали.

     
  • 3.47, annual slayer (?), 18:37, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ведь будь там не дбас интерфейс, а какой-нибудь там сокет или обычный файл, то такого бы точно не произошло!
     
  • 2.9, Аноним (9), 12:18, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дак не гномы, а убунтеры накодили
     
     
  • 3.29, Урри (ok), 15:14, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Уязвимость в GDM, а не accounts-daemon. Напортачили гномеры.
     
     
  • 4.30, Аноним (30), 15:23, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Виноват патч Убунты
     
  • 3.52, Аноним (52), 07:07, 12/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это просто в убунту эта дыра проявилась так легко. Менеджер логинов почему-то решает что нужно заводить новых пользователей, если отвалилась совершенно другая программа. Не в Убунте, так где-нибудь еще всплыло бы...

    Все равно что /bin/login решит пускать всех в консоли под рутовым аккаунтом, если вдруг отвалился sshd.

     
  • 2.24, Аноним (24), 13:34, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очевидно, что наоборот. Набирает популярность. Вот тысячеглаз в нём все уязвимости поправит, и будет лучше всех. А остальные, как бы неуловимые джо, так и будут жить в страхе и неведении.
     
  • 2.59, darkshvein (ok), 20:49, 15/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    велкам ту редхат бекдорс
     

  • 1.3, Qwerty (??), 11:57, 11/11/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –2 +/
     
     
  • 2.4, Аноним (4), 12:02, 11/11/2020 Скрыто модератором
  • +1 +/
     
  • 2.5, Аноним (5), 12:04, 11/11/2020 Скрыто модератором
  • +4 +/
     
     
  • 3.10, Qwerty (??), 12:20, 11/11/2020 Скрыто модератором
  • +/
     
     
  • 4.21, Анонимно (ok), 13:21, 11/11/2020 Скрыто модератором
  • +1 +/
     

     ....ответы скрыты модератором (4)

  • 1.6, myhand (ok), 12:13, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Use Debian, Luke.
     
     
  • 2.60, ttakttaguri (ok), 19:18, 17/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что в Debian лучще?
     

  • 1.11, Joulupukki (?), 12:26, 11/11/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –5 +/
     
     
  • 2.12, leibniz (ok), 12:33, 11/11/2020 Скрыто модератором
  • +2 +/
     

  • 1.13, Гугл (?), 12:40, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    В расте такого быть не может.
     
     
  • 2.31, Аноним (30), 15:24, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Нет софта на расте, нет уязвимостей в софте на расте. Инфа сотка.
     
  • 2.48, annual slayer (?), 18:40, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    всмысле, в/на расте что ли жесткие ограничения на объём прочитанных данных для файлового дескриптора?
     

  • 1.14, Аноним (14), 12:57, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Наличие gdm - это сама по себе дыра
     
     
  • 2.20, Аноним (18), 13:12, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В данном случае Ubuntu way (это когда менеджеров заставляют кодить, потому что профессиональных кодеров нанимать дорого).
     
  • 2.32, Аноним (-), 15:42, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так сваливай на Redox.
     
  • 2.37, anonymous (??), 16:21, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Подобные истории - неустранимый дефект unixway

    Ага. Дисплей менеджер заводит sudo аккаунт, а проблема в unixway. Проблема как раз в обратном - вместо display manager с чёткими и ограниченными функциями какая-то жирная хрень, которая не пойми чем занимается.

    Вместо давным-давно отлаженного PAM, у нас непонятная хрень, работающая через dbus, котоую можно легко положить неправильным пуком.

    Я не спорю, возможно PAM, когда был совсем молодым, тоже имел критические уязвимости. Но в том-то и смысл unix-way, что можно один раз отладить прогармму, а потом продолжать её использовать снова и снова, достаривая рядом другие кирпичики unix-way.

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

     
     
  • 3.42, Аноним (18), 17:19, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    PAM стал давным-давно отлаженным совсем недавно, когда его Патрик официально одобрил и включил в Слаку.
    До этого он был «очередной ненyжной хипcтерской пoдeлкой»™.

    Ну и требование рута на каждый чих с графикой, вместо разделения привилегий — тяжкое наследие дизайна xorg.

     
  • 3.50, рлпр (?), 21:27, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    угу. а потом пароль на экране входа поменять нельзя и т д, а все потому что такие простые программы нифига не умеют.
    хз как в гноме, надо проверить
     
     
  • 4.56, Аноним (-), 11:21, 12/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Пароль? Ха! Да там даже язык нельзя поменять!
     

  • 1.16, Аноним (16), 13:06, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Так для kill -SIGSTOP 'pidof accounts-daemon' нужен рут, либо судо. Опять новость из разряда "с рутом в линуксе можно сделать что угодно.
     
     
  • 2.17, Аноним (17), 13:07, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Угу.
     
  • 2.19, Аноним (18), 13:11, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так для kill -SIGSTOP 'pidof accounts-daemon' нужен рут, либо судо.

     
    > Проблема CVE-2020-16127 присутствует в добавленном в Ubuntu патче с реализацией функции is_in_pam_environment, которая читает содержимое файла .pam_environment из домашнего каталога пользователя. Если вместо этого файла разместить символическую ссылку на /dev/zero, процесс accounts-daemon зависает на операции бесконечного чтения и перестаёт отвечать на запросы через DBus.

    Ну и где здесь рут?

    Это Ubuntu, тут все без рута отлично работает. Даже без sudo

     
  • 2.23, Аноним (5), 13:33, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не нужен, читайте внимательнее. Из-за патча Ubuntu некоторые вызовы DBus меняют PUID процесса, что позволяет отправлять сигналы обычным пользователем.
     
     
  • 3.25, Аноним (16), 13:42, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот теперь понял, спасибо
     

  • 1.22, iPony129412 (?), 13:33, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ну это такое себе.
    Уже имея доступ с обычными правами получить root.
    И помимо этого дыреней хватает, когда тебя пенетрируют.

    https://ubuntu.com/security/CVE-2020-26950

     
     
  • 2.26, Михрютка (ok), 13:45, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    СРОЧНО В НОМЕР!

    атакующий может выполнить вредоносный код на принадлежащем ему компьютере!

    https://xkcd.com/1957/

     
     
  • 3.27, Аноним (27), 14:07, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что, xkcd тоже BLM-нулся?
     
     
  • 4.43, Michael Shigorin (ok), 17:43, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Увы.
     

  • 1.33, NotaBug (ok), 15:46, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    startx должно хватить всем, но не гномосекам, так как GDM, насколько я помню, прибит гвоздями
     
  • 1.34, NotaBug (ok), 15:56, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Вот как этим можно пользоватся? Эти мать их заголовки, эта кнопка меню терминала, а что это за поиск в том же терминале? Да оно даже на видео подлагивает как второй андроид на Леново.
     
  • 1.35, Аноним (35), 16:12, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > Уязвимость связана с некорректным запуском утилиты начальной настройки в случае невозможности обратиться к сервису accounts-daemon через DBus.

    dbus, polkitd с JS - в мусарку к systemd.

    https://www.linux.org.ru/forum/security/15600248?cid=15618325

    https://www.linux.org.ru/forum/security/15600248?cid=15622030

     
     
  • 2.41, Аноним (18), 17:14, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Реклама проприетарщины — тоже в мусорку.
     
     
  • 3.53, Аноним (53), 08:40, 12/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Где там реклама проприетарщины? У меня ЛОР показывает рекламу бесплатных, свободных шлюх.
     

  • 1.46, Kusb (?), 18:22, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чем занимается дисплей-менеджер? Ну то есть по логике, это просто такой графический аналог getty, который спрашивает пароль и запускает сессию.
     
     
  • 2.49, uhm (?), 20:34, 11/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если бы так, то и проблемы не было бы. А GDM вот ещё и берёт на себя обязанности первичной настройки. То есть, при каждом запуске GDM выполняется код, который вообще-то должен выполниться ровно один раз после установки ОС на пустую машину и после этого благополучно самоуничтожиться.
     

  • 1.51, Аноним (51), 23:52, 11/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Всем понятно, что давно уже пора переписать на qt-rust под wayland, и никаких проблем не будет! Нет же, они как упороные пишут на сях под иксы на gtk. Ретрограды!
     
     
  • 2.55, microsoft (?), 10:37, 12/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так напиши, или слабо как всегда
     

  • 1.54, Аноним (54), 09:56, 12/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уязвимость уровня загрузиться с init=/bin/sh и сменить рутовый пароль.
     
  • 1.57, Аноним12345 (?), 13:44, 12/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Решено: ухожу с 16-й убунты на 20-ю !
     
  • 1.58, And (??), 20:49, 12/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Keep it simple. А тут - шины обмена, Системда...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру