PinTheft — kuues Copy Fail klassi haavatavus, mis annab Linuxis root õigused

Ava on paljastatud kuues haavatavus (1, 2-3, 4, 5), mis võimaldab mittetäieliku õigusega kohalikel kasutajatel teenida root-rekse, kirjutades andmeid lehe vahemälu. Haavatavus sai koodnimeks PinTheft. Ekspluateerimise prototüüp on saadaval. CVE-identifikaator pole veel määratud. Parandust on hetkel saadaval ainult plaastrina, mis avaldati 5. mail ning 11. mail kinnitati see netdev harusse, kuid ei ole veel kaasatud kerneli korrektsiooniväljaannetesse.

Haavatavus on olemas RDS (Reliable Datagram Sockets) võrgu protokolli teostuses, mis on mõeldud sõnumite kiireks vahetamiseks klastris, minimaalsete viivitustega ja garanteeritud kohaletoimetamisega. Rünnak on võimalik süsteemides, kus io_uring alamsüsteem on lubatud (io_uring_disabled=0) ja kernel on kompileeritud CONFIG_RDS, CONFIG_RDS_TCP ja CONFIG_IO_URING valikutega. Ekspluateerimise toimimiseks peab süsteemis olema lugemiseks saadaval SUID-root lipuga täidetav fail.

RDS_TCP tuuma mooduli automaatseks laadimiseks nõuab eksploiteerimine andmete saatmist RDS kaudu, kasutades transporti SO_RDS_TRANSPORT=2. Märgitakse, et testitud Linuxi distributsioonide seas on tuumamooduli rds vaikimisi saadaval ainult Arch Linuxis. Haavatavuse vältimiseks saab tuumamoodulite rds ja rds_tcp automaatlaadimise keelata: rmmod rds_tcp rds printf 'install rds /bin/false\ninstall rds_tcp /bin/false\n' > /etc/modprobe.d/pintheft.conf

Haavatavus tuleneb veast zerocopy mehhanismi rakenduses funktsioonis rds_message_zcopy_from_user(), mis muudab andmeid otse leheküljekaaslases, et vältida liigset puhverserverit. Vale väärtuse tõttu rm->data.op_nents väljas ei toimunud nurjumise korral puhastamist, mille tulemusel toimus mälu kahekordne vabastus (double-free). Vigase viidatud lugemise arvu tõttu sai andmeid leheküljekaaslasest üle kirjutada, manipuleerides io_uring fikseeritud puhvri viidaga.

Ülejäänud osas on eksploiteerimise mehhanism tüüpiline kõikidele sama klassi haavatavustele — ründaja suudab paigaldada suid root flag'iga programmi faili lehe vahemälu, pärast mida sisestab ta ELF-pealkirja koodi, et käivitada /usr/bin/sh. Pärast seda manipuleerimist toob programmi käivitamine mällu mitte originaalse käivitatava faili, vaid muudetud koopia lehe vahemälust. Erinevalt varasematest eksploiteerimistest on uus variant kohandatud ainult „su” utiliidi ründamiseks, kuid seda saab rakendada ka juhul, kui süsteemis on selliseid suid-programme nagu mount, passwd, chsh, newgrp, umount ja pkexec.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster