Ranjivost u spekulativnom mehanizmu izvršavanja AMD procesora

Projekt Grsecurity objavio je detalje i demonstraciju metode napada za novu ranjivost (CVE-2021-26341) u AMD procesorima koja se odnosi na spekulativno izvršavanje instrukcija nakon bezuvjetnih operacija naprijed. Ako je napad uspješan, ranjivost omogućuje određivanje sadržaja proizvoljnih memorijskih područja. Na primjer, istraživači su pripremili eksploataciju koja im omogućuje određivanje rasporeda adresa i zaobilaženje KASLR (randomizacija memorije kernela) zaštitnog mehanizma izvršavanjem nepovlaštenog koda u podsustavu kernela ePBF. Ne mogu se isključiti drugi scenariji napada koji bi mogli dovesti do curenja sadržaja memorije jezgre.

Ranjivost vam omogućuje stvaranje uvjeta pod kojima procesor, tijekom preventivnog izvođenja, spekulativno obrađuje instrukciju odmah nakon instrukcije skoka u memoriji (SLS, Straight Line Speculation). Štoviše, takva optimizacija radi ne samo za operatore uvjetnog skoka, već i za instrukcije koje podrazumijevaju izravni bezuvjetni 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 utvrđivanja da grananje ne uključuje izvršavanje sljedeće instrukcije, procesor jednostavno vraća stanje i ignorira spekulativno izvršenje, ali trag izvršenja instrukcija ostaje u zajedničkoj predmemorij i dostupan je za analizu korištenjem tehnika dohvaćanja bočnog kanala.

Kao i kod iskorištavanja ranjivosti Spectre-v1, napad zahtijeva prisutnost određenih nizova instrukcija (gadgeta) u kernelu koji dovode do spekulativnog izvršenja. Blokiranje ranjivosti u ovom slučaju svodi se na identificiranje takvih gadgeta u kodu i dodavanje dodatnih uputa u njih koje blokiraju spekulativno izvršenje. Uvjete za špekulativno izvršenje mogu stvoriti i neprivilegirani programi koji se izvode u eBPF virtualnom stroju. Kako biste blokirali mogućnost konstruiranja gadgeta pomoću eBPF-a, preporučuje se onemogućiti nepovlašteni pristup eBPF-u u sustavu (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

Ranjivost utječe na procesore temeljene na Zen1 i Zen2 mikroarhitekturi, 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 Threadripper PRO i APU serija procesora A. Za blokiranje spekulativnog izvršavanja instrukcija, preporučuje se pozivanje INT3 ili LFENCE instrukcija nakon operacija grananja (RET, JMP, CALL).

Izvor: opennet.ru

Dodajte komentar