Ranljivost v eBPF omogoča obvodno zaščito pred napadi Spectre

Včeraj smo tukaj na blogu objavili novice o Aya, knjižnica za ustvarjanje gonilnikov eBPF v Rustu in je namen tega ustvariti varnejše gonilnike ali Projekt Prossimo za zagotavljanje spomina jedra Linuxa z Rustom (dva odlična projekta, o katerih bo v naslednjih mesecih mogoče veliko govoriti).

In v kratkem času so poročali o različnih ranljivostih v kateri izkoristite napake v eBPF in da gre za težavo, pri kateri razvijalci jedra niso prenehali delovati in je morda rešitev Rust.

Razlog za dotikanje te teme je v tem pred kratkim je izšla novica, ki so jo prepoznali "Druga" ranljivost v jedru Linuxa (CVE-2021-33624) za obiti zaščito pred ranljivostmi razreda Spectre, saj to omogoča uporabo podsistema eBPF za določanje vsebine pomnilnika kot rezultat ustvarjanja pogojev za špekulacije izvajanja določenih operacij.

Omenjeno je, da ranljivost povzročajo ga napake v preverjevalniku, ki se uporablja za odkrivanje napak in neveljavnih dejavnosti v programih BPF. Preveritelj navede možne poti izvajanja kode, vendar prezre vse možnosti razvejanja, ki niso veljavne z vidika semantike arhitekture nabora ukazov.

Pri zagonu programa BPF lahko procesor napačno napove možnosti razvejanja, ki jih preveritelj ni upošteval, in jih izvede v špekulativnem načinu.

V prizadetih sistemih lahko neprivilegiran program BPF to ranljivost izkoristi za filtriranje vsebine poljubnega pomnilnika jedra (in s tem celotnega fizičnega pomnilnika) skozi stranski kanal.

Npr pri analizi operacije "obremenitve" preveritelj predpostavlja, da navodilo uporablja register z naslovom, katerega vrednost je vedno v določenih mejah, toda napadalec lahko ustvari pogoje pod katerim procesor bo špekulativno poskušal opraviti posel z naslovom, ki ne izpolnjuje pogojev za preverjanje.

Napad Spectre zahteva prisotnost določenega skripta v privilegirani kodi, kar vodi do špekulativnega izvrševanja navodil. Z manipulacijo programov BPF, ki so predani v izvajanje, je mogoče takšna navodila ustvariti v eBPF in filtrirati vsebino pomnilnika jedra in poljubna področja fizičnega pomnilnika po stranskih kanalih.

Poleg tega, lahko označite opombo o vplivu na uspešnost sredstev za zaščito pred razredom ranljivosti Spectre.

Ta opomba povzema rezultate razhroščevalna optimizacija rr (snemanje in predvajanje), ki jo je nekoč ustvarila Mozilla za odpravljanje napak v Firefoxu, ki se ponavljajo Predpomnjenje sistemskih klicev, ki se uporabljajo za preverjanje obstoja imenikov, je zmanjšalo operacijo "rr sources" za testni projekt s 3 minut 19 na 36 sekund.

Avtor optimizacije se je odločil preveriti koliko se bo spremenilo delovanje po onemogočanju zaščite Spectre. Po zagonu sistema s parametrom "ublažitve = izklop" je bil čas izvajanja "rr virov" brez optimizacije 2 minuti 5 sekund (1.6-krat hitrejši) in z optimizacijo 33 sekund (9% hitrejši).

Nenavadno, onemogočanje zaščite Spectre ne samo zmanjša čas delovanja kode na ravni jedra v 1.4-krat (od 2 min 9 s do 1 min 32 s), prepolovil je tudi čas izvajanja v uporabniškem prostoru (od 1 min 9 s do 33 s), verjetno zaradi zmanjšanja učinkovitosti CPU predpomnilnik in TLB se ponastavijo, ko je omogočena zaščita Spectre.

Težava se je pojavila od izdaje jedra 4.15 in je bil popravljen v obliki popravkov, ki trenutno še vedno ne dosežejo vseh distribucij, zato je uporabnikom priporočljivo, da te dni opravijo ustrezne posodobitve takoj, ko prejmejo obvestila.

Si želite vedeti več o tem, lahko preverite podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.