Леннарт Поттеринг представил run0, замену sudo, интегрированную в systemd

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2637
Зарегистрирован: 20.08.2022

#

Леннарт Поттеринг представил run0, замену sudo, интегрированную в systemd
Дата публикации:Mon, 29 Apr 2024 21:39:14 +0300




Леннарт Поттеринг представил утилиту run0, позволяющую выполнять процессы под идентификаторами других пользователей. Новая утилита позиционируется как более безопасная замена программы sudo, реализованная в форме надстройки над командой systemd-run и позволяющая избавиться от применения исполняемого файла с флагом SUID. Утилита run0 включена в состав выпуска systemd 256, который находится на стадии кандидата в релизы.



Отмечается, что смена идентификатора при помощи флага SUID в sudo сопряжена с дополнительными рисками, связанными с тем, что SUID-процесс наследует контекст исполнения, включающий множество свойств, контролируемых непривилегированным пользователей, таких как переменные окружения, файловые дескрипторы, параметры планировщика и привязки cgroup. Часть из подобных свойств автоматически очищается для SUID-процессов ядром, а часть - самим приложением. Тем не менее, в сложных SUID-программах, таких как sudo, продолжают регулярно находить уязвимости, вызванные неаккуратным обращением с внешними данными, на которое может влиять непривилегированный пользователь.



В run0 вместо использования SUID осуществляется обращение к системному менеджеру с запросом запуска командной оболочки или процесса с указанным идентификатором пользователя, создания нового псевдотерминала (PTY) и пересылки данных между ним и текущим терминалом (TTY). Подобное поведение больше напоминает запуск при помощи ssh, чем выполнение при помощи классического sudo. Привилегированный процесс запускается в изолированном контексте, который порождается процессом PID 1, а не процессом пользователя, т.е. не наследует свойства окружения пользователя, за исключением проброса переменной окружения $TERM. Проброс регулируется через список явно разрешённых свойств, вместо попыток запретить опасные свойства (концепция белого списка, вместо чёрного).




Для авторизации и определения возможностей пользователя в run0 используется Polkit. Классический язык описания правил (/etc/sudoers), применяемый в sudo, не поддерживается. Функциональность для запуска программ с другими привилегиями встроена в systemd-run, а команда run0 создаётся как символическая ссылка на systemd-run, при использовании которой предоставляется схожий с sudo интерфейс командной строки.



Из дополнительных возможностей run0 выделяется индикация работы с повышенными привилегиями через установку красноватого фона в терминале и добавление красной точки в заголовок окна. После прекращения выполнения с иными привилегиями точка исчезает, а фон меняется на обычный. Кроме того, run0 поддерживает все опции "systemd-run", например, параметр "--property", через который можно выставить произвольные настройки сервисов systemd (например, "CPUWeight=200 MemoryMax=2G IPAccounting=yes").




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61088

Жизнь за Нер'зула!

Ответить