Google demonstreerib Spectre'i haavatavuste kasutamist brauseris JavaScripti abil

Google avaldas hiljuti mitu prototüüpset ärakasutamist, mis demonstreerivad Spectre'i klassi haavatavuste ärakasutamise võimalust JavaScripti koodi käivitamise teel brauseris ilma eelnevalt lisatud turvameetmeid läbimata.

Riskipaake saab kasutada juurdepääsuks protsessi mälule , mis töötleb praegusel vahelehel veebisisu . Riskipaagi funktsionaalsuse testimiseks käivitati lekkinud lehe veebisait ja toimingu loogikat kirjeldav kood avaldati GitHubis.

Kavandatud prototüüp on loodud ründama Intel Core i7-6500U protsessoritega süsteeme Linuxi ja Chrome 88 keskkonnas, kuigi see ei välista võimalust teha muudatusi, et rünnakut teistes keskkondades kasutada.

Toimimismeetod ei ole Inteli protsessoritele spetsiifiline : pärast asjakohast kohandamist kinnitati, et rünnak töötab teiste tootjate protsessoritega süsteemides, sealhulgas ARM-arhitektuuril põhinevas Apple M1-s. Pärast väiksemaid kohandusi töötab rünnak ka teistes Chromiumi mootoril põhinevates operatsioonisüsteemides ja brauserites.

Keskkonnas, mis põhineb standardsetel Chrome 88 ja Intel Skylake protsessoritel, saavutasime praegusel Chrome'i vahekaardil (renderdamisprotsessis) veebisisu renderdamise eest vastutava protsessi andmete lekke kiirusega 1 kilobait sekundis. Lisaks töötati välja alternatiivsed prototüübid, näiteks ekspluateerimine, mis võimaldab vähenenud stabiilsuse hinnaga suurendada jõudluse kasutamisel lekkemäära 8 kB / s-ni. Nüüd () taimer 5 mikrosekundi (0.005 millisekundi) täpsusega ). Samuti töötati välja üks millisekundiline taimeriga töötav variant, mida saaks kasutada teise protsessi mälule juurdepääsu korraldamiseks kiirusega umbes 60 baiti sekundis.

Avaldatud demokood koosneb kolmest osast:

  • Esimene osa kalibreerige taimer tööaja hindamiseks protsessori vahemällu jäänud andmete hankimiseks vajalike toimingute arv protsessori käskude spekulatiivse täitmise tulemusena.
  • Teine osa Määrab JavaScripti massiivi eraldamisel kasutatava mälu paigutuse.
  • Kolmas osa kasutab Spectre haavatavust otseselt mälu sisu määramiseks teatud toimingute spekulatiivse täitmise tingimuste loomise tulemusena, mille protsessor pärast ebaõnnestunud prognoosi määramist viskab, kuid täitmisjäljed lahendatakse jagatud vahemälus ja neid saab taastada meetodid vahemälu sisu määramiseks kolmandate osapoolte kanalite abil, mis analüüsivad vahemällu salvestatud ja vahemällu salvestamata andmetele juurdepääsu aja muutumist.

Pakutud ärakasutamise tehnika võimaldab loobuda performance.now() API kaudu saadaolevatest ülitäpsetest taimeritest ja ilma SharedArrayBufferi tüübi toeta, mis võimaldab luua massiive jagatud mälus.

Kasutamine hõlmab Spectre'i seadet, mis põhjustab kontrollitud spekulatiivse koodi käivitamise, ja külgkanali lekkeanalüsaatorit, mis määrab, millised andmed on spekulatiivse käivitamise ajal vahemällu salvestatud.

Vidin on rakendatud JavaScripti massiivi abil, milles püütakse juurde pääseda puhvri piiridest väljaspool asuvale alale , mis mõjutab haru ennustusploki olekut kompilaatori lisatud puhvri suuruse kontrolli tõttu (protsessor teostab spekulatiivselt varajase juurdepääsu, kuid taastab oleku pärast kontrollimist).

Vahemälu sisu analüüsimiseks ebapiisava taimeri täpsuse tingimustes pakuti välja meetod, mis petab protsessorites kasutatava Tree-PLRU vahemälu andmete väljatõstmise strateegia ja võimaldab tsüklite arvu suurendades oluliselt suurendada erinevuse aega, kui väärtus tagastatakse vahemälust ja vahemälus väärtuse puudumisel.

Google on avaldanud Spectre-klassi haavatavuste abil rünnakute teostatavuse demonstreerimiseks ja veebiarendajate julgustamiseks kasutama tehnikaid, mis minimeerivad selliste rünnakute riske.

Samal ajal usub Google, et ilma pakutava prototüübi olulise ülevaatamiseta on võimatu luua universaalseid ekspluateerimisi, mis oleksid valmis mitte ainult demonstratsiooniks, vaid ka laialdaseks kasutamiseks.

Allikas: https://security.googleblog.com


Lisa eelistatud allikana Google'is