Ranljivost v mehanizmu špekulativnega izvajanja procesorjev AMD

Projekt Grsecurity je objavil podrobnosti in predstavitev metode napada za novo ranljivost (CVE-2021-26341) v procesorjih AMD, povezano s špekulativnim izvajanjem navodil po brezpogojnih operacijah naprej. Če je napad uspešen, ranljivost omogoča določitev vsebine poljubnih pomnilniških območij. Raziskovalci so na primer pripravili izkoriščanje, ki jim omogoča, da določijo postavitev naslova in obidejo zaščitni mehanizem KASLR (kernel memory randomization) z izvajanjem neprivilegirane kode v podsistemu jedra ePBF. Ni mogoče izključiti drugih scenarijev napadov, ki bi lahko povzročili uhajanje vsebine pomnilnika jedra.

Ranljivost vam omogoča, da ustvarite pogoje, pod katerimi procesor med preventivnim izvajanjem špekulativno obdela navodilo, ki takoj sledi navodilu skoka v pomnilniku (SLS, Straight Line Speculation). Poleg tega takšna optimizacija ne deluje samo za operaterje pogojnega skoka, temveč tudi za navodila, ki pomenijo neposreden brezpogojni skok, kot so JMP, RET in CALL. Po navodilih za brezpogojni skok se lahko postavijo poljubni podatki, ki niso predvideni za izvedbo. Po ugotovitvi, da veja ne vključuje izvedbe naslednjega ukaza, procesor preprosto vrne stanje nazaj in ignorira špekulativno izvajanje, vendar sled izvajanja ukaza ostane v skupnem predpomnilniku in je na voljo za analizo z uporabo tehnik pridobivanja stranskega kanala.

Tako kot pri izkoriščanju ranljivosti Spectre-v1 napad zahteva prisotnost določenih zaporedij navodil (pripomočkov) v jedru, ki vodijo do špekulativne izvedbe. Blokiranje ranljivosti v tem primeru pomeni prepoznavanje takšnih pripomočkov v kodi in dodajanje dodatnih navodil, ki blokirajo špekulativno izvajanje. Pogoje za špekulativno izvajanje je mogoče ustvariti tudi z neprivilegiranimi programi, ki se izvajajo v virtualnem stroju eBPF. Če želite blokirati možnost izdelave pripomočkov z uporabo eBPF, je priporočljivo onemogočiti neprivilegiran dostop do eBPF v sistemu (»sysctl -w kernel.unprivileged_bpf_disabled=1«).

Ranljivost vpliva na procesorje, ki temeljijo na mikroarhitekturi Zen1 in Zen2, vključno s prvo in drugo generacijo procesorjev AMD EPYC in AMD Ryzen Threadripper ter AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Procesorji serije PRO in APU A. Za blokiranje špekulativnega izvajanja navodil je priporočljivo, da po operacijah vej (RET, JMP, CALL) pokličete navodila INT3 ali LFENCE.

Vir: opennet.ru

Dodaj komentar