Firmaet Qualys har identificeret en farlig sårbarhed (CVE-2023-4911) i linkereren ld.so, der leveres som en del af det systematiske C-bibliotek Glibc (GNU libc). Sårbarheden giver en lokal bruger mulighed for at hæve sine privilegier i systemet ved at angive specialformaterede data i miljøvariablen GLIBC_TUNABLES, før de kører en eksekverbar fil med root-suid-flagget, for eksempel /usr/bin/su.
Muligheden for succesfuld udnyttelse af sårbarheden er blevet demonstreret i Fedora 37 og 38, Ubuntu 22.04 og 23.04, Debian 12 og 13. Det antages, at sårbarheden også forekommer i andre distributioner, der bruger Glibc. Distributioner baseret på Musl C-biblioteket, såsom Alpine Linux, er ikke påvirket af problemet. Sårbarheden er blevet løst i en patch, der blev tilføjet den 2. oktober. Man kan følge med i udgivelserne af opdaterede pakker i distributioner på siderne for Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.
Sårbarheden skyldes en ændring foretaget i april 2021 og blev en del af udgivelsen af glibc 2.34. På grund af en fejl i koden til strengeparsing angivet i miljøvariablen GLIBC_TUNABLES, fører en forkert kombination af parametre i denne variabel til, at den parserede værdi skrives uden for den tildelte buffer. Problemet opstår, når parametre er angivet som dobbelttildelinger 'name=name=val' i stedet for de normale sekvenser 'name=val'. I dette tilfælde behandles tildelingen to gange, først som 'name=name=val', og derefter som 'name=val'. På grund af denne dobbelte behandling opstår resultatet 'name=name=val:name=val', hvis størrelse overstiger størrelsen på tunestr-bufferen.
Forskere har udviklet en stabilt fungerende exploit, der giver mulighed for at få root-rettigheder ved brug af næsten enhver applikation med suid root-flaget. Undtagelserne er værktøjet sudo (som ændrer værdien af ELF RUNPATH), værktøjerne chage og passwd i Fedora (beskyttet af særskilte SELinux-regler) og værktøjet snap-confine i Ubuntu (beskyttet af særskilte AppArmor-regler). Den foreslåede udnyttelsesmetode fungerer heller ikke i RHEL 8 og RHEL 9, selvom disse versioner er sårbare (angrebet kræver oprettelsen af en anden exploit). Koden til exploit vil blive offentliggjort senere, efter at sårbarheden er blevet udbedret overalt. Du kan kontrollere, om dit system er sårbart over for angrebet med nedenstående kommando, som i tilfælde af et problem vil resultere i et nedbrud: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf ‘192x’ 1`" /usr/bin/su --help
Det bemærkes også, at der er udbedret endnu to sårbarheder i Glibc:
- CVE-2023-4806 — adgang til et allerede frigivet hukommelsesområde (use-after-free) i funktionen getaddrinfo(), som optræder, når NSS-plugin kun implementerer callback-kald "_gethostbyname2_r" og "_getcanonname_r", men ikke understøtter kaldet "_gethostbyname3_r". For at udnytte sårbarheden skal DNS-serveren returnere et stort antal adresser IPv6 og IPv4 for den anmodede vært, hvilket vil føre til et nedbrud af den proces, der kaldte funktionen getaddrinfo for adressetype AF_INET6 med flagene AI_CANONNAME, AI_ALL og AI_V4MAPPED.
- CVE-2023-5156 — lækage af hukommelsesindhold ved kald til funktionen getaddrinfo for adressetypen AF_INET6 med flagene AI_CANONNAME, AI_ALL og AI_V4MAPPED.
Kilde: opennet.ru
