What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

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

INC.

Midle Weight
Депозит
$0
Компания 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 нетипичной функции сравнения, возвращающей разницу сравниваемых параметров.

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

Код:
Скопировать в буфер обмена
$ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
 
Top