Обнаружена уязвимость (уже указан в CVE-2023-22809) en пакет sudo, который используется для выполнения команд от имени других пользователей, позволяя локальному пользователю редактировать любой файл в системе, что, в свою очередь, позволяет получить root-права путем изменения /etc/shadow или скриптов системы .
Для эксплуатации уязвимости пользователь должен иметь права на запуск утилиты sudoedit или «sudo» с флагом «-e» в файле sudoers.
В ошибке упоминается, что sudo (su «делать») позволяет системному администратору делегировать полномочия, чтобы дать определенным пользователям (или группам пользователей) возможность выполнять некоторые (или все) команды от имени пользователя root или другого пользователя во время работы. команд и их аргументов.
Уязвимость связана с отсутствием правильной обработки символов «–» при анализе переменных среды, определяющих программу, вызываемую для редактирования файла.
В sudo последовательность «–» используется для разделения редактора и аргументов. из списка редактируемых файлов. Злоумышленник может добавить «–file» к переменным среды SUDO_EDITOR., VISUAL или EDITOR после пути к редактору, что приведет к редактированию указанного файла с повышенными привилегиями без проверки правил доступа пользователя к файлу.
О деталях уязвимости упоминается следующее:
При запуске от имени sudo -e или sudoedit sudo можно использовать для редактирования файлов с привилегиями при запуске редактора от имени непривилегированного пользователя. Файл политики sudoers определяет, может ли пользователь редактировать указанные файлы. Ожидаемое поведение заключается в том, что модуль политики sudoers возвращает вектор аргументов внешнему интерфейсу sudo, содержащему редактор для запуска вместе с редактируемыми файлами, разделенными аргументом «–».
La последовательность событий такова:
- Внешний интерфейс sudo отправляет запрос проверки политики в модуль sudoers, указывая, что пользователь запустил sudoedit, и включает список файлов для редактирования.
- Модуль политики sudoers использует файл sudoers (или LDAP), чтобы определить, может ли пользователь редактировать файлы.
- Если проверка политики прошла успешно, модуль политики sudoers выбирает редактор на основе переменных SUDO_EDITOR, VISUAL и EDITOR в пользовательской среде.
- Модуль sudoers создает новый вектор аргументов, состоящий из выбранного редактора. Если редактор содержит параметры командной строки, он разбивается на несколько аргументов.
- К вектору аргументов добавляется разделитель «–», за которым следует список файлов для редактирования. Этот вектор аргументов возвращается интерфейсу sudo.
- Внешний интерфейс sudo использует разделитель «-», чтобы определить, какие файлы редактировать. Временные копии файлов создаются с установленным владельцем вызывающего пользователя.
- Внешний интерфейс sudo создает новый вектор аргументов, состоящий из всех элементов перед разделителем «–» (редактор), за которыми следуют пути к временным файлам. Новый вектор аргумента выполняется от имени пользователя, который его вызывает.
- Временные файлы копируются обратно в исходное расположение, а временные версии удаляются.
- Уязвимость существует, если указанный пользователем редактор также содержит аргумент «–». Это заставит внешний интерфейс sudo рассматривать все после аргумента «–» в редакторе как файл для редактирования, даже если политика sudoers не разрешает это.
Уязвимость присутствует с ветки 1.8.0 и исправлено в корректирующем обновлении sudo 1.9.12p2. Выпуск обновлений пакетов в дистрибутивах можно увидеть на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Арка, FreeBSD y NetBSD.
Наконец, упоминается, что в качестве обходного пути безопасности вы можете отключить обработку переменных среды SUDO_EDITOR, VISUAL и EDITOR, указав в sudoers:
Defaults!sudoedit env_delete+="SUDO_EDITOR VISUAL EDITOR"
источник: https://www.synacktiv.com/