Looney Tunables – Ескалиране на локални привилегии в ld.so на glibc
Преди няколко дни Qualys, обявен чрез публикация в блог, която идентифицира a опасна уязвимост (вече каталогизиран под CVE-2023-4911) и чието кодово име е "Looney Tunables."
За тази уязвимост се споменава, че позволява на местен потребител да повиши своите привилегии в системата, като посочите специално форматирани данни в променливата на средата „GLIBC_TUNABLES“, преди да стартирате изпълним файл с флага suid.
Уязвимост Смята се за опасно, защото се намира вътре в линкера ld.so предоставен като част от C библиотеката на системата Glibc (GNU libc) присъства в много системи и се дължи на промяна, въведена през април 2021 г. като част от версията glibc 2.34.
GNU C библиотеката, известна като glibc, е C библиотеката в системата GNU и в повечето системи, работещи с ядрото на Linux. Дефинира системните извиквания и друга основна функционалност, като open, malloc, printf, exit и т.н., които типичната програма изисква. Динамичното зареждане на GNU C библиотеката е ключов компонент на glibc, отговорен за подготовката и изпълнението на програми
Ние успешно идентифицирахме и използвахме тази уязвимост (локално повишаване на привилегиите, което предоставя пълни права на root) в инсталациите по подразбиране на Fedora 37 и 38, Ubuntu 22.04 и 23.04 и Debian 12 и 13. Други дистрибуции вероятно са също толкова податливи, въпреки че имаме отбеляза, че Alpine Linux остава изключение поради използването на musl libc вместо glibc. Тази уязвимост беше въведена през април 2021 г.
Наличието на уязвимост се дължи на грешка в кода за анализ на низове посочена в променливата на средата GLIBC_TUNABLES, в която поради неправилна комбинация от параметри в тази променлива кара анализираната стойност да бъде записана извън разпределения буфер.
Тази променлива на средата, предназначена за настройка и оптимизиране на приложения, свързани с glibc, е основен инструмент за разработчици и системни администратори. Неговата злоупотреба или експлоатация значително засяга производителността, надеждността и сигурността на системата.
Проблемът се проявява кога, вместо последователности на параметрите, които са посочени във формата с двойно присвояване. В този случай разпределението се обработва два пъти и тази двойна обработка дава резултат, който е по-голям от размера на буфера.
За да демонстрирате уязвимост, Изследователите са подготвили стабилен експлойт, който ви позволява да получите root права когато се използва с почти всяка програма с флаг suid root.
Изключенията са помощната програма sudo, помощните програми chage и passwd на Fedora (защитени от отделни правила на SELinux) и помощната програма snap-confine на Ubuntu (защитени от отделни правила на AppArmor). Предложеният метод за експлоатация също не работи на RHEL 8 и RHEL 9, въпреки че тези клонове са податливи на уязвимости.
Като се има предвид уязвимостта, идентифицирана в динамичното зареждане на библиотеката GNU C и нейното потенциално въздействие върху системите, отделът за изследване на заплахите на Qualys съветва екипите по сигурността да дадат приоритет на справянето с този проблем.
Както бе споменато по-горе, способността за успешно използване на уязвимостта е демонстрирана във Fedora 37 и 38, Ubuntu 22.04 и 23.04, Debian 11, 12 и 13.
Предполага се че уязвимостта ще се появи и във всяка друга дистрибуция, която използва Glibc. Въпреки че дистрибуциите, базирани на библиотеката Musl system C, като Alpine Linux, не са засегнати от проблема. Що се отнася до решението на уязвимостта, то беше разпространено под формата на кръпка, която беше добавена на 2 октомври.
По отношение на пускането на кода на xploit се споменава, че той ще бъде пуснат по-късно, след като уязвимостта бъде коригирана навсякъде. Можете да проверите уязвимостта на вашата система към уязвимостта, като използвате следната команда, която няма да успее, ако има проблем:
Накрая ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.