Уязвимост в 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 ‘%08192x’ 1`» /usr/bin/su —help

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

  • CVE-2023-4806 — достъп до вече освободена област на паметта (use-after-free) в функцията getaddrinfo(), проявяваща се когато NSS плъгинът реализира само обажданията за обратно извикване „_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