The OpenNET Project / Index page

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

Уязвимость в LightDM, позволяющая повысить свои привилегии в системе

19.04.2017 08:39

В менеджере входа LightDM, применяемом по умолчанию в Ubuntu, выявлена уязвимость (CVE-2017-7358), позволяющая локальному пользователю поднять свои привилегии в системе. Проблема проявляется только в выпусках Ubuntu 16.10 и 16.04 LTS, и на днях устранена в обновлении USN-3255-1.

Проблема вызвана ошибкой в коде создания временной домашней директории в скрипте /usr/sbin/guest-account, который запускается с правами root при каждом создании и завершении гостевого сеанса. В частности, временная домашняя директория создаётся в общедоступном каталоге /tmp при помощи вызова "mktemp", что позволяет локальному атакующему отследить появление нового каталога через систему inotify и оперативно подменить его на свой каталог (race condition) до выполнения следующей операции с каталогом в скрипте. В итоге домашняя директория гостевого пользователя будет создана в директории, подконтрольной атакующему, что позволяет заменить домашнюю директорию на символическую ссылку (например, спозиционировать её на /usr/local/sbin).

Далее каталог будет примонтирован в tmpfs с изменением прав доступа ("mount -t tmpfs -o mode=700,uid=${GUEST_USER} none ${GUEST_HOME}") для директории, на которую указывает символическая ссылка. Затем, так как права доступа на каталог /usr/local/sbin изменены, можно разместить в нём свой вариант используемого в скрипте исполняемого файла "getent". Так как каталог окажется в области поиска исполняемых файлов, подменённый "getent" будет вызван в ходе выполнения скриптом операции обработки завершения гостевого сеанса, которая выполняется с правами root.

  1. Главная ссылка к новости (http://seclists.org/fulldisclo...)
  2. OpenNews: Для организации входа в KDE Plasma 2 вместо KDM будет использоваться LightDM или SDDM
  3. OpenNews: Планы Ubuntu: переход на LightDM, улучшение поддержки Btrfs и интеграция новых приложений с Unity
  4. OpenNews: В Ubuntu рассматривается переход от GDM к LightDM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46403-lightdm
Ключевые слова: lightdm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:14, 19/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    винда... тьфу, убунтопроблемы.
     
     
  • 2.2, Аноним (-), 11:05, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    lightdm - это не убунтопроект.
     
     
  • 3.4, Andrey Mitrofanov (?), 12:10, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > lightdm - это не убунтопроект.

    Проект по гномо-внедрению рэхатом уязвимостей в дифолтный dm убу через посредство фридекстоп.орг -- так правильно?

     
  • 3.9, Michael Shigorin (ok), 13:04, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > lightdm - это не убунтопроект.

    Вообще-то это как раз убунтопроект в хорошем (ну, с учётом новости -- почти) смысле слова.

     
  • 3.14, Аноним84701 (ok), 14:41, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > lightdm - это не убунтопроект.

    Опять на опеннет пакеты из параллельных вселенных приходят?

    http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/view/head:/debian/gue
    [CODE]
    #!/bin/sh -e
    # (C) 2008 Canonical Ltd.
    # Author: Martin Pitt <martin.pitt@ubuntu.com>
    # License: GPL v2 or later
    # modified by David D Lowe and Thomas Detoux
    #
    # Setup user and temporary home directory for guest session.
    # If this succeeds, this script needs to print the username as the last line to
    # stdout.[/CODE]
    http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/view/head:/src/seat-l



    /*
    * Copyright (C) 2010-2011 Robert Ancell.
    * Author: Robert Ancell <robert.ancell@canonical.com>


    http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/view/head:/src/displa


    /*
    * Copyright (C) 2016 Canonical Ltd.



    http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/view/head:/src/sessio



    * Copyright (C) 2010-2011 Robert Ancell.
    * Author: Robert Ancell <robert.ancell@canonical.com>

    https://wiki.ubuntu.com/RobertAncell
    > Canonical employee since 2009

     
  • 2.26, iPony (?), 10:34, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А это чьи проблемы? https://bugzilla.redhat.com/show_bug.cgi?id=713640
    При пробуждение после спячки сначала отображается экран, а потом уже показывается скринлок.
    Секурно?
     
     
  • 3.31, irinat (ok), 16:52, 21/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    На системах с HDD всё норм. Понаставят SSD кругом, а потом мучаются.
     

  • 1.8, бедный буратино (ok), 12:54, 19/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    блин, я думал, можно без пароля зайти

    а тут какая-то эквилибристика, когда у юзера уже есть доступ к системе, и он знает, когда кто будет логиниться, и кучу инструментов уже разложил

    так и пишите - *теоретическая уязвимость*

     
     
  • 2.12, папа карло (?), 14:34, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Можно сделать автоматический вход, можно пароль на время в shadow убрать.
     
  • 2.27, Аноним (-), 11:58, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это весьма практическая уязвимость, позволяющая любому пользователю стать рутом.
     

  • 1.10, Аноним (-), 13:05, 19/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    чет я не врубаюсь. mktemp вроде как создает папку с рандомным именем и возвращает имя скрипту. что там можно захватить - не понимаю. ну узнали мы имя созданной папки, каким раком ее можно подменить, если она не принадлежит другому пользователю?
    ну разве что в убунте права на /tmp без sticky бита, но тогда это косяк всей системы, а не отдельного скрита
     
     
  • 2.13, папа карло (?), 14:34, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    inotify :(
     
     
  • 3.16, Аноним (-), 16:38, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    сомневаюсь, что оно оповещает раньше чем фактически создается файл/директория. иначе бы RC были на каждом шагу.
    чтобы сабж сработал нужно чтобы у атакующего uid был такой же как у логинившегося или /tmp с правами 777 вместо 1777.
    а вообще тут ламерский какой-то ресурс - минусы ставят, а обьяснить ничего нормально не могут... :)
     
     
  • 4.17, папа карло (?), 16:51, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Смысл в том, что сначала каталог создается, потом на него меняются права.
    В момент создания каталога, можно успеть совершить необходимые действия, любые на выбор:
    - создать свой файл/ссылку в каталоге
    - переименовать каталог и создать свой или слинковать на нужный
     
     
  • 5.20, Аноним (-), 20:35, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Смысл в том, что сначала каталог создается, потом на него меняются права.

    Из описания в новости следует что каталог создаётся от root:
    > Проблема вызвана ошибкой в коде создания временной домашней директории в скрипте /usr/sbin/guest-account, который запускается с правами root
    > - создать свой файл/ссылку в каталоге
    > - переименовать каталог и создать свой или слинковать на нужный

    Из-за sticky бита на /tmp вы не сможете это сделать с файлами/каталогами созданными root'ом.

     
  • 5.23, Аноним (-), 20:51, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Смысл в том, что сначала каталог создается, потом на него меняются права.

    Не совсем, там основной смысл ошибки в том что они создают _два_ каталога, один через mktemp, а второй _с таким же именем но в нижнем регистре_. Вот второй можно успеть перехватить.

     
  • 4.19, anonym_anonym (?), 20:22, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема (я так думаю) в том что не проверяли создал ли вызов mktemp директорию
    и не проверяли существует ли директория куда делают mv (зачем вообще был этот mv?).

    Вот фикс http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/revision/2478
    Хотя я его не понимаю.

    Ведь если



    temp_home=$(mktemp -td guest-XXXXXX)



    не создал директорию (например такая уже есть), то после



    GUEST_HOME=$(echo ${temp_home} | tr '[:upper:]' '[:lower:]')


    GUEST_HOME будет равно temp_home и вот этот код не сработает



    if [ "${GUEST_HOME}" != "${temp_home}" ]; then
        mkdir "${GUEST_HOME}" || {
          echo "Failed to create ${GUEST_USER}'s home directory (${GUEST_HOME})"
          exit 1
        }
        rmdir "${temp_home}"
    fi



     
     
  • 5.22, Аноним (-), 20:49, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Там вообще бредовый код, они вызывают mktemp, а потом _создают новый каталог с таким же именем но в нижнем регистре_. Тут и повяляется этот raice condition, увидев что mktemp создал каталог, юзер может успеть создать такой же каталог с именем в нижнем регистре.
     
  • 4.21, Аноним (-), 20:38, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > чтобы сабж сработал нужно чтобы у атакующего uid был такой же как у логинившегося или /tmp с правами 777 вместо 1777.

    +1, в описанном в новости нет никакой уязвимости из-за sticky бита и запуска от другого пользователя (root)

    > а вообще тут ламерский какой-то ресурс - минусы ставят, а обьяснить ничего
    > нормально не могут... :)

    Ага.

     

  • 1.18, Аноним (-), 17:49, 19/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Добрый день! Уважаемые, разъясните анониму, linux многопользовательская система или нет? На домашнем ноуте LightDM, DE -XFCE4, Debian (точнее -MX Linux) жмакаю "сменить пользователя", через LightDM входит другой пользователь. Я в полной уверености, что мой сеанс заблокирован, без ввода пароля никто не сможет войти под моим логином. И вот, недавно, переключаюсь между сеансами  по CTRL ALT F7 - CTR ALT F8 - отрывается мой сеанс без всякого пароля, что это - огромная дырка в безопасности или я чего то не понял? На работе везде винда - там без ввода пароля никак не залогонишься. Может это особенность именно LightDM или XFCE4, в других DE такого нет?  
     
     
  • 2.24, а такой уже зарегистрирован в системе (?), 22:28, 19/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > разъясните анониму, linux многопользовательская система или нет?

    Аноним, разъясняю тебе - Линукс это многопользовательская система.

    > И вот, недавно, переключаюсь между сеансами
    > по CTRL ALT F7 - CTR ALT F8 - отрывается мой сеанс без всякого пароля,

    А вот тут ты лукавишь. Alt + Fx не переключает между сеансами.
    Это переключение между терминалами.

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

    Я вообще-то думал что Windows тоже позволяет нескольким пользователям одновременно работать.
    Неужели не так?
    Если я залогинюсь, то все другие отваляться? Что-то не верится.

     
     
  • 3.25, Аноним (-), 03:12, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я вообще-то думал что Windows тоже позволяет нескольким пользователям одновременно работать.
    > Неужели не так?
    > Если я залогинюсь, то все другие отваляться? Что-то не верится.

    Локально в win может только один пользователь одновременно работать, второму просто некуда ввести логин/пароль, активный пользователь захватывает ввод-вывод (экран, клавиатуру) эксклюзивно.
    Удалённо по rdp можно несколько одновременно, но нужна лицензия на такую работу.

     
  • 3.28, аноним такой аноним (?), 15:55, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну, хорошо, пускай будет термнал. Как это решает проблему безопасности? Любой может открыть терминал в котором запущен мой сеанс и украсть мои фотки с котятами. Как то так.
     
     
  • 4.29, iPony (?), 06:51, 21/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Любой может открыть терминал в котором запущен мой сеанс и украсть мои фотки с котятами.

    Ну по умолчанию папки других пользователей доступны же на чтение. Так что зачем терминал? :D

     
  • 4.30, iPony (?), 06:54, 21/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > "The majority of users of Ubuntu systems either have exclusive use of the machine (personal laptop) or are sharing with friends and relatives. We assume that the people who share the machine are either trusted, or in a position to hack the machine (boot from USB!) trivially. As a result, there is little to no benefit"

    https://bugs.launchpad.net/ubuntu/+source/adduser/+bug/48734

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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