Compania Qualys a identificat o vulnerabilitate periculoasă (CVE-2023-4911) în linker-ul ld.so, livrat ca parte a bibliotecii standard C Glibc (GNU libc). Vulnerabilitatea permite unui utilizator local să își crească privilegiile în sistem prin specificarea unor date formatate special în variabila de mediu GLIBC_TUNABLES înainte de a rula un fișier executabil cu flag-ul suid root, de exemplu, /usr/bin/su.
Posibilitatea unei exploatări de succes a vulnerabilității a fost demonstrată în Fedora 37 și 38, Ubuntu 22.04 și 23.04, Debian 12 și 13. Se presupune că vulnerabilitatea se manifestă și în alte distribuții care utilizează Glibc. Distribuțiile bazate pe biblioteca standard C Musl, precum Alpine Linux, nu sunt afectate de problemă. Vulnerabilitatea a fost remediată într-un patch adăugat pe 2 octombrie. Informațiile despre lansările de actualizări ale pachetelor în distribuții pot fi urmărite pe paginile Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.
Vulnerabilitatea a fost cauzată de o modificare adusă în aprilie 2021 și inclusă în versiunea glibc 2.34. Din cauza unei erori în codul de analiză a șirului specificat în variabila de mediu GLIBC_TUNABLES, o combinație incorectă de parametri în această variabilă duce la scrierea valorii analizate dincolo de bufferul alocat. Problema apare atunci când, în loc de secvențele standard „name=val”, parametrii sunt setați sub forma unei atribuiri duble „name=name=val”. În acest caz, atribuirea este procesată de două ori, mai întâi ca „name=name=val”, iar apoi ca „name=val”. Datorită acestei prelucrări duble, rezultatul devine „name=name=val:name=val”, a cărui dimensiune depășește dimensiunea buffer-ului tunestr.
Cercetătorii au pregătit un exploit stabil, care permite obținerea de drepturi root prin utilizarea practic a oricărei aplicații cu flag-ul suid root. Excepția o constituie utilitarul sudo (care schimbă valoarea ELF RUNPATH), utilitarele chage și passwd în Fedora (protejate prin reguli specifice SELinux) și utilitarul snap-confine în Ubuntu (protejate prin reguli specifice AppArmor). Metoda propusă de exploatare nu funcționează nici în RHEL 8 și RHEL 9, deși aceste versiuni sunt vulnerabile (pentru atac este necesară crearea unui alt exploit). Codul exploit-ului va fi publicat ulterior, după ce vulnerabilitatea va fi remediată pe scară largă. Verificați expunerea sistemului dumneavoastră la vulnerabilitate utilizând comanda menționată mai jos, care, în cazul în care problema există, va duce la o eroare: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf ‘192x’ 1`" \/usr\/bin\/su —help
Se menționează, de asemenea, remedierea a încă două vulnerabilități în Glibc:
- CVE-2023-4806 — accesarea unei zone de memorie deja eliberate (use-after-free) în funcția getaddrinfo(), care se manifestă atunci când pluginul NSS implementează doar apeluri call-back „_gethostbyname2_r” și „_getcanonname_r”, dar nu suportă apelul „_gethostbyname3_r”. Pentru exploatarea vulnerabilității, serverul DNS trebuie să returneze pentru gazda solicitată un număr mare de adrese IPv6 și IPv4, ceea ce va duce la o eroare a procesului care a apelat funcția getaddrinfo pentru familia AF_INET6, cu flag-urile AI_CANONNAME, AI_ALL și AI_V4MAPPED.
- CVE-2023-5156 — scurgerea conținutului memoriei la apelarea funcției getaddrinfo pentru familia de adrese AF_INET6 cu flag-urile AI_CANONNAME, AI_ALL și AI_V4MAPPED.
Sursa: opennet.ro
