LINUXTALKS.CO

Уязвимость в glibc, позволяющая получить root-доступ в системе

 , ,

L


0

1

Компания Qualys выявила опасную уязвимость (CVE-2023-6246) в стандартной Си-библиотеке Glibc, позволяющую через манипуляции с запуском SUID-приложений добиться выполнения своего кода с повышенными привилегиями. Исследователи смогли разработать рабочий эксплоит, позволяющий получить права root через манипуляцию с аргументами командной строки при запуске утилиты su.

Уязвимость вызвана переполнением буфера в функций __vsyslog_internal(), используемой при вызове функций syslog() и vsyslog(). Проблема возникает из-за ошибки при попытке вывода через макрос SYSLOG_HEADER слишком длинного имени приложения. При попытке расширения буфера с учётом длинного имени возникает сбой, после которого данные записываются в старый буфер изначального меньшего размера.

При организации атаки через утилиту su атакующий может изменить имя процесса при запуске приложения через замену значения argv[0], которое используется для получения информации об имени программы при выводе в лог, и добиться контролируемой перезаписи данных за пределами выделенного буфера. Далее переполнение можно использовать для перезаписи структуры nss_module в библиотеке nss для создания разделяемой библиотеки и её загрузки с правами root.

Проблема проявляется начиная с выпуска glibc 2.37, опубликованного в августе 2022 года и включающего изменение, обрабатывающее ситуацию с попыткой записи слишком больших сообщений. Вносящее уязвимость исправление было бэкпортировано в ветку glibc 2.36 и пакеты дистрибутивов с более старыми версиями glibc, так как отмеченное исправление устраняло уязвимость CVE-2022-39046, приводящую к утечке данных из кучи. Получилось так, что исправление неопасной уязвимости привело к появлению критической проблемы. Примечательно, что о похожей уязвимости в функции vsyslog() из состава библиотеки libc 5.4.3 сообщалось ещё в 1997 году.

Наличие уязвимости подтверждено в Debian 12/13, Ubuntu 23.04/23.10 и Fedora 37-39. Работа эксплоита для получения непривилегированным пользователем прав root продемонстрирована в полностью обновлённом окружении Fedora 38 со всеми включёнными в конфигурации по умолчанию механизмами защиты. Уязвимость может быть эксплуатирована только локально, так как требует передачи более 1024 байт через параметр argv[0] или аргумент ident в функции openlog().

Исправление уязвимости включено несколько часов назад в кодовую базу Glibc и войдёт в состав завтрашнего обновления Glibc 2.39, наряду с исправлением ещё двух уязвимостей (CVE-2023-6779, CVE-2023-6780) , также затрагивающих код __vsyslog_internal() и приводящих к переполнению буфера. Более того, компания Qualys предупредила о выявлении переполнения буфера в реализации функции qsort(), которое не было отнесено разработчиками Glibc к числу уязвимостей, так как эксплуатация подразумевает использование в качестве аргумента при вызове qsort нетипичной функции сравнения, возвращающей разницу сравниваемых параметров.

Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Протестировать подверженность системы уязвимости можно следующей командой:

   $ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)

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

★★★★★★★★★★★

Никогда такого не было и вот опять дырка с переполнением буфера. Вносите крипта с его растом.

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

Linux / Firefox (NL)
Ответ на: комментарий от Werenter

Ага, в каждой теме его приплетает. Думает, что раст — панацея от багов.

cocucka    
★★★★★★★★★★★
iPhone / Firefox (NL)
Ответ на: комментарий от crypt

если кого-то интересует мнение crypt насчет rust, то crypt решил, что обсуждать на лт предмет - только время зря тратить и вместо этого читал рассылку

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

Я взял вот отсюда

Even if all the cool kids are doing it, it doesn’t mean the cool kids are
wrong. We should not reject the hypothesis on that basis alone.

odalist    
★★★★★★★
Linux / Firefox (LT)

Протестировать подверженность системы уязвимости можно следующей командой:

и где сама команда?..

Sahas    
★★★★★★★
Gentoo / Firefox (RU)

Протестировать подверженность системы уязвимости можно следующей командой:

а что должно было произойти? терминал просто закрылся.

amd_amd    
★★★★★
Linux / Chrome (RU)
Ответ на: комментарий от amd_amd

У меня вывело кучу нулей и написало access violation

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