Linux'i tuuma pakutavas io_uring asĂŒnkroonse sisendi/vĂ€ljundi liideses on avastatud haavatavus (CVE-2024-0582), mis vĂ”imaldab mitteprivilegeeritud kasutajal saada sĂŒsteemis root-Ă”igused. Haavatavuse Ă€ra kasutamiseks on vajalik vaid tavaline kohalik juurdepÀÀs sĂŒsteemile, ilma et oleks vaja manipulatsioone nimede ruumidega. Praegu on avalikult saadaval töötav eksploit ning on ĂŒksikasjalikult kirjeldatud ka teine haavatavuse Ă€rakasutamise tehnika.
Haavatavus tuleneb juba vabastatud mĂ€luploki (use-after-free) juurde pÀÀsemisest io_uring alamsĂŒsteemis, mis tekib ringbufferi registreerimise ja vabastamise ajal, kui see on loodud IORING_REGISTER_PBUF_RING lipuga. Kui rakendada mmap() operatsiooni andmemĂ€lu suhtes, jÀÀb see pĂ€rast vabastamise operatsiooni tegemist (IORING_UNREGISTER_PBUF_RING) kasutaja ruumi kajastatuks. Kasutades seda omadust, suudab rĂŒndaja lugeda ja kirjutada andmeid jagatud mĂ€lu lehtedele, mis on tuumale tagasi antud.
Probleem tekkis alates Linux'i tuuma versioonist 6.4 ja on lahendatud versioonides 6.7 ja 6.6.5, samuti 6.5.0-21 tuuma paketis, mis on ette valmistatud Ubuntu 22.04 ja 23.10 jaoks. Huvi pÀrast, 'tuumas' lahendati probleem detsembris 2023, projekti Google Zero kaudu avati 8. jaanuaril hÀbitÔpperaport, mille parandatud 6.5 pakk Ubuntu jaoks koostati alles 22. veebruaril 2024. Muudes jaotustes saab parandamise ja haavatavuse jÀlgimisega tutvuda lehtedel: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.
Esimene eksploit manipuleerib suure arvu rĂŒndaja kontrolli all olevate mĂ€lu lehtede loomisega, et mÀÀrata tuuma mĂ€lu paigutust ja pÀÀseda juurde kĂ”rvalistele fĂŒĂŒsilistele mĂ€lu lehtedele, kasutades suunamarkeritena teatud viisil tĂ€idetud vĂ”rgusoklite struktuuride sisu. Eksploidis koodi kĂ€ivitamiseks kasutatakse 'gadĆŸetti' (olemasolevate tuuma kĂ€skude jada), mis toob kaasa call_usermodehelper_exec funktsiooni tĂ€itmise, mis on mĂ”eldud protsesside kĂ€ivitamiseks kasutaja ruumis tuumast.
Teine eksploit pĂ”hineb sellel, et kui kĂ”ik slab-blokid vahemĂ€lu (nĂ€iteks faili korduval avamisel) on ammendatud, siis vaba mĂ€lu lehed, millele rĂŒndaja pÀÀseb juurde, kasutatakse mĂ€lujaotuse sĂŒsteemi poolt uue slab-bloki loomiseks ja kĂ”ik uued failistruktuurid hakkavad selle bloki sisse mahtuma. SeetĂ”ttu satuvad mĂ”ned failistruktuurid mĂ€lu lehtedele, mida rĂŒndaja saab lugeda ja kirjutada. Ekspluateerimine seisneb vajaliku faili lisamises failide vahemĂ€llu ja sellega seotud failistruktuuris f_mode vĂ€ljade asendamises, mis mÀÀravad juurdepÀÀsuĂ”igused, mis vĂ”imaldab muuta vajadusel sĂŒsteemifaili, nĂ€iteks /etc/passwd, kirjutatavaks.
Allikas: opennet.ru
