Linuxi tuuma pakutud asünkroonse sisendi/väljundi io_uring liideses on tuvastatud haavatavus (CVE-2024-0582), mis võimaldab mittepriviligeeritud kasutajal omandada süsteemis root-konto õigused. Haavatavuse ärakasutamiseks piisab tavalisest kohalikust juurdepääsust süsteemile, ilma et oleks vaja manipuleerida nimespetsiifiliste ruumidega. Praegu on avalikult saadaval töötav eksploit, samuti on üksikasjalikult kirjeldatud teine haavatavuse ärakasutamise tehnika.
Haavatavus tuleneb juba vabastatud mälu ploki (use-after-free) juurde pääsemisest io_uring alam süsteemis, mis tekib ringbufferi registreerimise ja vabastamise käigus, kui seda on loodud lipuga IORING_REGISTER_PBUF_RING. Kui teostatakse mmap() operatsioon välistatud puhvri üle, jääb see pärast vabastamise operatsiooni teostamist (IORING_UNREGISTER_PBUF_RING) kasutaja ruumi peegelduseks. Kasutades seda omadust, suudab ründaja lugeda ja kirjutada andmeid tuuma mälujaotuse süsteemi tagastatud mälu lehtedele.
Probleem ilmneb alates Linuxi versiooni 6.4 väljaandmisest ja on kõrvaldatud versioonides 6.7 ja 6.6.5, samuti Ubuntu 22.04 ja 23.10 jaoks ettevalmistatud versioonis 6.5.0-21. Tähelepanuväärne on, et põhiydarmis probleem lahendati detsembris 2023, projekti Google Zero kaudu avati teave haavatavuse signaali kohta 8. jaanuaril ning paranduspakett Ubuntu 6.5 jaoks loodi alles 22. veebruaril 2024. Muudes distributsioonides saab veaparandust ja haavatavust jälgida lehtedel: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.
Esimene eksploit manipuleerib suure hulga ründaja kontrolli all olevate mälu lehekülgede loomisega, et tuvastada mäluaadresside paigutus ydarmis ja pääseda ligipääsu naaberfüüsilistele mälu lehekülgedele, kasutades majakaks teatud viisil täidetud võrgu soklite struktuuride sisu. Eksploidis on koodi käivitamiseks kaasatud "gadget" (olekute jada, mis eksisteerib ydarmis), mis toob esile funktsiooni call_usermodehelper_exec, mis on mõeldud protsesside käivitamiseks kasutaja ruumis ydarmist.
Teine eksploit tugineb sellele, et kui kõik slab-plokid vahemälus on täis (näiteks, kui sama faili avatakse korduvalt), siis vabanenud mälu lehed, millele ründaja pääseb, kasutatakse mäluhaldussüsteemi poolt uue slab-ploki loomiseks ning kõik uued failistruktuurid hakkavad selle ploki sees paiknema. Seega satuvad mõned failistruktuurid mälu lehtedele, millele ründaja võib lugeda ja kirjutada. Ekspluateerimine seisneb sel juhul selles, et korraldatakse vajalik faili sattumine failivahemällu ja asendatakse sellega seotud failistruktuurides f_mode välja väärtus, mis määrab juurdepääsuõigused, võimaldades vajalikku süsteemifaili, näiteks /etc/passwd, kirjutamiseks kätte saada.
Allikas: opennet.ru
