AMD protsessorites on tuvastatud veel üks haavatavus, mis võimaldab Meltdowni rünnakuid

Grazi tehnikaülikooli (Austria) ja Helmholtzi infoturbekeskuse (CISPA) teadlaste meeskond on avalikustanud kõigis AMD protsessorites haavatavuse (CVE-2021-26318), mis võimaldab teostada Meltdown-klassi külgmisi kanalirünnakud (esialgu eeldati, et AMD protsessoreid Meltdowni haavatavus ei mõjuta). Praktiliselt saab ründe abil luua varjatud sidekanaleid, jälgida tegevust tuumas või hankida teavet kerneli mälus olevate aadresside kohta, et KASLR-i kaitsest mööda hiilida, kasutades samal ajal tuuma haavatavusi.

AMD peab erimeetmete võtmist probleemi tõkestamiseks kohatuks, kuna haavatavusest, nagu augustis avastatud sarnasest rünnakust, on reaalsetes tingimustes vähe kasu, see on piiratud protsessi aadressiruumi praeguste piiridega ja nõuab teatud valmis käskude jadad (vidinad) tuumas. Rünnaku demonstreerimiseks laadisid teadlased oma tuumamooduli kunstlikult lisatud vidinaga. Reaalsetes tingimustes saavad ründajad vajalike järjestuste asendamiseks kasutada näiteks eBPF-i alamsüsteemis regulaarselt avanevaid turvaauke.

Seda uut tüüpi rünnakute eest kaitsmiseks soovitas AMD kasutada turvalisi kodeerimistehnikaid, mis aitavad blokeerida Meltdowni rünnakuid, näiteks kasutada LFENCE juhiseid. Probleemi tuvastanud teadlased soovitavad lubada rangemat mälulehtede tabeli eraldamist (KPTI), mida varem kasutati ainult Inteli protsessorite jaoks.

Katse käigus õnnestus teadlastel lekitada teavet kernelist kasutajaruumis asuvasse protsessi kiirusega 52 baiti sekundis, arvestades vidina olemasolu tuumas, mis sooritab toimingu „if (nihe < data_len) tmp = LUT[andmed[nihe] * 4096];” . Spekulatiivse täitmise ajal vahemällu sattuva teabe hankimiseks külgkanalite kaudu on pakutud mitmeid meetodeid. Esimene meetod põhineb protsessori käsu "PREFETCH" (Eeltõmme+Aeg) täitmise aja kõrvalekallete analüüsimisel ja teine ​​​​meetodil "PREFETCH" (Prefetch+Power) täitmisel energiatarbimise muutuse muutmine.

Tuletame meelde, et klassikaline Meltdowni haavatavus põhineb asjaolul, et käskude spekulatiivse täitmise ajal pääseb protsessor ligi privaatsele andmealale ja seejärel tulemusest loobuda, kuna seatud privileegid keelavad sellise juurdepääsu kasutajaprotsessile. Spekulatiivselt täidetav plokk eraldatakse programmis põhikoodist tingimusliku haruga, mis reaalsetes tingimustes alati käivitub, kuid tänu sellele, et tingimuslause kasutab arvutatud väärtust, mida protsessor ei tea ennetava täitmise ajal. koodi, kõik haru valikud tehakse spekulatiivselt.

Kuna spekulatiivselt täidetavad toimingud kasutavad sama vahemälu kui tavaliselt täidetavad käsud, on spekulatiivse täitmise ajal võimalik seada vahemällu markereid, mis kajastavad üksikute bittide sisu privaatmälu piirkonnas ja seejärel tavapäraselt täidetavas koodis, et määrata nende väärtus ajastuse abil. analüüsijuurdepääs vahemällu salvestatud ja vahemällu salvestamata andmetele.

Allikas: opennet.ru

Lisa kommentaar