URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 111003
[ Назад ]

Исходное сообщение
"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."

Отправлено opennews , 19-Апр-17 10:14 
В менеджере входа LightDM (https://freedesktop.org/wiki/Software/LightDM/), применяемом по умолчанию в Ubuntu, выявлена (http://seclists.org/fulldisclosure/2017/Apr/73) уязвимость (CVE-2017-7358 (https://security-tracker.debian.org/tracker/CVE-2017-7358)), позволяющая локальному пользователю поднять свои привилегии в системе. Проблема проявляется только в выпусках Ubuntu 16.10 и 16.04 LTS, и на днях устранена в обновлении USN-3255-1 (https://www.ubuntu.com/usn/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.


URL: http://seclists.org/fulldisclosure/2017/Apr/73
Новость: https://www.opennet.ru/opennews/art.shtml?num=46403


Содержание

Сообщения в этом обсуждении
"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 10:14 
винда... тьфу, убунтопроблемы.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 11:05 
lightdm - это не убунтопроект.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Andrey Mitrofanov , 19-Апр-17 12:10 
> lightdm - это не убунтопроект.

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Michael Shigorin , 19-Апр-17 13:04 
> lightdm - это не убунтопроект.

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним84701 , 19-Апр-17 14:41 
> lightdm - это не убунтопроект.

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

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


#!/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.

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

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

http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/view...
/*
* Copyright (C) 2016 Canonical Ltd.

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

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

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено iPony , 20-Апр-17 10:34 
А это чьи проблемы? https://bugzilla.redhat.com/show_bug.cgi?id=713640
При пробуждение после спячки сначала отображается экран, а потом уже показывается скринлок.
Секурно?

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено irinat , 21-Апр-17 16:52 
На системах с HDD всё норм. Понаставят SSD кругом, а потом мучаются.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено бедный буратино , 19-Апр-17 12:54 
блин, я думал, можно без пароля зайти

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

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено папа карло , 19-Апр-17 14:34 
Можно сделать автоматический вход, можно пароль на время в shadow убрать.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 20-Апр-17 11:58 
Это весьма практическая уязвимость, позволяющая любому пользователю стать рутом.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 13:05 
чет я не врубаюсь. mktemp вроде как создает папку с рандомным именем и возвращает имя скрипту. что там можно захватить - не понимаю. ну узнали мы имя созданной папки, каким раком ее можно подменить, если она не принадлежит другому пользователю?
ну разве что в убунте права на /tmp без sticky бита, но тогда это косяк всей системы, а не отдельного скрита

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено папа карло , 19-Апр-17 14:34 
inotify :(

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 16:38 
сомневаюсь, что оно оповещает раньше чем фактически создается файл/директория. иначе бы RC были на каждом шагу.
чтобы сабж сработал нужно чтобы у атакующего uid был такой же как у логинившегося или /tmp с правами 777 вместо 1777.
а вообще тут ламерский какой-то ресурс - минусы ставят, а обьяснить ничего нормально не могут... :)

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено папа карло , 19-Апр-17 16:51 
Смысл в том, что сначала каталог создается, потом на него меняются права.
В момент создания каталога, можно успеть совершить необходимые действия, любые на выбор:
- создать свой файл/ссылку в каталоге
- переименовать каталог и создать свой или слинковать на нужный

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 20:35 
> Смысл в том, что сначала каталог создается, потом на него меняются права.

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

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 20:51 
> Смысл в том, что сначала каталог создается, потом на него меняются права.

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено anonym_anonym , 19-Апр-17 20:22 
Проблема (я так думаю) в том что не проверяли создал ли вызов mktemp директорию
и не проверяли существует ли директория куда делают mv (зачем вообще был этот mv?).

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

Ведь если


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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 20:49 
Там вообще бредовый код, они вызывают mktemp, а потом _создают новый каталог с таким же именем но в нижнем регистре_. Тут и повяляется этот raice condition, увидев что mktemp создал каталог, юзер может успеть создать такой же каталог с именем в нижнем регистре.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 20:38 
> чтобы сабж сработал нужно чтобы у атакующего uid был такой же как у логинившегося или /tmp с правами 777 вместо 1777.

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

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

Ага.


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 19-Апр-17 17:49 
Добрый день! Уважаемые, разъясните анониму, linux многопользовательская система или нет? На домашнем ноуте LightDM, DE -XFCE4, Debian (точнее -MX Linux) жмакаю "сменить пользователя", через LightDM входит другой пользователь. Я в полной уверености, что мой сеанс заблокирован, без ввода пароля никто не сможет войти под моим логином. И вот, недавно, переключаюсь между сеансами  по CTRL ALT F7 - CTR ALT F8 - отрывается мой сеанс без всякого пароля, что это - огромная дырка в безопасности или я чего то не понял? На работе везде винда - там без ввода пароля никак не залогонишься. Может это особенность именно LightDM или XFCE4, в других DE такого нет?  

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено а такой уже зарегистрирован в системе , 19-Апр-17 22:28 
> разъясните анониму, linux многопользовательская система или нет?

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

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

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

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

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено Аноним , 20-Апр-17 03:12 
> Я вообще-то думал что Windows тоже позволяет нескольким пользователям одновременно работать.
> Неужели не так?
> Если я залогинюсь, то все другие отваляться? Что-то не верится.

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено аноним такой аноним , 20-Апр-17 15:55 
Ну, хорошо, пускай будет термнал. Как это решает проблему безопасности? Любой может открыть терминал в котором запущен мой сеанс и украсть мои фотки с котятами. Как то так.

"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено iPony , 21-Апр-17 06:51 
> Любой может открыть терминал в котором запущен мой сеанс и украсть мои фотки с котятами.

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


"Уязвимость в LightDM, позволяющая повысить свои привилегии в..."
Отправлено iPony , 21-Апр-17 06:54 
> "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