Ranjivost u eBPF-u omogućuje zaobilaženje zaštite od Spectre napada

Jučer smo ovdje na blogu objavili vijesti o Aya, knjižnica za stvaranje eBPF upravljačkih programa u Rustu i je li svrha ovoga stvoriti sigurnije upravljačke programe ili Prossimo projekt za osiguravanje memorije Linux jezgre s Rustom (dva sjajna projekta o kojima će se puno razgovarati u sljedećih mjeseci).

I to je u kratkom vremenu zabilježene su razne ranjivosti u kojem iskoristite greške u eBPF-u i da je to problem u kojem programeri kernela nisu prestali raditi i možda je Rust rješenje.

Razlog dodirivanja ove teme je taj nedavno je objavljena vijest koju su identificirali "Ostala" ranjivost u Linux jezgri (CVE-2021-33624) za zaobilaženje zaštite od ranjivosti klase Spectre, budući da to omogućuje upotrebu podsustava eBPF kako bi se mogao odrediti sadržaj memorije kao rezultat stvaranja uvjeta za špekulacije izvršavanja određenih operacija.

Spominje se da je ranjivost uzrokovan je neuspjesima u provjeri, koji se koristi za otkrivanje pogrešaka i nevaljanih aktivnosti u BPF programima. Provjerivač navodi moguće putove izvođenja koda, ali zanemaruje sve mogućnosti grananja koje nisu valjane sa stajališta semantike arhitekture skupa naredbi.

Prilikom izvođenja BPF programa, procesor pogrešno može predvidjeti mogućnosti grananja koje verifikator nije uzeo u obzir i izvršiti ih u spekulativnom načinu.

Na pogođenim sustavima, neprivilegirani BPF program može iskoristiti ovu ranjivost za filtriranje sadržaja proizvoljne memorije jezgre (a time i sve fizičke memorije) kroz bočni kanal.

Npr. kada analizira operaciju "učitavanja", verifikator pretpostavlja da uputa koristi registar s adresom čija je vrijednost uvijek u navedenim granicama, ali napadač može stvoriti uvjete pod kojim procesor će špekulativno pokušati obaviti trgovinu s adresom koja ne udovoljava uvjetima provjere.

Napad Spectre zahtijeva prisutnost određene skripte u privilegiranom kodu, što dovodi do spekulativnog izvršavanja uputa. Manipuliranjem BPF programa koji se predaju na izvršenje, moguće je generirati takve upute u eBPF i filtrirati sadržaj memorije jezgre i proizvoljna područja fizičke memorije kroz bočne kanale.

Osim toga, možete označiti bilješku o utjecaju na izvedbu imovine za zaštitu od klase ranjivosti Spectre.

Ova bilješka sažima rezultate optimizacija za otklanjanje pogrešaka rr (Snimanje i ponovna reprodukcija), koju je jednom stvorila Mozilla za otklanjanje pogrešaka u Firefoxu teško ponovljivih pogrešaka. Keširanje sistemskih poziva korištenih za provjeru postojanja direktorija smanjilo je rad "rr izvora" za testni projekt s 3 minute 19 sekundi na 36 sekundi.

Autor optimizacije odlučio je provjeriti koliko će se promijeniti performanse nakon onemogućavanja zaštite Spectre. Nakon pokretanja sustava s parametrom "ublažavanje = isključeno", vrijeme izvršavanja "rr izvora" bez optimizacije bilo je 2 minute 5 sekundi (1.6 puta brže), a s optimizacijom 33 sekunde (9% brže).

Znatiželjno, onemogućavanje Spectre zaštite ne samo da je smanjilo vrijeme izvršenja koda razine jezgre u 1.4 puta (od 2 min 9s do 1 min 32s), također je prepolovio vrijeme izvršenja u korisničkom prostoru (s 1 min 9 na 33 s), vjerojatno zbog smanjenja učinkovitosti CPU predmemorija i TLB se resetiraju kada je omogućena Spectre zaštita.

Problem se pojavio od izdavanja jezgre 4.15 i je fiksiran u obliku zakrpa, koji trenutno još uvijek ne dolaze u sve distribucije, pa se preporučuje korisnicima da ovih dana izvrše relevantna ažuriranja čim prime obavijesti.

Si želite znati više o tome, možete provjeriti detalje U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.