Qualys on tuvastanud ohtliku haavatavuse (CVE-2023-6246) standardses C-teegis Glibc, mis võimaldab SUID-rakenduste käivitamisest manipuleerimise kaudu saavutada oma koodi täitmist suurenenud õigustega. Uurijatel õnnestus välja töötada toimiv eksploit, mis võimaldab saada root-kasutaja õigusi, manipuleerides käsurea argumentidega utiliidi su käivitamisel.
Haavatavus tuleneb puhverülevoolust funktsioonis __vsyslog_internal(), mida kasutatakse syslog() ja vsyslog() funktsioonide kutsumisel. Probleem tekib makro SYSLOG_HEADER puhul liiga pika rakenduse nime väljundi katsetamisel. Pufferi suuruse suurendamise katse, arvestades pika nimega, ebaõnnestub, mille tagajärjel kirjutatakse andmed algse väiksema suurusega vana pufferisse.
Rünnaku korraldamisel läbi utiliidi su võib ründaja protsessi nime muuta rakenduse käivitamisel, asendades argv[0] väärtuse, mida kasutatakse programmi nime teabe saamiseks logides, ja saavutada kontrollitav andmete ülekirjutamine etteantud puhvrist väljaspool. Edasi saab puhvri ülevoolu kasutada nss-module struktuuri ülekirjutamiseks nssl-teegis, et luua jagatud teek ja laadida see root-õigustega.
Probleem ilmneb alates glibc 2.37 väljaandest, mis avaldati 2022. aasta augustis ja sisaldab muudatust, mis käsitleb liiga suurte sõnumite kirjutamise katset. Haavatavuse tekitav parandus viidi tagasi glibc 2.36 harusse ja enamvanade glibc versioonidega jagatavate pakettide hulka, kuna mainitud parandus kõrvaldas CVE-2022-39046 haavatavuse, mis põhjustas kuhja andmete leket. Selgus, et ohtlike haavatavuste kõrvaldamine tõi kaasa kriitilise probleemi. Tähelepanuväärne on, et sarnane haavatavus funktsioonis vsyslog() libc teegis 5.4.3 raporteeriti juba 1997. aastal.
Haavatavuse olemasolu on kinnitatud Debian 12/13, Ubuntu 23.04/23.10 ja Fedora 37-39. Ekspluateerimise töö, et anda tavakasutajale root-õigused, on demonstreeritud täielikult uuendatud Fedora 38 keskkonnas, kus on kõik vaikeseadete kaitsemehhanismid sisse lülitatud. Haavatavust saab kasutada ainult lokaalselt, kuna see nõuab üle 1024 baitide edastamist läbi argv[0] parameetri või ident argument funktsioonis openlog().
Haavatavuse parandamine lisati mõned tunnid tagasi Glibci koodibaasi ja see läheb homme käivitatava Glibc 2.39 uuendusega, koos kahe muu haavatavuse (CVE-2023-6779, CVE-2023-6780) parandamisega, mis mõjutavad ka koodi __vsyslog_internal() ja võivad põhjustada puhversäilituse ületäitumist. Veelgi enam, ettevõte Qualys on hoiatanud puhveri ületäitumise avastamisest qsort() funktsiooni rakenduses, mis ei ole Glibci arendajate poolt tunnistatud haavatavuseks, kuna ekspluateerimine eeldab, et qsort() kutsumise korral kasutatakse mittetüüpilist võrdlemise funktsiooni, mis tagastab võrreldavate parameetrite erinevuse.
Turvakahtluste kõrvaldamise staatust distributsioonides saab hinnata järgmistelt lehtedelt: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Süsteemi haavatavuse testimiseks saab kasutada järgmist käsku: $ (exec -a "`printf ‘28000x’ 1`" /usr/bin/su < /dev/null)
Allikas: opennet.ru
