I cybersikkerhedens verden er sårbarheder en altid tilstedeværende bekymring. For nylig afdækkede sikkerhedsforskere en bemærkelsesværdig sårbarhed i GNU C-bibliotekets dynamiske indlæser, ofte omtalt som ld.so. Denne sårbarhed, identificeret som CVE-2023-4911, udgør en betydelig sikkerhedsrisiko på grund af dens potentiale til at muliggøre lokal privilegieeskalering. I dette blogindlæg vil vi udforske denne sårbarheds komplicerede detaljer og kaste lys over dens indvirkning, udnyttelse og mere.
Resumé
GNU C-bibliotekets dynamiske indlæser, ld.so, spiller en afgørende rolle i at finde og indlæse delte biblioteker, der kræves af programmer, forberede dem til at køre og udføre dem. Denne proces er følsom over for sikkerhed, især når en lokal bruger kører et program med forhøjede rettigheder. Historisk set har problemer relateret til behandling af miljøvariabler som LD_PRELOAD, LD_AUDIT og LD_LIBRARY_PATH været en almindelig kilde til sårbarheder i den dynamiske indlæser.
Den pågældende sårbarhed blev opdaget i håndteringen af miljøvariablen GLIBC_TUNABLES, introduceret i april 2021 (glibc 2.34). Denne sårbarhed er i bund og grund et bufferoverløb, der udløses ved parsing af GLIBC_TUNABLES. Den blev introduceret af commit 2ed18c (“Ret SXID_ERASE-adfærd i setuid-programmer (BZ #27471)”).
Impact
Denne sårbarhed har potentiale til at give en angriber fulde root-rettigheder på systemer, der kører berørte glibc-versioner. Især standardinstallationer af populære Linux-distributioner som Fedora 37 og 38, Ubuntu 22.04 og 23.04 samt Debian 12 og 13 blev fundet sårbare. Selvom ikke alle distributioner er bekræftet som sårbare, forventer forskere, at andre kan dele denne sårbarhed.
Proof of Concept
Forskere demonstrerede med succes sårbarheden ved hjælp af et proof of concept. Ved at oprette en skadelig miljøvariabel som en del af parameteren GLIBC_TUNABLES var de i stand til at udløse en segmenteringsfejl, hvilket førte til en potentiel eskalering af rettigheder.
udnyttelse
Udnyttelse af denne sårbarhed involverer overskrivning af hukommelse med vilkårlig kode for at opnå kodeudførelse. Udfordringen er at finde et passende mål for denne hukommelsesoverskrivning. I tilfældet med ld.so kompliceres dette af, at hukommelsen allokeres med mmap(), og overskrivning af ld.so's egen hukommelse ville føre til øjeblikkelige nedbrud.
Forskerne undersøgte forskellige muligheder og fokuserede til sidst på at overskrive l_info[DT_RPATH]-pointeren i den snart allokerede link_map-struktur. Denne pointer styrer bibliotekets søgesti, hvilket gør det muligt for angriberen at tvinge ld.so til at indlæse biblioteker fra en mappe under deres kontrol. Dette kan i sidste ende føre til vilkårlig kodeudførelse med forhøjede rettigheder.
Tak
Sikkerhedsforskning er ofte et samarbejde, og denne opdagelse var ingen undtagelse. Forskerne vil gerne udtrykke deres taknemmelighed til Red Hat Product Security, Siddhesh Poyarekar, medlemmerne af linux-distros@openwall, Salvatore Bonaccorso og Solar Designer for deres bidrag og støtte gennem hele denne undersøgelse.
Tidslinje
1. 4. september 2023: Meddelelse og fejlmeddelelse sendt til secalert@redhat.
2. 19. september 2023: Meddelelse og programrettelse sendt til linux-distros@openwall.
3. 3. oktober 2023: Koordineret udgivelsesdato (17:00 UTC).
Endelig er CVE-2023-4911-sårbarheden i GNU C-bibliotekets dynamiske indlæser (ld.so) en betydelig bekymring for Linux-systemer. Den understreger vigtigheden af hurtigt at installere programrettelser og vedligeholde systemer opdateret for at afbøde sådanne sårbarheder. Som altid er årvågenhed inden for cybersikkerhed afgørende for at være på forkant med potentielle trusler og sårbarheder.
På grund af RELIANOID ADC Load Balancer (både Community Edition og Enterprise Edition) er baseret på Debian 10 og er ikke berørt af denne sårbarhed. Alle sårbarhedsrettelser implementeret af RELIANOID udgives under tidslinje.