Ranjivosti u eBPF podsistemu koje omogućavaju zaobilaženje zaštite od Spectre napada

Identificirana je ranjivost u jezgru Linuxa (CVE-2021-33624) koja omogućava korištenje eBPF podsistema za zaobilaženje zaštite od ranjivosti klase Spectre, koje omogućavaju određivanje sadržaja memorije kao rezultat stvaranja uslova za spekulativno izvršenje određenih operacija. Spectre napad zahtijeva prisustvo određenog niza naredbi u privilegovanom kodu koji vodi spekulativnom izvršavanju instrukcija. Manipulisanjem BPF programima koji se šalju na izvršenje, moguće je generisati slične instrukcije u eBPF-u i propuštati sadržaj kernel memorije i proizvoljnih područja fizičke memorije kroz bočne kanale.

Ranjivost je uzrokovana nedostacima u verifikatoru, koji se koristi za otkrivanje grešaka i neprihvatljivih aktivnosti u BPF programima. Verifikator nabraja moguće puteve izvršenja koda, ali preskače opcije grananja koje su neprihvatljive sa stanovišta semantike arhitekture skupa instrukcija. Prilikom izvršavanja BPF programa, takve opcije grananja koje verifikator ne uzima u obzir mogu biti pogrešno predviđene od strane procesora i izvršene u spekulativnom načinu. Na primjer, kada analizira operaciju “učitavanja”, verifikator očekuje da instrukcija koristi registar sa adresom čija je vrijednost uvijek unutar navedenih granica, ali napadač može stvoriti uslove pod kojima će procesor pokušati spekulativno izvršiti operaciju sa adresa koja ne ispunjava uslove verifikacije.

Problem se javlja od izdavanja kernela 4.15 i popravljen je u vidu zakrpa (1, 2, 3, 4). Ranjivost ostaje neispravljena u distribucijama (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Osim toga, možete primijetiti napomenu o utjecaju alata na performanse za zaštitu od Spectre ranjivosti. Bilješka sumira rezultate optimizacije rr (Record and Replay) programa za otklanjanje grešaka, koji je nekada bio kreiran u Mozilli za otklanjanje grešaka koje se teško ponavljaju u Firefoxu. Keširanje sistemskih poziva korištenih za provjeru postojanja direktorija smanjilo je operaciju "rr sources" za testni projekat sa 3 minute 19 sekundi na 36 sekundi.

Autor optimizacije odlučio je provjeriti kako će se performanse promijeniti nakon onemogućavanja Spectre zaštite. Nakon pokretanja sistema sa parametrom “mitigations=off”, vrijeme izvršavanja “rr sources” bez optimizacije iznosilo je 2 minute i 5 sekundi (1.6 puta brže), a sa optimizacijom 33 sekunde (9% brže). Zanimljivo je da onemogućavanje Spectre zaštite ne samo da je smanjilo vrijeme izvršavanja koda na nivou kernela za 1.4 puta (sa 2m9s na 1m32s), već je i prepolovilo vrijeme izvršavanja u korisničkom prostoru (sa 1m9s na 0m33s), vjerovatno zbog smanjene efikasnosti rada CPU keš memorije i TLB-a. resetuje kada je zaštita Spectre omogućena.

izvor: opennet.ru

Dodajte komentar