LINUX.ORG.RU

Обнаружена уязвимость в Polkit, которая позволяет выполнять любую команду systemctl пользователю с низкими привилегиями

 , , ,


1

2

Уязвимость CVE-2018-19788 присутствует на большинстве операционных систем GNU/Linux и позволяет пользователю, чей UID превышает 2147483647, выполнить любую команду systemctl, равно как и получить root-права.

Проблема существует из-за ошибки в библиотеке Polkit (другое название PolicyKit), заключающейся в неправильной проверки запросов от пользователей с UID > INT_MAX. Где INT_MAX это константа определяющая максимальное значение переменной типа int, равняющаяся 0x7FFFFFFF в шестнадцатеричной или 2147483647 в десятичной системе счисления.

Исследователь по безопасности Rich Mirch (аккаунт в Twitter 0xm1rch) представил успешно работающий эксплоит, демонстрирущий данную уязвимость. Для его корректной работы требуется наличие пользователя с идентификатором 4000000000.

В Twitter'е предлагают гораздо более простой способ получения root-прав:

systemd-run -t /bin/bash

Компания Red Hat рекомендует системным администраторам не создавать аккаунты с отрицательными значениями UID или UID превышающими 2147483647 до тех пор, пока не будет выпущен патч, исправляющий уязвимость.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: ls-h (всего исправлений: 5)

Ответ на: комментарий от beastie

nice ;)

Последнее время редко бываю на LOR'е. Systemd ещё модно ругать? Интересно, сейчас начнётся или нет?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

На одном хосте упаковали половину населения земли?

Я такие UID встречал только у пользователей из LXC контейнеров, так они выглядят снаружи. Но пока не придумал, как это использовать изнутри контейнера.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Компания Red Hat рекомендует системным администраторам не создавать аккаунты с отрицательными значениями UID

Половина населения земли? Я ставлю на одного наркомана =)

t184256 ★★★★★
()

Решето в замке LoL

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

прямо парад бэкдуров в последнее время

Как-то палевно для специального бекдора.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от t184256

так это бэкдур от наркоконтроля?

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

беспонтовая хня, поэтому и сдали в «уязвимости»

anonymous
()

позволяет выполнять любую команду systemctl пользователю с низкими привилегиями

Это diversity, патриархальные сволочи!

BceM_IIpuBeT ★★☆☆☆
()

Not-a-bugd сказал, что он тут не при чём.

O02eg ★★★★★
()
[commagray@MLE ~]$ systemd-run -t /bin/bash
Failed to start transient service unit: The name org.freedesktop.PolicyKit1 was not provided by any .service files
commagray ★★★★★
()

systemd-run -t /bin/bash

божественно

upcFrost ★★★★★
()

позволяет пользователю, чей UID превышает 2147483647

дальше не читал.

mos ★★☆☆☆
()

Какая ужасная уязвимость. А если пользователю дать uid=0, он тоже будет выполнять команды от рута!!11

vasily_pupkin ★★★★★
()
Последнее исправление: vasily_pupkin (всего исправлений: 1)

Чтобы такой пользователь существовал, его нужно создать, а чтобы его создать — нужны права root. Если админ идиот, то и эксплоиты не нужны.

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

сперва нужно переключиться на пользователя с uid больше 2147483647

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

На Fedora 29 такая же беда. Бэкдор не засчитан, похоже ...

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

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

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

Кажется еще не было ненависти на эту тему.

ftfy

И да, сейчас будет.

i-rinat ★★★★★
()

Но сторонники «прогресса» ведь продолжат делать вид, что всё норм, и вообще not-a-bug. Ведь уязвимость, которую нельзя использовать в лоб, в сознании поттеров уязвимостью не считается. =)

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

На один хост логинилась половина населения земли и его взломали?

Или некий Вася Админович Пупкин решил пострелять по своим ногам:

useradd --uid 4000000000 vpupkin_lal

Хотя, если некая система раздает случайные UID в диапазоне 0..UNIT_MAX, то мы точно все умрем.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)

Aга, опять linux! В бсд такого безобразия нет

Deleted
()

ну все теперь точно вендекапец.

deity ★★★★
()

Redhat 7.3 - продуктив:

nodeRH-1 [user@RH1 ~]$ systemd-run -t /bin/bash
Failed to start transient service unit: Interactive authentication required.

А разве есть такие «мудрые одмины», которые такие UID или UID делают?

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

А разве есть такие «мудрые одмины», которые такие UID или UID делают?

Какая разница? Тут дыра в софте. Если они этот corner-case не проверили, они могли не проверить и какой-нибудь другой.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от KennyMinigun

У меня не взлетело:


┬─[andrey.bondarenko@slackware13:~]─[13:58:58]
╰─>$ sudo useradd --uid 4000000000 vpupkin_lal
[sudo] password for andrey.bondarenko: 
(Tue Dec 11 13:59:09:485474 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
Could not open available domains
useradd: sss_cache exited with status 2
useradd: Failed to flush the sssd cache.
(Tue Dec 11 13:59:09:531473 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
Could not open available domains
useradd: sss_cache exited with status 2
useradd: Failed to flush the sssd cache.
┬─[andrey.bondarenko@slackware13:~]─[13:59:36]
╰─>$ sudo su -l vpupkin_lal
[vpupkin_lal@slackware13 ~]$ su
Password: 
su: Authentication failure
Shaman007 ★★★★★
()

занятно, что даже ассерт был вставлен при этом

(pkttyagent:9443): GLib-GObject-WARNING **: 13:59:27.953: value "-294967296" of type 'gint' is invalid or out of range for property 'uid' of type 'gint'
**
ERROR:pkttyagent.c:156:main: assertion failed: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0)
actionless ★★★★★
()
 $ uname -a
Linux nu 4.14.83-gentoo #1 SMP PREEMPT Mon Nov 26 17:08:18 CET 2018 x86_64 Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz GenuineIntel GNU/Linux

$ systemd-run -r /bin/bash
bash: systemd-run: command not found

Hе работает. Что я не так делаю?

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

А разве есть такие «мудрые одмины», которые такие UID или UID делают?

Если пользователи в LDAP, то очень даже реальная ситуация.

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

А разве есть такие «мудрые одмины», которые такие UID или UID делают?

Называется «директория». FreeIPA, Active Directory, какой другой LDAP.

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

Какая разница?

Разница в том что «безопасники» становятся всё более PR-ориентированными. Вместо того чтобы корректно анализировать баги, и использовать экспертизу по назначению, они придумывают им громкие заголовки и веселые логотипы.

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

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

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

У пользователей centos 6 тоже этой штуки нет. *hide-the-pain-harold.jpg*

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

Если они этот corner-case не проверили, они могли не проверить и какой-нибудь другой.

+1, того же мнения. Поттеринг с правами на коммит - это обезъяна с гранатой. Перед этим у него была такого же типа проблема при парсинге юнит-файлов.

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