Kitas AMD procesorių pažeidžiamumas buvo nustatytas, leidžiantis Meltdown atakas

Graco technikos universiteto (Austrija) ir Helmholtz informacijos saugumo centro (CISPA) tyrėjų komanda atskleidė visų AMD procesorių pažeidžiamumą (CVE-2021-26318), leidžiantį atlikti Meltdown klasės šalutinį kanalų atakų (iš pradžių buvo manoma, kad AMD procesoriai nėra paveikti Meltdown pažeidžiamumo). Praktiškai ataka gali būti naudojama slaptiems ryšio kanalams sukurti, branduolio veiklai stebėti arba informacijai apie branduolio atmintyje esančius adresus gauti, siekiant apeiti KASLR apsaugą išnaudojant branduolio pažeidžiamumą.

AMD mano, kad nedera imtis specialių priemonių problemai užblokuoti, nes pažeidžiamumas, kaip ir panaši ataka, aptikta rugpjūčio mėn., realiomis sąlygomis yra mažai naudingas, yra ribojamas dabartinių proceso adresų erdvės ribų ir reikalauja tam tikrų paruoštos instrukcijų sekos (programėlės) branduolyje. Norėdami pademonstruoti ataką, mokslininkai į savo branduolio modulį įkėlė dirbtinai pridėtą programėlę. Realiomis sąlygomis užpuolikai gali naudoti, pavyzdžiui, reguliariai iškylančius eBPF posistemio pažeidžiamumus, kad pakeistų reikiamas sekas.

Siekdama apsisaugoti nuo šio naujo tipo atakų, AMD rekomendavo naudoti saugaus kodavimo metodus, padedančius blokuoti Meltdown atakas, pvz., naudoti LFENCE instrukcijas. Problemą nustatę mokslininkai rekomenduoja įjungti griežtesnę atminties puslapių lentelės izoliaciją (KPTI), kuri anksčiau buvo naudojama tik „Intel“ procesoriams.

Eksperimento metu mokslininkams pavyko nutekėti informaciją iš branduolio į procesą vartotojo erdvėje 52 baitų per sekundę greičiu, atsižvelgiant į tai, kad branduolyje yra programėlė, kuri atlieka operaciją „if (offset < data_len) tmp = LUT[duomenys[pokrypis] * 4096];” . Buvo pasiūlyta keletas būdų, kaip gauti informaciją šoniniais kanalais, kuri spekuliacinio vykdymo metu patenka į talpyklą. Pirmasis metodas pagrįstas procesoriaus komandos „PREFETCH“ (Prefetch+Time) vykdymo laiko nuokrypių analize, o antrasis – energijos suvartojimo pokyčio keitimu vykdant „PREFETCH“ (Prefetch+Power).

Prisiminkite, kad klasikinis „Meltdown“ pažeidžiamumas yra pagrįstas tuo, kad spekuliacinio instrukcijų vykdymo metu procesorius gali pasiekti privačią duomenų sritį ir atmesti rezultatą, nes nustatytos privilegijos draudžia tokią prieigą vartotojo procesui. Programoje spekuliatyviai vykdomas blokas nuo pagrindinio kodo atskiriamas sąlygine šaka, kuri realiomis sąlygomis visada suveikia, bet dėl ​​to, kad sąlyginiame sakinyje naudojama apskaičiuota reikšmė, kurios procesorius nežino prevencinio vykdymo metu. kodas, visi filialų pasirinkimai vykdomi spekuliaciniu būdu.

Kadangi spekuliaciniu būdu vykdomos operacijos naudoja tą pačią talpyklą kaip ir įprastai vykdomos instrukcijos, spekuliacinio vykdymo metu galima talpykloje nustatyti žymeklius, atspindinčius atskirų bitų turinį privačioje atminties srityje, o tada įprastai vykdomame kode, kad būtų nustatyta jų vertė pagal laiką. analizės prieigas prie talpykloje saugomų ir neskelbtų duomenų.

Šaltinis: opennet.ru

Добавить комментарий