Luka w Glibc ld.so pozwalająca na uzyskanie uprawnień roota w systemie

Firma Qualys zidentyfikowała poważną lukę w zabezpieczeniach (CVE-2023-4911) w linkerze ld.so dostarczanym z biblioteką systemową C Glibc (GNU libc). Luka pozwala lokalnemu użytkownikowi na podniesienie swoich uprawnień w systemie poprzez określenie specjalnie sformatowanych danych w zmiennej środowiskowej GLIBC_TUNABLES przed uruchomieniem pliku wykonywalnego z flagą suid root, na przykład /usr/bin/su.

Możliwość skutecznego wykorzystania luki została zademonstrowana w Fedorze 37 i 38, Ubuntu 22.04 i 23.04, Debian 12 i 13. Oczekuje się, że luka będzie dotyczyć również innych dystrybucji korzystających z Glibc. Dystrybucje oparte na bibliotece C systemu Musl, takie jak Alpine Linux, nie są dotknięte tym problemem. Luka została naprawiona w łatce dodanej 2 października. Możesz śledzić wydawanie aktualizacji pakietów dla dystrybucji na następujących stronach: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

Luka jest spowodowana zmianą wprowadzoną w kwietniu 2021 roku i uwzględnioną w wersji glibc 2.34. Z powodu błędu w kodzie parsującym dla ciągu określonego w zmiennej środowiskowej GLIBC_TUNABLES, niepoprawna kombinacja parametrów w tej zmiennej powoduje zapisanie sparsowanej wartości poza przydzielonym buforem. Problem występuje, gdy zamiast standardowych sekwencji „name=val”, parametry są określane w postaci podwójnego przypisania „name=name=val”. W takim przypadku przypisanie jest przetwarzane dwukrotnie, najpierw jako „name=name=val”, a następnie jako „name=val”. To podwójne przetwarzanie skutkuje wynikiem „name=name=val:name=val”, którego rozmiar przekracza rozmiar bufora tunestr.

Naukowcy opracowali stabilny exploit, który umożliwia dostęp do uprawnień roota w przypadku użycia praktycznie każdego programu z flagą suid root. Wyjątkami są narzędzie sudo (które zmienia wartość zmiennej ELF RUNPATH) oraz narzędzia chage i passwd w Fedorze (które są chronione osobnymi regułami SE).Linux) i narzędzie snap-confine w Ubuntu (chronione oddzielnymi regułami AppArmor). Proponowana metoda eksploatacji nie działa również w systemach RHEL 8 i RHEL 9, mimo że te gałęzie są podatne na atak (atak wymaga stworzenia innego exploita). Kod exploita zostanie opublikowany później, po tym jak luka zostanie powszechnie naprawiona. Możesz sprawdzić stopień narażenia swojego systemu na lukę za pomocą poniższego polecenia, które spowoduje awarię w przypadku wystąpienia problemu: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help

Osobno należy zauważyć, że w Glibc wyeliminowano dwie kolejne luki w zabezpieczeniach:

  • CVE-2023-4806 — Luka typu „use-after-free” w funkcji getaddrinfo() występuje, gdy wtyczka NSS implementuje tylko wywołania zwrotne „_gethostbyname2_r” i „_getcanonname_r”, ale nie obsługuje wywołania „_gethostbyname3_r”. Aby wykorzystać tę lukę, serwer DNS musi zwrócić dużą liczbę adresów IPv6 i IPv4 dla żądanego hosta, co spowoduje awarię procesu, który wywołał funkcję getaddrinfo dla rodziny AF_INET6, gdy ustawione są flagi AI_CANONNAME, AI_ALL i AI_V4MAPPED.
  • CVE-2023-5156 – Wyciek pamięci podczas wywołania funkcji getaddrinfo dla rodziny adresów AF_INET6 z ustawionymi flagami AI_CANONNAME, AI_ALL i AI_V4MAPPED.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster