Uusi tekniikka Chromen Spectre-haavoittuvuuksien hyödyntämiseen

Ryhmä tutkijoita amerikkalaisista, australialaisista ja israelilaisista yliopistoista on ehdottanut uutta sivukanavahyökkäystekniikkaa hyödyntämään Spectre-luokan haavoittuvuuksia Chromium-moottoriin perustuvissa selaimissa. Hyökkäys, koodinimeltään Spook.js, antaa sinun ohittaa sivuston eristysmekanismin suorittamalla JavaScript-koodin ja lukea nykyisen prosessin koko osoiteavaruuden sisällön, eli. käyttää tietoja sivuilta, jotka ovat käynnissä muilla välilehdillä, mutta joita käsitellään samassa prosessissa.

Koska Chrome käyttää eri sivustoja eri prosesseissa, kyky suorittaa käytännön hyökkäyksiä on rajoitettu palveluihin, jotka sallivat eri käyttäjien isännöidä sivujaan. Menetelmä mahdollistaa sivulta, jolle hyökkääjällä on mahdollisuus upottaa JavaScript-koodinsa, määrittää muiden samalla sivustolla olevien käyttäjän avaamien sivujen olemassaolon ja poimia niistä luottamuksellisia tietoja, esimerkiksi korvattuja tunnistetietoja tai pankkitietoja. verkkolomakkeiden automaattisen täyttöjärjestelmän avulla. Esittelynä näytetään, kuinka voit hyökätä jonkun toisen blogiin Tumblr-palvelussa, jos sen omistaja avaa samassa palvelussa isännöidyn hyökkääjän blogin toisella välilehdellä.

Toinen menetelmän käyttövaihtoehto on hyökkäys selaimen lisäosia vastaan, jolloin hyökkääjän hallitsemaa lisäosaa asennettaessa voidaan poimia tietoja muista lisäosista. Esimerkkinä näytämme, kuinka voit poimia luottamuksellisia tietoja LastPass-salasanojen hallinnasta asentamalla haitallisen lisäosan.

Tutkijat ovat julkaisseet prototyypin hyväksikäytöstä, joka toimii Chrome 89:ssä järjestelmissä, joissa on CPUIntel i7-6700K ja i7-7600U. Hyödynnyksen luomisessa käytettiin Googlen aiemmin julkaiseman JavaScript-koodin prototyyppejä Spectre-luokan hyökkäyksiin. On huomattava, että tutkijat pystyivät valmistamaan Intel- ja Apple M1 -prosessoreihin perustuvia järjestelmiä, jotka mahdollistavat muistin lukemisen järjestämisen nopeudella 500 tavua sekunnissa ja 96 prosentin tarkkuudella. Menetelmän oletetaan soveltuvan myös AMD-prosessoreihin, mutta täysin toimivaa hyödyntämistä ei voitu valmistaa.

Hyökkäys koskee kaikkia Chromium-moottoriin perustuvia selaimia, mukaan lukien Google Chrome, Microsoft Edge ja Brave. Tutkijat uskovat myös, että menetelmää voidaan mukauttaa toimimaan Firefoxin kanssa, mutta koska Firefox-moottori on hyvin erilainen kuin Chrome, työ tällaisen hyväksikäytön luomiseksi on jätetty tulevaisuuteen.

Suojautuakseen selainpohjaisilta hyökkäyksiltä, ​​jotka liittyvät käskyjen spekulatiiviseen suorittamiseen, Chrome ottaa käyttöön osoiteavaruuden segmentoinnin – hiekkalaatikon eristäminen sallii JavaScriptin toimia vain 32-bittisten osoittimien kanssa ja jakaa käsittelijöiden muistin erillisissä 4 Gt:n kasoissa. Tarjotakseen pääsyn koko prosessin osoiteavaruuteen ja ohittaakseen 32-bittisen rajoituksen tutkijat käyttivät Type Confusion -nimistä tekniikkaa, joka pakottaa JavaScript-moottorin käsittelemään virheellisen tyypin objektia, mikä mahdollistaa 64-bittisen objektin muodostamisen. osoitin perustuu kahden 32-bittisen arvon yhdistelmään.

Hyökkäyksen ydin on, että kun käsitellään erityisesti suunniteltua haitallista objektia JavaScript-moottorissa, luodaan olosuhteet, jotka johtavat taulukkoa käyttävien ohjeiden spekulatiiviseen suorittamiseen. Kohde valitaan siten, että hyökkääjän ohjaamat kentät sijoitetaan alueelle, jossa 64-bittistä osoitinta käytetään. Koska haitallisen objektin tyyppi ei vastaa käsiteltävän taulukon tyyppiä, normaaliolosuhteissa tällaiset toiminnot estetään Chromessa mekanismilla, joka deoptimoi taulukoiden käyttämiseen käytettävän koodin. Tämän ongelman ratkaisemiseksi Type Confusion -hyökkäyksen koodi sijoitetaan ehdolliseen "if"-lohkoon, joka ei aktivoidu normaaleissa olosuhteissa, vaan suoritetaan spekulatiivisessa tilassa, jos prosessori ennustaa väärin haaroittumista.

Tämän seurauksena prosessori käyttää spekulatiivisesti luotua 64-bittistä osoitinta ja palauttaa tilan epäonnistuneen ennusteen määrittämisen jälkeen, mutta suorituksen jäljet ​​jäävät jaettuun välimuistiin, ja ne voidaan palauttaa käyttämällä sivukanavan välimuistin tunnistusmenetelmiä, jotka analysoivat muutoksia välimuistissa olevien ja välimuistissa olevien tietojen käyttöajat. Välimuistin sisällön analysointiin JavaScriptissä käytettävissä olevan ajastimen riittämättömän tarkkuuden olosuhteissa käytetään Googlen ehdottamaa menetelmää, joka pettää prosessoreissa käytettävän Tree-PLRU-välimuistin poistostrategian ja mahdollistaa jaksojen määrää lisäämällä lisää merkittävästi aikaeroa, kun arvo on läsnä ja poissa välimuistissa.

Lähde: opennet.ru

Lisää kommentti