Kasper, skener za špekulativne težave pri izvajanju kode v jedru Linuxa, je zdaj na voljo

Skupina raziskovalcev s Svobodne univerze v Amsterdamu je objavila komplet orodij Kasper, zasnovan za prepoznavanje odrezkov kode v jedru Linuxa, ki jih je mogoče uporabiti za izkoriščanje ranljivosti razreda Spectre, ki jih povzroči špekulativno izvajanje kode na procesorju. Izvorna koda za komplet orodij se distribuira pod licenco Apache 2.0.

Spomnimo se, da je za izvedbo napadov, kot je Spectre v1, ki omogočajo določanje vsebine pomnilnika, potrebna prisotnost določenega zaporedja ukazov (gadgetov) v privilegirani kodi, kar vodi do špekulativnega izvajanja navodil. . Za namene optimizacije procesor začne izvajati takšne pripomočke v špekulativnem načinu, nato ugotovi, da predvidevanje razvejanja ni bilo upravičeno, in povrne operacije v prvotno stanje, vendar podatki, obdelani med špekulativnim izvajanjem, končajo v predpomnilniku in mikroarhitekturnih medpomnilnikih ter je na voljo za pridobitev od njih z uporabo različnih metod določanja preostalih podatkov prek kanalov tretjih oseb.

Prej razpoložljiva orodja za skeniranje pripomočkov za ranljivost Spectre, ki so temeljila na iskanju tipičnih vzorcev, so pokazala zelo visoko stopnjo lažno pozitivnih rezultatov, medtem ko so manjkali številni resnični pripomočki (poskusi so pokazali, da 99 % pripomočkov, identificiranih s takšnimi orodji, ni bilo mogoče uporabiti za napade , 33 % delujočih pripomočkov, ki bi lahko povzročili napad, pa niso opazili).

Da bi izboljšal kakovost prepoznavanja problematičnih pripomočkov, Kasper modelira ranljivosti, ki jih lahko napadalec izkoristi na vsakem koraku izvajanja napadov razreda Spectre – problemi, ki omogočajo nadzor podatkov, so modelirani (na primer zamenjava podatkov napadalca v mikroarhitekturne strukture za vplivanje na poznejšo špekulativno izvedbo z uporabo napadi razreda LVI), pridobijo dostop do zaupnih informacij (na primer, ko gredo čez meje medpomnilnika ali uporabljajo pomnilnik, potem ko je ta osvobojen) in uhajajo zaupne informacije (na primer z analizo stanja predpomnilnika procesorja ali z uporabo metode MDS).

Kasper, skener za špekulativne težave pri izvajanju kode v jedru Linuxa, je zdaj na voljo

Pri testiranju je jedro povezano s knjižnicami izvajalnega okolja Kasper in izvaja preverjanja na ravni LLVM. Postopek preverjanja posnema špekulativno izvajanje kode, izvedeno z uporabo mehanizma za obnovitev kontrolne točke, ki specifično izvede nepravilno predvideno vejo kode in se nato povrne v prvotno stanje pred začetkom veje. Kasper prav tako poskuša simulirati različne ranljivosti programske in strojne opreme, analizira vpliv arhitekturnih in mikroarhitekturnih učinkov ter izvaja fuzz testiranje možnih dejanj napadalcev. Za analizo tokov izvajanja se uporabljajo vrata DataFlowSanitizer za jedro Linuxa, za testiranje fuzzinga pa se uporablja spremenjena različica paketa syzkaller.

Kasper, skener za špekulativne težave pri izvajanju kode v jedru Linuxa, je zdaj na voljo

Skeniranje jedra Linuxa s programom Kasper je identificiralo 1379 prej neznanih pripomočkov, ki lahko povzročijo uhajanje podatkov med špekulativnim izvajanjem navodil. Opozoriti je treba, da morda le nekateri od njih predstavljajo resnične težave, toda da bi dokazali, da obstaja resnična nevarnost, in ne le teoretična, je bil za enega od problematičnih fragmentov kode razvit delujoč prototip izkoriščanja, ki vodi do informacij uhajanje iz pomnilnika jedra.

Vir: opennet.ru

Dodaj komentar