Kompania Qualys identifikoi një vulnerabilitet të rrezikshëm (CVE-2023-6246) në bibliotekën standarde C Glibc, e cila lejon, përmes manipulimeve gjatë nisjes së aplikacioneve SUID, ekzekutimin e kodit me privilegje të rritura. Studiuesit arritën të zhvillojnë një exploit funksional që mundëson marrjen e të drejtave root duke manipuluar argumentet e linjës së komandës gjatë nisjes së utilitarit su.
Vulnerabiliteti shkaktohet nga mbushja e tamponit në funksionin __vsyslog_internal(), i përdorur gjatë thirrjeve të funksioneve syslog() dhe vsyslog(). Problemi ndodh për shkak të një gabimi gjatë përpjekjes për të shfaqur përmes makros SYSLOG_HEADER një emër aplikacioni shumë të gjatë. Gjatë përpjekjes për të zgjeruar tamponin me një emër të gjatë, ndodh një dështim, pas të cilit të dhënat shkruhen në tamponin e vjetër me madhësi më të vogël.
Gjatë organizimit të një sulmi përmes utilitarit su, sulmuesi mund të ndryshojë emrin e procesit gjatë nisjes së aplikacionit duke zëvendësuar vlerën argv[0], e cila përdoret për të marrë informacion mbi emrin e programit gjatë shfaqjes në log, duke arritur një rishkrim të kontrolluar të të dhënave jashtë tamponit të ndarë. Më pas, mbushja mund të përdoret për të rishkruar strukturën nss_module në bibliotekën nss për të krijuar një bibliotekë të ndarë dhe për ta ngarkuar atë me të drejtat root.
Problemi shfaqet që nga versioni i glibc 2.37, i publikuar në gusht 2022 dhe përfshin një ndryshim që trajton situatën e përpjekjes për të shkruar mesazhe shumë të mëdha. Ndryshimi që sjell vulnerabilitetin është bërë backport në degën glibc 2.36 dhe në paketat e distribucioneve me versione më të vjetra të glibc, pasi ndreqja e shënuar eliminonte vulnerabilitetin CVE-2022-39046, i cili çonte në rrjedhjen e të dhënave nga kupa. Ka ndodhur që ndreqja e një vulnerabiliteti jo të rrezikshëm solli në shfaqjen e një problemi kritik. Shënim se një vulnerabilitet i ngjashëm në funksionin vsyslog() nga biblioteka libc 5.4.3 është raportuar që nga viti 1997.
Prania e vulnerabilitetit është konfirmuar në Debian 12/13, Ubuntu 23.04/23.10 dhe Fedora 37-39. Funksionimi i exploitit për të marrë të drejtat root nga një përdorues jo me privilegje është demonstruar në një mjedis të rinovuar plotësisht të Fedora 38 me të gjitha mekanizmat e mbrojtjes të aktivizuara në konfigurimet e paracaktuar. Vulnerabiliteti mund të eksploatohet vetëm lokal, pasi kërkon dërgimin e më shumë se 1024 byte përmes parametrave argv[0] ose argumentit ident në funksionin openlog().
Një ndreqje e vulnerabilitetit është përfshirë disa orë më parë në bazën e kodit Glibc dhe do të përfshihet në përditësimin e nesërm të Glibc 2.39, përveç ndreqjes së dy vulnerabiliteteve të tjera (CVE-2023-6779, CVE-2023-6780) që gjithashtu prekin kodin __vsyslog_internal() dhe shkaktojnë mbushje të tamponit. Për më tepër, kompania Qualys ka paralajmëruar për identifikimin e mbushjes së tamponit në implementimin e funksionit qsort(), i cili nuk është klasifikuar nga zhvilluesit e Glibc si një vulnerabilitet, pasi eksploatimi nënkupton përdorimin si argument një funksion krahasimi jashtëzakonisht të çuditshëm, që kthen ndryshimin e parametrave të krahasuar.
Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Протестировать подверженность системы уязвимости можно следующей командой: $ (exec -a «`printf ‘%0128000x’ 1`» /usr/bin/su < /dev/null)
Burimi: opennet.ru
