Spoločnosť Qualys odhalila nebezpečnú zraniteľnosť (CVE-2023-4911) v linkeri ld.so, ktorý je dodávaný ako súčasť systémovej C knižnice Glibc (GNU libc). Zraniteľnosť umožňuje lokálnemu používateľovi zvýšiť svoje oprávnenia v systéme zadaním špeciálne formátovaných údajov do premennej prostredia GLIBC_TUNABLES pred spustením spustiteľného súboru s príznakom suid root, napríklad /usr/bin/su.
Možnosť úspešného zneužitia zraniteľnosti bola demonštrovaná na Fedore 37 a 38, Ubuntu 22.04 a 23.04, Debian 12 a 13. Predpokladá sa, že zraniteľnosť sa prejavuje aj v iných distribúciách, ktoré používajú Glibc. Distribúcie založené na systémovej C knižnici Musl, ako je Alpine Linux, nie sú touto problémom postihnuté. Zraniteľnosť bola odstránená v oprave pridané 2. októbra. Sledujte vydávanie aktualizácií balíkov v distribúciách na stránkach Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.
Zraniteľnosť je spôsobená zmenou, ktorá bola zavedená v apríli 2021 a zahrnutá do vydania glibc 2.34. V dôsledku chyby v kóde pri analýze reťazca, ktorý je uvedený v premennej prostredia GLIBC_TUNABLES, nesprávna kombinácia parametrov v tejto premennej vedie k zápisu analyzovanej hodnoty mimo vyhradeného vyrovnávacieho priestoru. Problém sa prejavuje, keď sú namiesto štandardných sekvencií „name=val“ parametre zadané v podobe s dvojitým priradením „name=name=val“. V tomto prípade je priradenie spracované dvakrát, najprv ako „name=name=val“, a potom ako „name=val“. V dôsledku takejto dvojitej manipulácie vzniká výsledok „name=name=val:name=val“, ktorého veľkosť presahuje veľkosť vyrovnávacieho priestoru tunestr.
Vedci vypracovali stabilný exploit, ktorý umožňuje získať práva root pri použití prakticky s ktoroukoľvek programom s flagom suid root. Výnimku tvoria utility sudo (mení hodnotu ELF RUNPATH), utility chage a passwd v Fedore (ktoré sú chránené osobitnými pravidlami SELinux) a utility snap-confine v Ubuntu (ktoré sú chránené osobitnými pravidlami AppArmor). Navrhnutá metóda exploitácie tiež nefunguje v RHEL 8 a RHEL 9, aj keď tieto vetvy sú náchylné na zraniteľnosť (na útok je potrebné vytvorenie iného exploitu). Kód exploitácie bude zverejnený neskôr po celosvetovom odstránení zraniteľnosti. Skontrolovať podozrivosť svojho systému na zraniteľnosť môžete nižšie uvedeným príkazom, ktorý v prípade prítomnosti problému skončí haváriou: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '192x' 1`" /usr/bin/su —help
Zvlášť sa spomína odstránenie v Glibc ďalších dvoch zraniteľností:
- CVE-2023-4806 — prístup k už oslobodenej oblasti pamäti (use-after-free) vo funkcii getaddrinfo(), manifestujúci sa, keď NSS plugin implementuje iba call-back volania „_gethostbyname2_r“ a „_getcanonname_r“, ale nepodporuje volanie „_gethostbyname3_r“. Na zneužitie zraniteľnosti musí DNS server vrátiť pre požadovaný hostiteľ veľké množstvo adries IPv6 a IPv4, čo spôsobí haváriu procesu, ktorý vyvolal funkciu getaddrinfo pre rodinu AF_INET6 pri nastavení flagov AI_CANONNAME, AI_ALL a AI_V4MAPPED.
- CVE-2023-5156 — únik obsahu pamäte pri volaní funkcie getaddrinfo pre rodinu adries AF_INET6 so nastavenými flagmi AI_CANONNAME, AI_ALL a AI_V4MAPPED.
Zdroj: opennet.ru
