Команда sudo считается одним из основных инструментов в повседневной работе с Linux, настолько, что мы воспринимаем ее присутствие как должное. Но что, если я скажу вам, что ее дни вполне могут быть сочтены, а новые версии systemd могут ознаменовать начало ее заката? Нет, я не бредю. Дело вот в чем.
В своем последнем посте Леннарт Поттеринг, создатель systemd, делится вдумчивой критикой и надежной заменой давно существующей команды sudo.
Он утверждает, что основная проблема sudo
заключается в ее SUID-природе, которая позволяет процессу выполняться с повышенными привилегиями, частично контролируемыми непривилегированным кодом, требуя тщательной ручной очистки – рецепт потенциальных брешей в системе безопасности.
Лично я считаю, что самая большая проблема с sudo заключается в том, что это SUID-бинарный код – большая площадь атаки, плагины, доступ к сети и так далее, которые появляются после него, только усугубляют проблему…»
В свете этого его видение более безопасной системой предполагает полный отказ от двоичных файлов SUID, продвигая архитектуру, в которой привилегированный код работает независимо от непривилегированного вмешательства.
Итак, в моем идеальном мире у нас была бы ОС, полностью лишенная SUID. Давайте выбросим концепцию SUID на свалку плохих идей UNIX. Контекст выполнения для привилегированного кода, который наполовину находится под контролем непривилегированного кода и требует тщательной ручной очистки, – это уже не то, чем должна заниматься инженерия безопасности в 2024 году»
run0, последнее нововведение systemd, которое планируется выпустить в версии 256. Это не просто новый инструмент, а переосмысленный systemd-run, доступный через симлинк, который имитирует sudo, не являясь на самом деле бинарным файлом SUID.
Он работает, запрашивая у менеджера служб выполнение команд под UID целевого пользователя, создавая новый PTY (псевдотерминал) и передавая данные между оригинальным TTY и этим PTY.
Такая установка гарантирует, что команда выполняется в изолированной среде, только что отпочковавшись от PID 1, и не наследует от клиента никакого проблемного контекста.
Более того, run0 отказывается от традиционных сложностей конфигурации, используя polkit для авторизации, упрощая взаимодействие с пользователем и дополнительно защищая процесс выполнения.
Инструмент также привносит в работу пользователя изюминку: при работе с повышенными привилегиями он изменяет фон терминала на красноватый оттенок, служащий визуальной подсказкой о повышенном статусе пользователя – простое, но эффективное напоминание о необходимости ответственно подходить к управлению привилегиями.
В заключение можно с уверенностью сказать одно – это вызовет новые дебаты в сообществе Linux. Другая уверенность заключается в том, что systemd v256 завершена на 88%, и до финального стабильного релиза осталось совсем немного. А что будет после этого, еще предстоит узнать.
Подробную информацию можно найти в посте Поттеринга.
Комментарии (0)