В представленном (https://gitlab.gnome.org/GNOME/gvfs/commit/c7b018d11b9aae5de...) 3 года назад GVFS-бекенде admin (GNOME Virtual File System) обнаружена критическая уязвимость (https://gitlab.gnome.org/GNOME/gvfs/issues/355), позволяющая непривелигированным пользователям без запроса пароля вносить любые правки в файловую систему с правами root.
Для повышения прав без запроса пароля достаточно принудительно завершить процесс графического агента аутентификации polkit. Указанный процесс работает с правами текущего пользователя, что позволяет завершить его без наличия дополнительных привилегий. Так как бэкенд admin корректно не обрабатывает ситуацию недоступности polkit, который применяется для определения имеющихся у пользователя дополнительных полномочий, после прекращения работы процесса polkit, например, достаточно запустить "nautilus admin:///root" для доступа к /root или "gedit admin:///etc/sudoers" для редактирования /etc/sudoers, не имея на это полномочий.Стоит отметить, что в некоторых пользовательских окружениях, например, в GNOME и MATE, процесс polkit автоматически перезапускается, что, однако, не является защитой от уязвимости. Для дистрибутива ROSA Fresh выпущено (https://bugzilla.rosalinux.ru/show_bug.cgi?id=9621) и отправлено на тестирование обновление, отключающее бекенд GVFS admin до дальнейшего выяснения обстоятельств и появления исправления, закрывающего брешь в безопасности.
URL: https://gitlab.gnome.org/GNOME/gvfs/issues/355
Новость: https://www.opennet.me/opennews/art.shtml?num=49871
Куда смотрят Мастера над релизами?
Вашу бы энергию, да в коммиты - ревьвьюветь, а то только яструя
А зачем пытаться делать лучше что-то что уже broken beyond repair?
А глумление над пользователями гнома преследует очень важную цель - острацизм социальных групп использующих software broken beyond repair. Любой пользователь гнома должен понимать и осознавать по какой причине к нему относятся как к умственно-отсталому.
куда куда на зарплату смотрят.
Какой "нездравый" 0дмин будет добавлять всех пользователей в группу wheel на секьюрной машине??
gentoo, gnome 3.30, в процессах есть только polkitd(запущен из под сис пользователя polkitd)nautilus admin:///root - требует пароля рута
gentoo xfce4 не пользую эту прогу хмм.
Ха, а я поменял thunar на nautilus в xfce, как влитой стоит.
Не поменял,а добавил.Удали тунар,а потом приходи поведать,что вышло.)
> Не поменял,а добавил.Удали тунар,а потом приходи поведать,что вышло.)thunar
bash: thunar: команда не найденаextra/thunar 1.8.2-1 (xfce4) <-- тут нет информации о том, что он установлен
Modern file manager for XfceМожет быть у тебя венда без explorer.exe и не работает, а для xfce4 thunar не является обязательным.
Сказки нам тут не рассказывай.При удалении тунара он утянет за собой очень много чего по зависимостям,делая систему неработоспособной.Я сижу на флюксе,следовательно компонентов крысы у меня в системе нет,при установке Thunar: 1.6.15 тянет за собой
libexo: 0.12.2
xfce4-panel: 4.12.2
garcon: 0.6.1
xfce4-tumbler: 0.2.3
При его удалении из Xfce,установленного мета пакетом, понятенет больше.Ещё раз : сказки нам тут не рассказывай.
# pacman -Q xfce4-tumbler tumbler xfce4-panel libexo exo garcon
ошибка: пакет 'xfce4-tumbler' не найден
tumbler 0.2.3-2
xfce4-panel 4.12.2-1
ошибка: пакет 'libexo' не найден
exo 0.12.3-1
garcon 0.6.2-1# pacman -Rc thunar
проверка зависимостей...Пакеты (4) thunar-archive-plugin-0.4.0-1 thunar-media-tags-plugin-0.3.0-1 thunar-volman-0.9.1-1 thunar-1.8.2-1
Будет освобождено: 6,84 MiB
:: Удалить эти пакеты? [Y/n] n
# pacman -Qi thunar
Название : thunar
Версия : 1.8.2-1
Описание : Modern file manager for Xfce
Архитектура : x86_64
URL : http://thunar.xfce.org
Лицензии : GPL2 LGPL2.1
Группы : xfce4
Предоставляет : Нет
Зависит от : desktop-file-utils libexif hicolor-icon-theme libnotify libgudev exo libxfce4util libxfce4ui libpng
Доп. зависимости : gvfs: for trash support, mounting with udisk and remote filesystems [установлено]
xfce4-panel: for trash applet [установлено]
tumbler: for thumbnail previews [установлено]
thunar-volman: manages removable devices [установлено]
thunar-archive-plugin: create and deflate archives [установлено]
thunar-media-tags-plugin: view/edit id3/ogg tags [установлено]
Требуется : thunar-archive-plugin thunar-media-tags-plugin thunar-volman
Опционально для : Нет
Конфликтует с : Нет
Заменяет : Нет
Установленный размер : 5,77 MiB
Сборщик : Evangelos Foutras <evangelos@foutrelis.com>
Дата сборки : Ср 26 сен 2018 21:05:09
Дата установки : Чт 27 сен 2018 09:25:58
Причина установки : Установлен как зависимость другого пакета
Установочный скрипт : No
Проверен : Подпись
Проблемы зависимостей Вашей ОС - это проблемы зависимостей Вашей ОС.
Первое правило арчевода : расскажи всем,что у тебя арч.
А вдруг это msys2?)
Изначально ветка про gentoo, потом человек с arch-ем пишет. После чего приходит Анониммм и рассказывает, что вот в его дистрибутиве нельзя сделать так, значит все врут. Я хотя бы указал дистрибутив.
Годное универсальное правило, независимо от дистрибутива.
Это совсем разные вещи - зависимости и зависимые.
В вашем случае надо было установленные зависимые для Thunar.
> Сказки нам тут не рассказывай.Эта штука называется обратные зависимости.
% pkg rquery %rn thunar
xfce4-desktop
squeeze
thunar-vcs-plugin
thunar-media-tags-plugin
thunar-archive-plugin
усе.> не знаю базовых вещей но
> Я сижу на флюксе [и имею высказать вам всем очень ценное мнение]Яснопонятно.
> Сказки нам тут не рассказывай.При удалении тунара он утянет за собой очень
> много чего по зависимостям,делая систему неработоспособной.Я сижу на флюксе,следовательно
> компонентов крысы у меня в системе нет,при установке Thunar: 1.6.15 тянет
> за собой
> libexo: 0.12.2
> xfce4-panel: 4.12.2
> garcon: 0.6.1
> xfce4-tumbler: 0.2.3
> При его удалении из Xfce,установленного мета пакетом, понятенет больше.Ещё раз : сказки
> нам тут не рассказывай.То что твой дистрибутив говно, это не значит что xfce4 не работает без thunar`а.
Не во всех дистрибутивах настолько криворукие мейнтейнеры.
О г-споди, я в i3, никакого polkitd в процессах нет, запускаю nautilus admin:///root, и там [слово на "б"] всё видно на [слово на "х"]. Вот это дырень так дырень, [слово на "с"]...С другой стороны, если юзверь не в sudoers, то admin: содержимое недоступно. Но тем не менее.
Привет, я автор того issue.Пользователь должен быть в группе wheel, чтобы это работало.
Тем не менее, у меня группа wheel настроена спрашивать пароль при выполнении sudo, так что уязвимость вполне реальная, особенно с учётом того, что почти всегда на персональных компах основной и единственный не системный юзер состоит в этой группе.С другой стороны вопрос к качеству кода :) - по сути оно проверяет, состоит ли человек в группе wheel, при этом абсолютно игнорирует уже существующую систему sudoers, в которой настроено, что может делать wheel. А некоторые люди используют группу sudo для тех же целей, и никогда не встречают этой проблемы, потому что проверяется именно wheel))
Из-за этого проблема будет воспроизводиться не на всех дистрибутивах.
В Debian wheel в этом правиле заменена на sudo, a sudoers не имеет отношения к polkitd
Не знал, что заменена, тогда конкретно тут вопросов нет.Про то что polkit не связан с sudoers я знаю (неожиданно :)). Я скорее имел в виду (дальше идёт ИМХО) это:
Полкит встроен во многие современные дистрибутивы, при этом пользователь может быть не в курсе его существования. При этом этот человек скорее всего знает про sudoers, может там что-то подкрутил под себя, но при этом он не знает что группа wheel, которую он настроил, и которую он раздает каким-либо пользователями, может иметь абсолютно независимое от его настроек поведение (в принципе так и получилось в этой уязвимости).
В общем это все скорее вопрос дизайна, так что сказать мне больше нечего.
Там, где у меня это воспроизводится, при запущенном агенте аутентификации запрашивается пароль. Если убить агента, пароль не запрашивается. Когда посмотрел то правило polkit, сходу не понял, почему вообще пароль запрашивался, по правилу вроде не должен. По сути дела абсолютно любой процесс, запущенный с правами юзера, может воспользоваться этим для внесения изменений в систему.
Похоже, и автор правила перекурил, и где-то еще есть ошибки.
> Тем не менее, у меня группа wheel настроена спрашивать пароль при выполнении sudoМне кажется тут путаница какая-то. Группа wheel даёт право запускать sudo, su и прочие утилиты позволяющие поднять привилегии. А как там отдельные утилиты разбираются, когда можно поднимать привилегии, а когда нет -- это уже особенности каждой отдельной утилиты.
Как я понимаю, исходная идея была дать бинарю группу wheel, и сделать на него chmod -rws--x---. Сейчас это делается как-то иначе: бинарь имеет группу root и доступен на запуск любому, но он отказывается повышать привилегии, если этот любой не в группе wheel. В gentoo, по-крайней мере, сделано именно так. Впрочем, не знаю почему, видимо это костыль обходящий очередной фейл unix'овой системы прав.
> по сути оно проверяет, состоит ли человек в группе wheel, при этом абсолютно игнорирует уже существующую систему sudoers
Естественно, это же другая программа, почему она должна оглядываться на sudoers? Вот su не заглядывает в sudoers, он просто запрашивает пароль, и это нормальное документированное поведение su, именно то, которого от него ждут. Если sudo ориентируется на sudoers, то флаг ему в руки и барабан на шею, но это не повод ожидать от других штатных утилит повышения привилегий, что они будут оглядываться на sudoers.
В соседнем комментарии есть пояснение, что я имел в виду.
Я не подразумевал, что что-то куда-то должно оглядываться, жаль что случилось недопонимание)
Где-то более года назад, когда меня еще интересовали новости в GNOME, произошла следующая ситуация. Вызываю я в нем nautilus через polkit-gnome (authentication agent) в Arch Linux и ввожу при этом неправильный пароль. Ничего, естественно, не получилось. Вызываю снова.. Открывается GUI запрос пароля и, передумав его вводить, я нажимаю два раза <Esc>. И тут мне открывается без ввода пароля nautilus с правами на полный доступ, редактирование и удаление чего угодно. Было весело. Не знаю, как сейчас. Проверьте...
>процесс polkitИ вот это запущено в тайлс.
Fedora 29, Gnome, не работает.
Причем тут gvfs, если уязвимоть касается polkit.
Уязвимость в gvfs, поскольку для него равнозначны ответы «authentication backend is not available» и «authentication succeed».
Охранник на проходной ушёл, так что пущаем всех, вместо того, чтобы закрыть проходную до прихода сменщика.
Типичная и корректная ситуация в Голивудских фильмах :)
Как gvfs вообще это делает? Ему же надо повысить привилегии, но как, если polkit и sudo недоступны, а бинари gvfsd не установлены со suid?
Кстати, да. Чем права-то поднимать?
Автор с товарищем сами написали ишью, сами "пофиксили" поведение в своём дистре, и сами написали новость об этом тут. До какой-либо реакции со стороны разработчиков gvfs.
Пожтому ставьте OS 3.0 там нету gvfs , но можно поставить
> Пожтому ставьте OS 3.0 там нету gvfs , но можно поставить
% pkg size gvfs
0.00B
polkit, gvfs, dbus, pulseaudio... Загадили, блин, мой линукс. Где мой KDE2 без этого говна? Даже KDE начиная с версии 3.5 от этого зависит!
Давайте представим, что Матрица работает на UNIX. Там есть группа users, пользователи которых имеют некие средние характеристики. Пользователи могут увеличить себе характеристики при помощи тренировок, но есть некий теоретический лимит для значений.Ещё есть группа agents, имеющая те хе характеристики, помноженные на 10. Они могут уничтожить любого члена группы users - но не могут, например, видеть всю карту, смотреть сквозь стены, и любоваться программным кодом предметов вокруг.
И вот возникает форс-мажорная ситуация. Появляется некий Мистер Андерсен, который ставит под угрозу стабильность работы Матрицы. Тогда agents запрашивают при помощи polkit повышение привелегий: возможность видеть, где находится Мистер Андерсен, в любой момент времени.
А как вы себе представляете это иначе? Давать временно root Смиту?
Polkit позволяет точечно дать права приложению k3b, Brasero или Nero Linux, не добавляя пользователя в группу cdrom. Приложение запросит права у Polkit, а тот, в свою очередь, сделает одно из трёх: дать права, показать gksu с просьбой ввести пароль root, или отказать. В теории, если конфиги Polkit расписаны достаточно подробно, то юзера вообще можно теперь не добавлять ни в какие группы, кроме users
Ты б ещё "Чапаева" в пример привёл. Кто Матрицу видели уже померли почти все. Этож чёрти каких годов кинцо.
Проблемы личинок шерифа не волнуют.
Не забудь проплатить под FreeBSD
> Не забудь проплатить под FreeBSD
% pkg size gvfs
0.00B
# ps auxfw|grep -c "[p]olk"
0
% pkg search dolphin
dolphin-18.12.0 KDE filemanager dolphin
% pkg search 5-plasma
kf5-plasma-framework-5.53.0 KF5 plugin based UI runtime used to write user interfaces
plasma5-plasma-5.12.7 KDE5 plasma meta port
Завидуйте молча!
>polkit, gvfs, dbus, pulseaudio... Загадили, блин, мой линукс. Где мой KDE2 без этого говна?А ты уверен, что в DCOP не было дыр?
Ну конечно были. KDE-шники молодцы, что DCOP запускается (запускался) с сессией KDE, а не через /etc/init.d/dcop. В GNOME так делает, например, PulseAudio, а Dbus - от root
Все ошибки выловить невозможно, только микроядро способно уберечь
Сдаётся, что микроядро отлично бережёт до тех пор, пока массово не используется.
Погугли про L4.
Для L4 отсутствие ошибок доказано математически
Подтверждено соответствие спецификации. Т.е. если делать с L4 только то, что предусмотрено спецификацией, сюрпризов быть не должно. Не более.
Arch lunux, нет ни гнома ни наутилуса
$ pkill polkitd
pkill: killing pid 588 failed: Operation not permittedНовость только для гномов?
Невнимательно ситали новость. polkitd, работающий не от вашего пользователя, убивать не надо.
какая же тупоpылая уязвимость, вот читаю такие новости и просто за голову хватаюсь.
Такое ощущение, что это писали дети в возрасте 5-6 лет по примерам из интернета.А может дело не в людях, а в линуксе ?
А может он всегда вот таким вот поделием будет ? ну вечно что-то будет подтупливать, подглючивать, подвисать, подтормаживать, изредка так, изподтишка, в самый блин неподходящий момент.
Freedesktop понятно дело троллейбус из хлеба на недофинансировании. Однако локальные руты во всех таких солидногламурных маковендочках бывают как минимум не реже. Подотри сопельки, адекват лол.
> Freedesktop понятно дело троллейбус из хлеба на недофинансировании.С другой стороны была FSG. Free Standards Group:
http://www.freestandards.org/
https://web.archive.org/web/20030207141431/http://www.freest.../
> The Free Standards Group develops and makes freely available standards, tools and compliance testing, which allows
> open source developers to concentrate on adding value to Linux,
> rather than spending time dealing with verification and porting issues.После вливания в Linuxfoundation это алиас www.linuxfoundation.org , c ее многоплатиновыми спонсорами за полмиллиона/год.
Землин (тот самый исполнительный директор Linux Foundation, "прославившийся" своей презентацией "2017 - год линукса на десктопе!" из под макоси), совершенно случайно, был главой (head) FSG.
Как говорится - прочувствуйте разницу :)
Уязвимость действительно тупая, потому что IRL ей практически невозможно воспользоваться. А вот про подтупливать... В линуксе всегда можно посмотреть что именно подглючивает и сделать выводы\удалить\закоммитить\исправить наконец. В отличие от.
Это вы еще винду десятую не видели
>А может дело не в людях, а в линуксе ?Дело в том, что твои люди тебе недостаточно платят за посты на opennet.ru
https://bugzilla.gnome.org//show_bug.cgi?id=772875#c5
А то что неправилигированный пользователь в группе wheel никого не смущает
Для этого нужно быть в wheel-е. Как-то не страшно.
Gvfs вообще бредовая идея
Ну вообще это норма для фридесктоп.
Я правильно понял, пользовательский процесс сообщает системному какие права есть у пользователя? Т.е. пользовательский polkit прибить и запустить другой, который будет гооворить что пользователь имеет права суперпользователя, то тоже будет работать?
Нет, polkit работает от системного пользователя polkitd, с ним общается /usr/bin/pkexec с правами 4755, то есть с setuid, принадлежит root:root, и за счет SUID всегда запускается от root.
Defective by design.
Ха только не давно была дыра в polkit когда можно было рутом стать через systemd. Развелось этих судо, никогда не знаешь где ждать сюрприз...
В качестве временного решения предлагаю:# tee /etc/pacman.d/hooks/gvfs.hook 1>/dev/null << 'EOF'
[Trigger]
Operation = Install
Operation = Upgrade
Type = File
Target = usr/share/polkit-1/rules.d/org.gtk.vfs.file-operations.rules[Action]
Description = Restrict gvfs-admin...
When = PostTransaction
Exec = /bin/sed -i 's~polkit\.Result\.YES~polkit.Result.AUTH_ADMIN~g' /usr/share/polkit-1/rules.d/org.gtk.vfs.file-operations.rules
EOF
# pacman -U /var/cache/pacman/pkg/gvfs-*
# pkill gvfsd-admin
(На правах моего скромного мнения. Я не специалист по безопафосности и погромированию.)Агент нужен, чтобы пользователь подтвердил, что не верблюд.
$ man polkit
> An authentication agent is used to make the user of a session prove that the user of the session really is the user (by authenticating as the user) or an administrative user (by authenticating as a administrator).По задумке, если авторизация процесса не прошла из-за недоступности агента, то она считается проваленной.
$ man pkcheck
> If the specified process is not authorized because no suitable authentication agent is available or if the --allow-user-interaction wasn't passed, pkcheck exits with a return value of 2 and a diagnostic message is printed on standard error.При беглом осмотре, вызывает подозрения этот код (https://gitlab.gnome.org/GNOME/gvfs/blob/master/daemon/gvfsb...):
> is_authorized = polkit_authorization_result_get_is_authorized (result) || polkit_authorization_result_get_is_challenge (result);Сравните обработку polkit_authorization_result_get_is_challenge() с "эталонной" pkcheck (https://gitlab.freedesktop.org/polkit/polkit/blob/master/src... или https://gitlab.freedesktop.org/polkit/polkit/blob/master/src...)
Там полезная нагрузка выполняется только если прошёл polkit_authorization_result_get_is_authorized(). А если - только polkit_authorization_result_get_is_challenge() и (sic!) удалось обратиться к агенту, то goto tryagain до победного polkit_authorization_result_get_is_authorized(), иначе - goto out.
А в gvfsd-admin что? А там, если ответа от агента нет, то и фиг с ним.. Как говорится, goto out из профессии! :DПолучается, для уязвимости должны быть соблюдены следующие условия:
1) Запущен демон gvfsd-admin.
> В Арче gvfsd-admin поставляется в одном пакете с gvfs (в Debian - отдельно), что значительно увеличивает шанс установить "бэкдор" в нагрузку к какому-нибудь Gtk-приложению.2) Не зарегистрирован polkit-agent.
> А его можно убить с правами пользователя.
> Кстати, в Arch нету X-GNOME-AutoRestart=true в polkit-gnome-authentication-agent-1.desktop. Так что в Гноме штатный агент, похоже, тоже не перезапустится самостоятельно. Впрочем, вряд ли, это что-то существенно меняет.3) Приложение запущено пользователем из группы wheel (или sudo в Debian, соответственно).
> Практически стандарт на десктопах. Каждый второй инсталлятор сунет первого несистемного пользователя в эту группу, либо по умолчанию, либо по просьбе дать sudo, либо при блокировке root-аккаунта.4) Приложение поддерживает протокол admin://.
> Большинство Gtk-шных приложений, поддерживающих GVFS?Резюмируя, для десктопов шанс выиграть миллион достаточно высок!
$ groups $USER
> wheel users$ pgrep -l gvfsd-admin
> 666 gvfsd-admin$ stat -c%U:%G:%a /root /etc/shadow
> root:root:750
> root:root:600$ /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
$ pgrep -u$USER -l polkit
> 955 polkit-gnome-au$ thunar admin:/root
> Не-а!$ gedit admin:/etc/shadow
> Фигу!# И тут начинается магия...
$ pkill polkit-gnome-au
$ thunar admin:/root
> А-а-а!$ gedit admin:/etc/shadow
> Караул!$ firejail --quiet --nogroups --noroot --nonewprivs gedit admin:/etc/shadow
> Грабят!ИМХО, победитель в номинации "Самый лохматый пиceц уходящего года". Странно почему ещё не создали сайт и не пиарят? Наверное ещё прошлогодние гранты на спектры с мельдониями не доели..
(С другой стороны, зачем такие сложности, если X-сервер, стоящий практически на каждом линукс-десктопе, и так позволяет любому X-клиенту читать нажатия клавиш и буфер обмена, причём каждый второй X-клиент - это интерпретатор Javascript с доступом в сеть? Пароль пользователя из группы wheel свистнуть хватит.)С праздником!
> непривилегированным пользователям, присутствующим в группе wheelчиго, простите? если пользователь в wheel то, он - привелигированый и сможет получить рута и другими способами.