LINUXTALKS.CO

Уязвимость в sudo, позволяющая изменить любой файл в системе

 

L


0

1

В пакете sudo, применяемом для организации выполнения команд от имени других пользователей, выявлена уязвимость (CVE-2023-22809), позволяющая локальному пользователю отредактировать любой файл в системе, что, в свою очередь, позволяет добиться получения прав root через изменение /etc/shadow или системных скриптов. Для эксплуатации уязвимости требуется, чтобы в файле sudoers пользователю было предоставлено право запускать утилиту sudoedit или "sudo" с флагом "-e".

Уязвимость вызвана отсутствием должной обработки символов "--" при разборе переменных окружения, определяющих программу, вызываемую для редактирования файла. В sudo последовательность "--" используется для отделения редактора и аргументов от списка редактируемых файлов. Атакующий может добавить в переменные окружения SUDO_EDITOR, VISUAL или EDITOR последовательность "-- файл" после пути к редактору, что приведёт к инициированию редактирования указанного файла с повышенными привилегиями без проверки правил доступа пользователя к файлам.

Уязвимость проявляется начиная с ветки 1.8.0 и устранена в корректирующем обновлении sudo 1.9.12p2. Публикацию обновлений пакетов в дистрибутивах можно проследить на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch, FreeBSD, NetBSD. В качестве обходного пути защиты можно отключить обработку переменных окружения SUDO_EDITOR, VISUAL и EDITOR, указав в sudoers:

Defaults!sudoeditenv_delete+=«SUDO_EDITOR VISUAL EDITOR»

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter

>>> Подробности

★★☆☆☆

Шо, опять? Видать не зря я на doas перешёл в какой-то момент.

cocucka    
★★★★★★★★★★★
Linux / Firefox
Ответ на: комментарий от cocucka

на линуксе?? мне даже на *BSD лень переучиваться=)

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от odalist

для этого кулхацкеру аккаунт сначала нужно получить. обновлять… зачем спешить? в след. квартале!

crypt    
★★☆☆☆
FreeBSD / Chrome

Уязвимость вызвана отсутствием должной обработки символов «–» при разборе переменных окружения, определяющих программу, вызываемую для редактирования файла.

А вот эту вот херню никто не додумался стандартизировать? Библиотеку сделать? Каждый рукожоп обработку аргументов сам пишет что ли бгг?

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от Kaschenko

вообще она есть в стандартной библиотеке glibc, так что хз. есть еще расширенный getopt, не помню, частью чего он является.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 2)

FreeBSD / Chrome
Ответ на: комментарий от Kaschenko

Хотя после десятков реализаций строк в C/C++ я уже ничему не удивляюсь. Как же хорошо что я бросил заниматься этой дурью

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от crypt

А ты чего ожидал на форке лора? Скажи спасибо что я хоть новость до середины прочитал, а не только заголовок

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от Kaschenko

я думаю, там дело в том, что они не могут использовать штатный парсинг, потому что часть аргументов команды sudo отправляют во встроенный editor.

	/*
	 * We use "--" to separate the editor and arguments from the files
	 * to edit.  The editor arguments themselves may not contain "--".
	 */

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от Kaschenko

А ты чего ожидал на форке лора?

что ты по крайне мере предложишь переписать на rust

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

часть аргументов команды sudo отправляют во встроенный editor.

Зачем?

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от crypt

Не, я не сноб, меня учили этой хуетой не пользоваться, так что я даже не понимаю зачем она нужна. Зачем она нужна, если есть нормальные средства?

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от crypt

Вообще да, кстати. Напомню что тот, кто не написал собственный класс для строк в плюсах - пидарас и хохол

Rust хотя бы на вменяемый язык похож

Kaschenko    
★★★★★★
Последнее исправление: Kaschenko (всего исправлений: 1)

Android / Yandex
Ответ на: комментарий от crypt

есть еще расширенный getopt, не помню, частью чего он является.

getopt_long? Гнутое расширение POSIX getopt, которое перетащили в *BSD и сделали в каком-то месте несовместимым.

Meyer    
★★★★★★
Ubuntu / Firefox
Ответ на: комментарий от Kaschenko

Напомню что тот, кто не написал собственный класс для строк в плюсах - пидарас и хохол

Как там в 2003?

Meyer    
★★★★★★
Ubuntu / Firefox
Ответ на: комментарий от Kaschenko

Не, я не сноб, меня учили этой хуетой не пользоваться, так что я даже не понимаю зачем она нужна. Зачем она нужна, если есть нормальные средства?

goto нельзя (точнее за такое нужно кувалдой по рукам бить) использовать только во всяких вложенных циклах. В остальных случаях норм.

Meyer    
★★★★★★
Ubuntu / Firefox
Ответ на: комментарий от crypt

если это такой мощный DE, то вообще polkit, скорее всего, тянет

Debian 11 MATE, а на серверах у меня sudo нет.

Aleksandra    
★★★★★
Android / Chrome
Ответ на: комментарий от Meyer

А что там, в стандарте C++ 1488 наконец утвердили хоть один работающий строковой тип? Не слежу, сорян

Kaschenko    
★★★★★★
Android / Yandex
Ответ на: комментарий от Kaschenko

1488

14882, вообще-то.

наконец утвердили хоть один работающий строковой тип?

std::string, но это такая умная обертка над const char*.

Meyer    
★★★★★★
Ubuntu / Firefox
Ответ на: комментарий от Kaschenko

РаSSово арийский ЯП. ЧСХ, в комитете ни одного чёрного.

Meyer    
★★★★★★
iPhone / Safari
Ответ на: комментарий от crypt

если это такой мощный DE, то вообще polkit, скорее всего, тянет, а это гораздо хуже.

В Debian, по дэфолту, все DE тянут sudo. Кажется один только lxde не тянет. Но нужно устанавливать минимальную версию-lxde-core. Вот тебе еще одна причина не устанавливать DE.

odalist    
★★★★★★★
Linux / Firefox
Ответ на: комментарий от odalist

Вот тебе еще одна причина не устанавливать DE.

я за < 20 лет работы админом ни разу не видел, чтобы ломали через судо. фигня это все.

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от Aleksandra

Я тоже не использую, но DE его тянет за собой.

тогда с него можно suid снять. я так и сделал в итоге с polkit pkexec.

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

Интересное решение. Спасибо. Нужно взять на заметку.

odalist    
★★★★★★★
Последнее исправление: odalist (всего исправлений: 1)

Linux / Firefox
Ответ на: комментарий от crypt

что логично.

Да, логично, но пока не написали, можно использовать doas.

odalist    
★★★★★★★
Linux / Firefox
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90