Ranjivost u mehanizmu spekulativnog izvršenja AMD procesora

Projekat Grsecurity je objavio detalje i demonstraciju metode napada na novu ranjivost (CVE-2021-26341) u AMD procesorima u vezi sa spekulativnim izvršavanjem instrukcija nakon bezuslovnih operacija unapred. Ako je napad uspješan, ranjivost omogućava da se odredi sadržaj proizvoljnih memorijskih područja. Na primjer, istraživači su pripremili eksploataciju koja im omogućava da odrede raspored adrese i zaobiđu zaštitni mehanizam KASLR (kernel memory randomization) izvršavanjem neprivilegiranog koda u podsistemu ePBF kernela. Ne mogu se isključiti drugi scenariji napada koji bi mogli dovesti do curenja sadržaja memorije kernela.

Ranjivost vam omogućava da stvorite uslove pod kojima procesor, tokom preventivnog izvršavanja, spekulativno obrađuje instrukciju odmah nakon instrukcije za skok u memoriji (SLS, Straight Line Speculation). Štaviše, takva optimizacija radi ne samo za operatore uslovnog skoka, već i za instrukcije koje podrazumevaju direktan bezuslovni skok, kao što su JMP, RET i CALL. Slijedeći instrukcije bezuvjetnog skoka, mogu se postaviti proizvoljni podaci koji nisu namijenjeni za izvršenje. Nakon što utvrdi da grana ne uključuje izvršenje sljedeće instrukcije, procesor jednostavno vraća stanje i ignorira spekulativno izvršenje, ali trag izvršenja instrukcije ostaje u zajedničkoj keš memoriji i dostupan je za analizu korištenjem tehnika za pronalaženje bočnog kanala.

Kao i kod eksploatacije ranjivosti Spectre-v1, napad zahtijeva prisustvo određenih sekvenci instrukcija (gadžeta) u kernelu koje dovode do spekulativnog izvršenja. Blokiranje ranjivosti u ovom slučaju se svodi na identifikaciju takvih gadžeta u kodu i dodavanje dodatnih instrukcija za njih koje blokiraju spekulativno izvršenje. Uvjete za spekulativno izvršenje također mogu stvoriti neprivilegirani programi koji se pokreću u eBPF virtuelnoj mašini. Da biste blokirali mogućnost izrade gadžeta pomoću eBPF-a, preporučuje se da onemogućite neprivilegirani pristup eBPF-u u sistemu (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

Ranjivost pogađa procesore zasnovane na mikroarhitekturi Zen1 i Zen2, uključujući prvu i drugu generaciju procesora AMD EPYC i AMD Ryzen Threadripper, kao i AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadri PRO i APU serija procesora A. Za blokiranje špekulativnog izvršavanja instrukcija, preporučuje se pozivanje INT3 ili LFENCE instrukcija nakon operacija grananja (RET, JMP, CALL).

izvor: opennet.ru

Dodajte komentar