Linuxi tuumas avastati kaks haavatavust, mis vĂ”imaldavad eBPF-ala kasutamist Spectre v4 (SSB, Speculative Store Bypass) rĂŒnnakute kaitse ĂŒmbersuunamiseks. Kasutades privilgeeritud BPF-programmi, saab rĂŒndaja luua tingimused teatud toimingute spekulatiivseks tĂ€itmiseks ja mÀÀrata kindlaks juhuslike tuumamĂ€lu alade sisu. eBPF alamprotsessid tuumas said juurdepÀÀsu eksploiteerimise prototĂŒĂŒbile, mis demonstreerib rĂŒnnakute teostamise vĂ”imalust praktikas. Probleemid on lahendatud patch'ide vormis (1, 2), mis lisatakse jĂ€rgnevasse Linuxi tuuma vĂ€rskendusse. VÀÀriskohenduste paketid ei ole veel loodud (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).
Spectre 4 rĂŒnnakumeetod pĂ”hineb arhiivitud andmete taastamisel protsessori vahemĂ€lust pĂ€rast spekulatiivsete tehete tulemuse eemaldamist, kui töödeldakse vahelduvaid kirjutamis- ja lugemisoperatsioone, kasutades kaudset adresseerimist. Kui lugemisoperatsioon jĂ€rgneb kirjutamisoperatsioonile (nĂ€iteks mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), siis vĂ”ib lugemise aadressi nihke juba teada olla sarnaste operatsioonide tĂ€itmise tĂ”ttu (lugemisoperatsioonide teostamine toimub oluliselt sagedamini ja lugemine vĂ”ib toimuda vahemĂ€lust) ning protsessor vĂ”ib spekulatiivselt lugemist teostada enne kirjutamist, ootamata, kuni kaudse adresseerimise nihkega seondunud vÀÀrtus arvutatakse.
Kui pĂ€rast nihke arvutamist tuvastatakse mĂ€lu kirjutamise ja lugemise alade ĂŒhisosa, loob protsessor lihtsalt juba spekulatiivselt saadud lugemisresultaadi. See omadus vĂ”imaldab lugemisjuhisel ligi pÀÀseda vana vÀÀrtusele teatud aadressil samal ajal, kui salvestamise operatsioon ei ole veel lĂ”petatud. PĂ€rast ebaĂ”nnestunud spekulatiivse operatsiooni tagasilĂŒkkamist jÀÀvad vahemĂ€llu tema toimimise jĂ€ljed, mille jĂ€rel vĂ”ib selle sisu mÀÀramiseks kasutada ĂŒht meetodit, mis analĂŒĂŒsib pÀÀsuaegade muutusi vahemĂ€lustatud ja mitte-vahemĂ€lustatud andmete vahel.
Esimene haavatavus (CVE-2021-35477) on pĂ”hjustatud BPF-i programmide kontrollimise mehhanismi puudulikkusest. RĂŒnnaku Spectre 4 vastu kaitsmiseks lisab valideerija pĂ€rast potentsiaalselt probleemseid mĂ€lu salvestamise operatsioone tĂ€iendava kĂ€su, mis salvestab nullvÀÀrtuse, et tĂ”rjuda eelmiste operatsioonide jĂ€lgi. Eeldati, et nulli kirjutamise operatsioon toimub vĂ€ga kiiresti ja takistab spekulatiivset tĂ€itmist, kuna see sĂ”ltub ainult BPF-i virna nĂ€idikust. Kuid praktikas osutus vĂ”imalikuks luua tingimusi, milles spekulatiivset tĂ€itmist pĂ”hjustav kĂ€sk jĂ”uab enne tĂ”rjuvat salvestamist tĂ€ita.
Teine haavatavus (CVE-2021-3455) on seotud sellega, et BPF verifikaatori poolt tuvastatud potentsiaalselt ohtlike mÀlu kirjutamise operatsioonide puhul ei arvestata BPF-i algatamata piirkondi, mille esimene kirjutamisoperatsioon ei ole kaitstud. Selline omadus toob kaasa vÔimaluse teostada spekulatiivset lugemistoimingut, mis sÔltub algatamata mÀlu piirkonnast, enne kirjutamisjuhise tÀitmist. Uus mÀlu BPF-i kuhja jaoks eraldatakse ilma olemasoleva sisu kontrollimata ja BPF-programmi kÀivitamise eel on vÔimalik hallata seda mÀlu piirkonda, mis seejÀrel eraldatakse BPF-puhvri jaoks.
Allikas: opennet.ru
