iLeakage on tapa hyödyntää Applen CPU:n haavoittuvuutta WebKit-moottoriin perustuvien selaimien kautta.

Georgia Institute of Technologyn, Michiganin yliopiston ja Ruhrin yliopiston tutkijat ovat kehittäneet iLeakage-hyökkäystekniikan, jonka avulla Applen A- ja M-sarjan ARM-prosessorien haavoittuvuutta voidaan hyödyntää avaamalla selaimeen erityisesti suunniteltu sivu. Tutkijoiden valmistamien hyödyntämisprototyyppien avulla JavaScript-koodia ajettaessa selaimessa voidaan selvittää muilla välilehdillä avattujen sivustojen sisältö. Esimerkiksi he osoittivat kyvyn määrittää Gmail-välilehdellä avatun kirjeen teksti, katsella YouTubea historiaa ja noutaa LastPass-salasanojen hallinnan kirjautumislomakkeeseen lisäämä salasana. Instagram. Hyökkäys koskee Safari-selainta macOS-järjestelmissä ja kaikissa iOS-alustalla olevissa selaimissa (Applen säännöt edellyttävät, että kaikki iOS-selaimet käyttävät vain WebKit-järjestelmämoottoria, joka on yhteinen Safarille).

Vaikka hyökkäys koskee vain Applen tuotteita, se tarjoaa mielenkiintoisen tavan ohittaa WebKit-moottorin ajastimen resoluutiorajoitukset, mikä saattaa olla hyödyllistä ohittaessaan samanlaisia ​​rajoituksia muissa selaimissa. Apple M1- ja M2-siruissa tunnistettu haavoittuvuus muistuttaa klassista Spectre v1 -haavoittuvuutta ja johtaa myös muistin sisällön vuotamiseen spekulatiivisessa tilassa suoritettaessa toimintoja, jotka prosessori hylkää virheellisen ennusteen sattuessa, mutta jälkiä niiden suorittamisesta tallennetaan prosessorin välimuistiin.

Tässä hyökkäysmenetelmässä spekulatiivinen suoritus mahdollisti primitiivin luomisen mielivaltaisten 64-bittisten osoittimien lukemiseksi prosessin osoiteavaruudessa, joka vastaa sivujen sisällön hahmontamisesta selaimessa. Saadakseen pääsyn prosessin osoiteavaruuteen, jossa jonkun muun sivusto hahmonnetaan, käytettiin temppua, jolla tutkittava vierassivu avattiin ponnahdusikkunassa JavaScript window.open() -menetelmällä. Tässä tapauksessa sivustoa ei avattu erillisessä prosessissa, vaan samassa prosessissa hyökkääjän koodin kanssa.

Turvatoimena WebKit-moottori sallii JavaScriptin toimia vain 35-bittisten osoittimien kanssa. Tarjotakseen pääsyn koko prosessin osoiteavaruuteen ja ohittaakseen 35-bittisen rajan, tutkijat käyttivät Type Confusion -tekniikkaa pakottaakseen JavaScript-moottorin käsittelemään kohteen, jonka tyyppi oli väärä. Kun koneessa käsitellään erityisesti suunniteltua JavaScript-objektia, luodaan olosuhteet, jotka johtavat taulukkoa käyttävien käskyjen spekulatiiviseen suorittamiseen.

Koska objektin tyyppi ei vastaa käsiteltävän taulukon tyyppiä, normaaliolosuhteissa tällaiset toiminnot estetään, joten Type Confusion -hyökkäyksen koodi sijoitetaan ehdolliseen "jos"-lohkoon, joka ei aktivoidu normaaleissa olosuhteissa. , mutta se suoritetaan spekulatiivisessa tilassa, jos prosessori ennustaa virheellisesti lisähaaroittumista. Tämän seurauksena prosessori käyttää spekulatiivisesti luotua 64-bittistä osoitinta, mutta palauttaa tilan epäonnistuneen ennusteen määrittämisen jälkeen. Tässä tapauksessa spekulatiivisen suorituksen jäljet ​​tallennetaan jaettuun välimuistiin, ja ne voidaan palauttaa käyttämällä menetelmiä välimuistin sisällön määrittämiseksi sivukanavien kautta.

Hyökkäys käyttää keinotekoisten toimintojen jälkeen jäljellä olevan CPU L1 -välimuistin tietojen poimimista Googlen aiemmin ehdottaman pLRU-menetelmän (pseudo Least Recently Used) -menetelmän muunnelmalla. Tässä tapauksessa alkuperäinen pLRU-menetelmä perustuu datan käyttöviiveiden mittaamiseen, joiden eron perusteella voidaan arvioida, onko tietty sekvenssi prosessorin välimuistissa vai ei (jos tiedot tallennetaan välimuistiin, toiminto suoritetaan nopeammin, ja jos ei, hitaammin). Suojatakseen prosessorin välimuistin tutkimista nykyaikaisissa selaimissa ajastimen tarkkuus on laskenut merkittävästi tasolle, joka ei salli erojen havaitsemista.

Ajastimen tarkkuusrajoituksen voittamiseksi iLeakage-hyökkäyksessä ehdotetaan tekniikkaa, jolla määritetään datan olemassaolo tai puuttuminen välimuistissa kilpailutilanteen avulla. Menetelmän ydin on käynnistää samanaikaisesti kaksi säiettä - pää- ja viite. Viitesäie sisältää joukon käskyjä, jotka suoritetaan tietyllä viiteajankohdalla. Heti vertailusäikeen suorituksen alussa pääsäikeen kanssa jaettu muuttuja asetetaan arvoon 1, ja ohjeiden suorittamisen jälkeen muuttuja nollataan. Näin ollen jaetun muuttujan arvo on 1 vain tietyn lyhyen ajan.

Pääsäie aloittaa syklin välimuistin tietojen määrittämiseksi käyttämällä pLRU-menetelmää. Merkki tarkistetun tiedon olemassaolosta tai puuttumisesta välimuistissa ei ole ajastimen aikamittaus, vaan yhteismuuttujan tila tarkistuksen jälkeen. Jos muuttujan arvo on 1, niin viitekoodia nopeammin suoritettu toiminto suoritettiin rinnakkaissäikeessä, ts. tiedot toimitettiin välimuistista. Jos muuttuja sisältää arvon 0, toiminnon suorittaminen kesti suhteellisen kauan, koska välimuistissa ei ollut tietoa, ja rinnakkaissäikeen viitekoodi ehti käsitellä kokonaan.

iLeakage - tapa hyödyntää Applen CPU:n haavoittuvuutta WebKit-moottoriin perustuvien selainten kautta

Ehdotetun menetelmän tarkkuus välimuistin sisällön määrittämiseksi vaihtelee välillä 90 % - 99 % ja datan määrityksen suorituskyky on 23 - 34 tavua sekunnissa prosessorista ja laitteesta riippuen. Ennen hyökkäyksen suorittamista vaaditaan viitekoodin kalibrointi, joka kestää noin viisi minuuttia. Kun nykyisen järjestelmän kalibrointi on valmis, 64-merkkisen merkkijonon purkaminen kestää noin 30 sekuntia.

iLeakage - tapa hyödyntää Applen CPU:n haavoittuvuutta WebKit-moottoriin perustuvien selainten kautta
iLeakage - tapa hyödyntää Applen CPU:n haavoittuvuutta WebKit-moottoriin perustuvien selainten kautta

Lisäksi voimme huomata, että on julkaistu prototyyppihyökkäys, joka käyttää Zen2-mikroarkkitehtuuriin perustuvien AMD-suorittimien Zenbleed-haavoittuvuutta poimimaan muissa prosesseissa käsitellyt tiedot avattaessa sivua, jossa hyödynnetään Chromessa. Zenbleed-haavoittuvuuden (CVE-2023-20593) lisäksi hyväksikäyttö sisältää myös V2023-moottorin CVE-3079-8-haavoittuvuuden, joka on korjattu Chrome 115:ssä.

Lähde: opennet.ru

Lisää kommentti