Tvrtka Qualys otkrila je opasnu ranjivost (CVE-2023-6246) u standardnoj C biblioteci Glibc, koja omogućuje izvršavanje vlastitog koda s povišenim privilegijama putem manipulacije pokretanjem SUID aplikacija. Istraživači su uspjeli razviti funkcionalni exploit koji omogućuje stjecanje root prava uz manipulaciju argumentima naredbenog retka pri pokretanju alata su.
Ranjivost je uzrokovana prekomjernim punjenjem u funkciji __vsyslog_internal(), koja se koristi prilikom pozivanja funkcija syslog() i vsyslog(). Problem nastaje zbog pogreške prilikom pokušaja ispisivanja predugog imena aplikacije putem makronaredbe SYSLOG_HEADER. Pokušaj proširenja bafera s obzirom na dugo ime rezultira slomom, nakon kojeg se podaci zapisuju u stari bafer originalno manjeg veličine.
U organizaciji napada putem alata su, napadač može promijeniti ime procesa tijekom pokretanja aplikacije zamjenom vrijednosti argv[0], koja se koristi za dobivanje informacija o imenu programa prilikom ispisa u log, i postići kontrolirano prepisivanje podataka izvan dodijeljenog bafera. Nadalje, prekomjerno punjenje može se iskoristiti za prepisivanje strukture nss_module u nss biblioteci kako bi se stvorila dijeljena biblioteka i učitala s root pravima.
Problem se javlja od izdanja glibc 2.37, objavljenog u kolovozu 2022. godine, koje uključuje izmjenu koja obrađuje situaciju s pokušajem zapisa prevelikih poruka. Ranjivost koja se ispravila bila je unatrag prebačena u granu glibc 2.36 i pakete distribucija s starijim verzijama glibc, budući da je spomenuta ispravka uklonila ranjivost CVE-2022-39046, koja je dovela do curenja podataka iz hrpe. Ispostavilo se da je ispravak neopasne ranjivosti doveo do kritičnog problema. Zanimljivo je da je o sličnoj ranjivosti u funkciji vsyslog() iz biblioteke libc 5.4.3 prijavljeni još 1997. godine.
Potvrđena je prisutnost ranjivosti u Debian 12/13, Ubuntu 23.04/23.10 i Fedora 37-39. Funkcionalnost eksploita za sticanje root prava od strane nepovlaštenog korisnika demonstrirana je u potpuno ažuriranom okruženju Fedora 38, sa svim uključenim zaštitnim mehanizmima u konfiguraciji. Ranjivost se može iskoristiti samo lokalno, jer zahtijeva prijenos više od 1024 bajta putem parametra argv[0] ili argumenta ident u funkciji openlog().
Ispravak ranjivosti uključen je prije nekoliko sati u kodnu bazu Glibc i ući će u sutrašnje ažuriranje Glibc 2.39, zajedno sa ispravkom još dvije ranjivosti (CVE-2023-6779, CVE-2023-6780), koje takođe utječu na kod __vsyslog_internal() i dovode do prelivanja bafera. Štoviše, kompanija Qualys je upozorila na otkriće prelivanja bafera u implementaciji funkcije qsort(), koja nije klasificirana od strane programera Glibc kao ranjivost, jer eksploatacija podrazumijeva korištenje neobične funkcije usporedbe kao argumenta prilikom pozivanja qsort.
Status uklanjanja ranjivosti u distribucijama može se procijeniti na sljedećim stranicama: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Izloženost sistema ranjivosti može se testirati sljedećom komandom: $ (exec -a "$(printf ‘28000x’ 1)" /usr/bin/su < /dev/null)
Izvor: opennet.ru
