Сменить инструмент запуска sudo — не самое захватывающее занятие, почти как поменять носки, а вот попытаться освоить новую операционную систему — это уже по-настоящему острые впечатления. Пока все продолжают спорить о тонких настройках sudo и рисках setuid, немногие замечают настоящую угрозу: в одной из популярных систем до сих пор прячется дыра, о которой мало кто знает.
Есть несколько способов решить «проблему sudo»: выбрать другую реализацию, усилить безопасность кода или вовсе полностью изолировать доступ. Run0, opendoas и sudo-rs подходят к вопросу по-своему, но Qubes OS настолько меняет правила игры, что о sudo можно вообще забыть.
В чём подвох sudo
Лёгкая мишень для атак и коварный setuid
Sudo служит пользователям *nix ещё с 80-х, но за это время накопились две главные беды. Во-первых, у него огромная база кода — больше 100 тысяч строк, и каждая строчка может быть уязвимой. В таком «море» найти баг непросто, зато спрятаться он может где угодно.
Вторая проблема — использование setuid: этот бит позволяет запускать файл с правами его владельца. Поскольку sudo принадлежит root, любой пользователь получает root-права при запуске. Стоит только найти баг в бинарнике, и злоумышленник сможет внедрить вредоносный код, чтобы получить полный контроль над системой. Именно так обычно происходит взлом с повышением привилегий.
Эти 7 TUI-оболочек преобразят ваш терминал до неузнаваемости
GUI удобен, но TUI дарит настоящее удовольствие!
Run0
Новый взгляд на права доступа
Первая альтернатива — run0, который с версии 256 уже есть практически во всех системах на systemd. Его суть — не пытаться «подшаманить» старое sudo, а полностью отказаться от привычных схем в пользу современных решений. Вместо setuid тут работает polkit — отдельная служба, с которой можно очень гибко настраивать, кто и какие действия может запускать.
Run0 устроен совсем иначе. Пока sudo foo просто запускает программу "foo" с повышенными правами, унаследовав почти все параметры среды, run0 разворачивает процесс в отдельном псевдотерминале (PTY), полностью изолируя его. Там нет старых переменных среды, cgroup, контекстов безопасности или открытых файловых дескрипторов — никаких «хвостов» не останется.
Хотя run0 пока не идеален: он не сохраняет введённые пароли, так что вводить его придётся для каждой команды — не слишком удобно, но этот вопрос наверняка решат.
Если у вас уже стоит systemd, скорее всего run0 тоже установлен, так что смело экспериментируйте:
Можно также открыть полноценную оболочку (аналог su или sudo su):
Sudo-rs
После этого обзора хочется переписать всё на Rust
Run0 — не единственный достойный вариант. Второй — sudo-rs: почти полноценная замена sudo, которую сначала создавали энтузиасты Trifecta Tech Foundation, а потом проект подхватила Canonical и решила «переплавить» Ubuntu на современные языки. Козырь sudo-rs — защита от уязвимостей, связанных с памятью: весь код написан на Rust. Именно на ошибках работы с памятью чаще всего «горит» безопасность и теряются root-права, так что если сам язык защищает память — многие дыры исчезают, а привычный функционал остаётся.
Эти 7 приёмов с Bash изменят вашу работу в терминале навсегда
В Bash полно скрытых возможностей. Вот семь из них — экономьте время каждый день.
Opendoas
Минимум кода — минимум багов
Ещё один участник гонки — opendoas, наследник doas из OpenBSD. Суть та же: заменить sudo, но здесь во главу угла поставлен минимализм. Чем меньше строк кода, тем меньше риск, что внутри затаился баг или лазейка для хакера.
Для сравнения: у opendoas примерно 3000 строк кода, а у sudo — в десятки раз больше. Минимализм позволяет буквально за вечер просмотреть проект целиком, а значит уязвимости сложнее ускользнуть даже от среднестатистического разработчика.
Минус — разработка идёт очень неспешно: за последние годы изменений было немного. Может, проект и вправду почти идеален, а может просто активность чуть снизилась. Кстати, оригинальный doas обновлялся и в 2024 году.
Qubes OS
В Qubes sudo не нужен — и это революция!
В своё время Qubes OS буквально взорвала ИТ-сообщество, полностью убрав sudo. Отправная точка — максимально жёсткая изоляция процессов и личных данных, чтобы никакой взлом не привёл к беде.
В Qubes OS все ваши рабочие «домены безопасности» — это отдельные виртуальные машины: для банков, для работы, для интернета, для хобби. Файлы root вынесены в отдельную систему, которую невозможно заразить навсегда: после перезагрузки всё вновь идеально чисто, а внутри содержатся только системные файлы. Всё важное — от паролей до сессий браузера — хранится в вашей домашней папке. Поэтому хакеру даже не нужен root-доступ, чтобы украсть ваши данные: основной риск — не захват системы, а обмен между доменами безопасности. Здесь sudo просто ни при чём.
Проще говоря, sudo нужен для того, чтобы не дать взломщику навсегда изменить вашу систему. А в Qubes после перезагрузки всё откатывается, и уязвима лишь «песочница» пользователя. В любой другой ОС это тоже неизбежно.
Все три варианта хороши, но Qubes делает sudo ненужным навсегда
Run0 работает почти везде, где есть systemd — это большое преимущество. Но интерфейс пока далёк от идеала, и не все любят systemd, что может сдерживать рост популярности.
Перевести sudo на Rust — отличная идея, ведь Rust автоматически избавляет от многих «дыр» на уровне языка. Для критичных систем я бы доверил память только ему, хотя ярых фанатов C этим не переубедить — споры будут вечными.
Если бы выбирать идеальный инструмент, то взял бы от каждого по лучшему: минимализм opendoas, защиту памяти Rust и отказ от setuid. Такой микс сохранил бы дух open source!
Но большинство пользователей пока не планируют отказываться от sudo — привычка и инерция сильнее всего. Для многих sudo — просто раздражающий момент, а не жизненно важный компонент системы.
Впрочем, у меня на рабочем столе sudo давно запускается без пароля — и, может быть, вскоре мы увидим нечто совершенно иное, что перевернёт наши представления о безопасности root-доступа.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru