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

Компанията Qualys откри опасна уязвимост (CVE-2023-6246) в стандартната C-библиотека 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 като уязвимост, тъй като експлоатацията предполага използването на нетипична функция за сравнение, която връща разликата между сравняваните параметри.

Статус на отстраняване на уязвимости в дистрибуциите може да се оцени на следните страници: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Можете да тествате податливостта на системата към уязвимостта с следната команда: $ (exec -a «`printf ‘28000x’ 1`» /usr/bin/su < /dev/null)
Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster