Chrome-n Spectreren ahultasunak ustiatzeko teknika berria

Amerikako, Australiako eta Israelgo unibertsitateetako ikertzaile talde batek alboko kanaleko eraso-teknika berri bat proposatu du Chromium motorean oinarritutako arakatzaileetan Spectre klaseko ahultasunak ustiatzeko. Spook.js kode izena duen erasoak gunearen isolamendu mekanismoa saihesteko aukera ematen du JavaScript kodea exekutatuz eta uneko prozesuko helbide-espazio osoaren edukia irakurriz, hau da. beste fitxa batzuetan exekutatzen diren orrietako datuak atzitu, baina prozesu berean prozesatutakoak.

Chrome-k gune desberdinak prozesu desberdinetan exekutatzen dituenez, eraso praktikoak egiteko gaitasuna erabiltzaile ezberdinei beren orriak ostatatzea ahalbidetzen duten zerbitzuetara mugatzen da. Metodoak aukera ematen du, erasotzaileak bere JavaScript kodea txertatzeko aukera duen orrialde batetik, erabiltzaileak gune beretik irekitako beste orrialde batzuen presentzia zehaztea eta haietatik isilpeko informazioa ateratzea, adibidez, kredentzialak edo banku-datuak ordezkatuta. Web inprimakietako eremuak automatikoki betetzeko sistemaren bidez. Erakuspen gisa, Tumblr zerbitzuan beste norbaiten bloga nola eraso dezakezun erakusten da bere jabeak zerbitzu berean ostatatutako erasotzaileen bloga beste fitxa batean irekitzen badu.

Metodoa erabiltzeko beste aukera bat arakatzailearen gehigarrien aurkako erasoa da, eta horrek aukera ematen du, erasotzaileak kontrolatutako gehigarri bat instalatzean, beste gehigarri batzuetatik datuak ateratzeko. Adibide gisa, gehigarri gaizto bat instalatuz LastPass pasahitz kudeatzailetik isilpeko informazioa nola atera dezakezun erakusten dugu.

Ikertzaileek CPUIntel i89-7K eta i6700-7U duten sistemetan Chrome 7600n funtzionatzen duen ustiapen baten prototipoa argitaratu dute. Explotazioa sortzean, Google-k lehenago argitaratutako JavaScript kodearen prototipoak erabili ziren Spectre klaseko erasoak egiteko. Kontuan izan da ikertzaileek Intel eta Apple M1 prozesadoreetan oinarritutako sistemetarako lan-explotazioak prestatu ahal izan dituztela, memoriaren irakurketa segundoko 500 byte-ko abiaduran eta %96ko zehaztasunarekin antolatzea ahalbidetzen baitute. Suposatzen da metodoa AMD prozesadoreetan ere aplikagarria dela, baina ezin izan da guztiz funtzionala ustiapena prestatu.

Erasoa Chromium motorean oinarritutako edozein arakatzailetan aplikagarria da, Google Chrome, Microsoft Edge eta Brave barne. Metodoa Firefoxekin lan egiteko ere molda daitekeela uste dute ikertzaileek, baina Firefox motorra Chrome-tik oso desberdina denez, horrelako ustiapen bat sortzeko lana etorkizunerako geratzen da.

Argibideen exekuzio espekulatiboarekin erlazionatutako arakatzailean oinarritutako erasoetatik babesteko, Chrome-k helbide-espazioaren segmentazioa ezartzen du - sandbox isolamenduak JavaScript-ek 32 biteko erakusleekin soilik funtziona dezake eta kudeatzaileen memoria partekatzen du 4 GB-ko pila deskonektatuetan. Prozesuaren helbide-espazio osorako sarbidea emateko eta 32 biteko muga saihesteko, ikertzaileek Type Confusion izeneko teknika erabili zuten, JavaScript motorra behartzen duena mota okerra duen objektu bat prozesatzera, 64 biteko bat osatzea ahalbidetzen duena. 32 biteko bi balioren konbinazioan oinarritutako erakuslea.

Erasoaren funtsa JavaScript motorean bereziki diseinatutako objektu gaizto bat prozesatzen denean, matrizean sartzen diren argibideak espekulatiboki exekutatzeko baldintzak sortzen dira. Objektua hautatzen da, erasotzaileak kontrolatutako eremuak 64 biteko erakuslea erabiltzen den eremuan jartzen diren moduan. Objektu gaiztoaren mota prozesatzen ari den array-motarekin bat ez datorrenez, baldintza normaletan horrelako ekintzak blokeatzen dira Chrome-n arrayetara sartzeko erabiltzen den kodea desoptimizatzeko mekanismo baten bidez. Arazo hau konpontzeko, Type Confusion erasoaren kodea baldintzazko "baldin" bloke batean jartzen da, baldintza normaletan aktibatzen ez dena, baina modu espekulatiboan exekutatzen dena, prozesadoreak oker adarkatze gehiago aurreikusten badu.

Ondorioz, prozesadoreak espekulatiboki atzitzen du sortutako 64 biteko erakuslea eta egoerara atzera egiten du huts egindako iragarpen bat zehaztu ondoren, baina exekuzioaren aztarnak partekatutako cachean geratzen dira eta aldaketak aztertzen dituzten albo kanaleko cache detektatzeko metodoak erabiliz leheneratu daitezke. cachean gordetako eta cache gabeko datuetarako sarbide-denborak. JavaScript-en eskuragarri dagoen tenporizadorearen zehaztasun nahikorik gabeko baldintzetan cachearen edukia aztertzeko, Google-k proposatutako metodo bat erabiltzen da, prozesadoreetan erabiltzen den Tree-PLRU cache desalojo estrategia engainatzen duena eta, ziklo kopurua handituz, aukera ematen duena. nabarmen handitu denboraren aldea cachean balio bat dagoenean eta ez dagoenean.

Iturria: opennet.ru

Gehitu iruzkin berria