Уязвимост в Glibc ld.so, която позволява получаване на права root в системата

Компанията Qualys откри опасна уязвимост (CVE-2023-4911) в компоновчика ld.so, предоставен в системната C-библиотека Glibc (GNU libc). Уязвимостта позволява на локален потребител да вдигне привилегиите си в системата, като зададе специално форматирани данни в променливата на средата GLIBC_TUNABLES преди стартиране на изпълним файл с флага suid root, например, /usr/bin/su.

Възможността за успешна експлоатация на уязвимостта е демонстрирана в Fedora 37 и 38, Ubuntu 22.04 и 23.04, Debian 12 и 13. Предполага се, че уязвимостта се проявява и в други дистрибуции, използващи Glibc. Дистрибуции, основани на системната C-библиотека Musl, като Alpine Linux, не са засегнати от проблема. Уязвимостта е отстранена с пач, добавен на 2 октомври. Може да се проследи за издаване на обновления на пакетите в дистрибуциите на страниците на Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

Уязвимостта е причинена от изменение, направено през април 2021 година и включено в изданието glibc 2.34. Заради грешка в кода за парсинг на низовете, зададени в променливата на средата GLIBC_TUNABLES, некоректна комбинация от параметри в тази променлива води до записване на анализираната стойност извън зададения буфер. Проблемът се проявява, когато вместо стандартните последователности „name=val“ параметрите са зададени в форма с двойно присвояване „name=name=val“. В този случай присвояването се обработва два пъти, първо като „name=name=val“, а след това като „name=val“. Поради подобна двойна обработка се получава резултат „name=name=val:name=val“, чийто размер надвишава размера на буфера tunestr.

Изследователите разработиха стабилен експлоит, който позволява получаване на root права при използването му с почти всяка програма, маркирана с флага suid root. Изключение правят утилитата sudo (която променя стойността на ELF RUNPATH), утилитите chage и passwd в Fedora (защитени с отделни правила на SELinux) и утилитата snap-confine в Ubuntu (защитена с отделни правила на AppArmor). Предложеният метод за експлоатация също не работи в RHEL 8 и RHEL 9, въпреки че тези версии са податливи на уязвимост (за атаката е необходимо създаването на различен експлоит). Кодът на експлоита ще бъде публикуван по-късно, след като уязвимостта бъде също така неутрализирана. Можете да проверите дали системата ви е уязвима, като изпълните указаната по-долу команда, която в случай на наличие на проблема ще доведе до срив: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf ‘192x’ 1`" \/usr\/bin\/su —help

Отделно се отбелязва отстраняването на още две уязвимости в Glibc:

  • CVE-2023-4806 — достъп до вече освободена памет (use-after-free) в функцията getaddrinfo(), проявяваща се, когато NSS плъгинът реализира само call-back извиквания „_gethostbyname2_r“ и „_getcanonname_r“, но не поддържа извикването „_gethostbyname3_r“. За експлоатация на уязвимостта DNS сървърът трябва да върне голям брой адреси IPv6 и IPv4 за запитвания хост, което ще доведе до крах на процеса, извикващ функцията getaddrinfo за семейство AF_INET6 при зададени флагове AI_CANONNAME, AI_ALL и AI_V4MAPPED.
  • CVE-2023-5156 — изтичане на съдържание на паметта при извикване на функцията getaddrinfo за семейство адреси AF_INET6 с зададени флагове AI_CANONNAME, AI_ALL и AI_V4MAPPED.

Източник: opennet.ru

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