sudo-rs - безопасная альтернатива классическому sudo на Rust

31 июл 2025
4,481
182
33
1 неделя

Почему sudo нуждается в замене?

Каждый день миллионы разработчиков и системных администраторов используют команду sudo для выполнения привилегированных операций. Но мало кто задумывается, что традиционная реализация sudo, написанная на C, потенциально уязвима к проблемам с управлением памятью — переполнениям буфера, use-after-free и другим опасным уязвимостям.

Именно эту проблему решает sudo-rs — переписанная с нуля реализация sudo на Rust, языке, который гарантирует безопасность работы с памятью на уровне компилятора.

Что такое sudo-rs?

Sudo-rs — это проект, разрабатываемый при поддержке Internet Security Research Group в рамках инициативы Prossimo. Основные особенности:

  • Полная переработка sudo с акцентом на безопасность
  • Поддержка большинства распространенных сценариев использования
  • Совместимость с существующими конфигурациями sudoers
  • Реализация на Rust (минимальная версия 1.70)

Проект уже прошел независимый аудит безопасности в августе 2023 года, а его текущая версия включает все исправления, рекомендованные аудиторами.

Ключевые преимущества

1. Гарантии безопасности памяти

Благодаря использованию Rust, sudo-rs исключает целый класс уязвимостей, связанных с ручным управлением памятью. Это особенно важно для утилиты, которая работает с повышенными привилегиями.

Реклама

2. Совместимость с существующими системами

Хотя sudo-rs — это переписанная с нуля реализация, она поддерживает:

  • Стандартные файлы конфигурации /etc/sudoers
  • Основные параметры командной строки
  • Интеграцию с PAM для аутентификации

3. Упрощенная и безопасная конфигурация

Sudo-rs сознательно отказался от некоторых устаревших или потенциально опасных возможностей оригинального sudo:

  • Всегда используется env_reset
  • Запрещены потенциально опасные шаблоны в аргументах команд
  • Упрощена обработка паролей

4. Простота установки

Проект уже включен в репозитории основных дистрибутивов Linux:

# Для Debian/Ubuntu
apt-get install sudo-rs

# Для Fedora
dnf install sudo-rs

# Для Arch Linux
pacman -S sudo-rs

Чем отличается от оригинального sudo?

Sudo-rs не стремится к 100% совместимости со всеми возможностями оригинального sudo. Вот основные различия:

  1. Отсутствие поддержки устаревших функций — например, LDAP-интеграции или специальных возможностей для legacy-систем.
  2. Более строгая обработка команд — нельзя использовать wildcards в аргументах команд.
  3. Обязательное использование PAM — в отличие от оригинального sudo, который может работать без PAM.
  4. UTF-8 для sudoers — файл конфигурации должен быть в UTF-8.

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

Как начать использовать sudo-rs?

Вариант 1: Установка из репозиториев

Самый простой способ — установка через пакетный менеджер вашего дистрибутива. После установки команды будут доступны как sudo-rs и su-rs.

Вариант 2: Ручная установка

Для систем, где sudo-rs еще нет в репозиториях, можно использовать предварительно собранные бинарники:

sudo tar -C /usr/local -xvf sudo-0.2.7.tar.gz
sudo tar -C /usr/local -xvf su-0.2.7.tar.gz

Вариант 3: Сборка из исходников

Для сборки потребуется Rust 1.70+ и заголовочные файлы PAM:

# На Debian/Ubuntu
sudo apt-get install libpam0g-dev

# На Fedora/CentOS
sudo yum install pam-devel

# Сборка
cargo build --release

После сборки не забудьте установить бинарнику флаг setuid и владельца root.

Кому стоит попробовать sudo-rs?

Проект будет особенно интересен:

  • Системным администраторам, заботящимся о безопасности
  • Разработчикам дистрибутивов Linux
  • Командам, внедряющим memory-safe языки в свою инфраструктуру
  • Любому, кто хочет уменьшить attack surface своих систем

Будущее проекта

Хотя текущая цель — создать замену для основных сценариев использования sudo, разработчики рассматривают и более амбициозные планы:

  • Альтернативные способы конфигурации (без sudoers-синтаксиса)
  • Выделение отдельных компонентов в виде библиотек
  • Расширение функциональности для современных use-case

Sudo-rs — это важный шаг к более безопасным Linux-системам. Хотя проект еще развивается, он уже готов к использованию в большинстве стандартных сценариев. Если вы заботитесь о безопасности своих систем — стоит присмотреться к этой реализации sudo на Rust.

Что интересно, переход на sudo-rs может быть практически незаметен для конечных пользователей, но при этом значительно повысит безопасность вашей инфраструктуры. Попробуйте установить его в тестовом окружении и оцените сами!

Ссылки:

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.