Új technika a Spectre sebezhetőségeinek kihasználására a Chrome-ban

Amerikai, ausztrál és izraeli egyetemek kutatóinak egy csoportja új oldalcsatornás támadási technikát javasolt a Chromium-motoron alapuló böngészők Spectre-osztályú sebezhetőségeinek kihasználására. A Spook.js kódnevű támadás lehetővé teszi, hogy JavaScript kód futtatásával megkerülje a webhely elkülönítési mechanizmusát, és beolvassa az aktuális folyamat teljes címterének tartalmát, pl. más lapokon futó, de ugyanabban a folyamatban feldolgozott oldalak adatainak elérése.

Mivel a Chrome különböző webhelyeket futtat különböző folyamatokban, a gyakorlati támadások végrehajtásának lehetősége azokra a szolgáltatásokra korlátozódik, amelyek lehetővé teszik a különböző felhasználók számára, hogy tárolják oldalaikat. A módszer lehetővé teszi, hogy egy olyan oldalról, amelybe a támadónak lehetősége van JavaScript kódját beágyazni, megállapítsa a felhasználó által ugyanarról a webhelyről megnyitott további oldalak jelenlétét, és bizalmas információkat nyerjen ki belőlük, például hitelesítő adatokat vagy banki adatokat helyettesít. a webes űrlapok automatikus kitöltési rendszerével. Bemutatóként bemutatjuk, hogyan támadhatja meg valaki más blogját a Tumblr szolgáltatásban, ha annak tulajdonosa egy másik lapon megnyitja a támadók ugyanazon a szolgáltatáson tárolt blogját.

A módszer használatának másik lehetősége a böngészőbővítmények elleni támadás, amely lehetővé teszi, hogy a támadó által vezérelt bővítmények telepítésekor adatokat nyerjenek ki más kiegészítőkből. Példaként bemutatjuk, hogy egy rosszindulatú bővítmény telepítésével hogyan nyerhet ki bizalmas információkat a LastPass jelszókezelőből.

A kutatók közzétették egy olyan kizsákmányolás prototípusát, amely a Chrome 89-ben működik CPUIntel i7-6700K és i7-7600U processzorokkal rendelkező rendszereken. Az exploit létrehozásakor a Google által korábban közzétett JavaScript-kód prototípusait használták a Spectre-osztályú támadások végrehajtására. Megjegyzendő, hogy a kutatók képesek voltak az Intel és az Apple M1 processzorokon alapuló rendszerekhez működő exploitokat készíteni, amelyek lehetővé teszik a memóriaolvasás 500 bájt/s sebességű és 96%-os pontosságú megszervezését. Feltételezzük, hogy a módszer AMD processzorokra is alkalmazható, de nem sikerült teljesen működőképes exploitot készíteni.

A támadás minden Chromium-motoron alapuló böngészőre alkalmazható, beleértve a Google Chrome-ot, a Microsoft Edge-t és a Brave-et. A kutatók úgy vélik, hogy a módszer adaptálható Firefox-szal is, de mivel a Firefox motorja nagyban különbözik a Chrome-tól, egy ilyen exploit létrehozásának munkája a jövőre van bízva.

Az utasítások spekulatív végrehajtásával kapcsolatos böngészőalapú támadások elleni védelem érdekében a Chrome címterület-szegmentálást valósít meg – a sandbox-izoláció lehetővé teszi, hogy a JavaScript csak 32 bites mutatókkal működjön, és a kezelők memóriáját szétválasztott 4 GB-os kupacokban osztja meg. A teljes folyamatcímtérhez való hozzáférés biztosítása és a 32 bites korlátozás megkerülése érdekében a kutatók a Type Confusion nevű technikát alkalmazták, amely arra kényszeríti a JavaScript-motort, hogy egy helytelen típusú objektumot dolgozzon fel, ami lehetővé teszi egy 64 bites létrehozását. két 32 bites érték kombinációján alapuló mutató.

A támadás lényege, hogy egy speciálisan tervezett rosszindulatú objektum feldolgozása során a JavaScript motorban olyan feltételek jönnek létre, amelyek a tömböt elérő utasítások spekulatív végrehajtásához vezetnek. Az objektum úgy van kiválasztva, hogy a támadó által vezérelt mezők a 64 bites mutató használatának területére kerüljenek. Mivel a rosszindulatú objektum típusa nem egyezik a feldolgozott tömb típusával, normál körülmények között az ilyen műveleteket a Chrome blokkolja a tömbök eléréséhez használt kód optimalizálását célzó mechanizmussal. A probléma megoldására a Type Confusion támadás kódja egy feltételes „if” blokkba kerül, amely normál körülmények között nem aktiválódik, hanem spekulatív módban fut le, ha a processzor hibásan jósol további elágazást.

Ennek eredményeként a processzor spekulatív módon hozzáfér a generált 64 bites mutatóhoz, és visszagörgeti az állapotot a sikertelen előrejelzés meghatározása után, de a végrehajtás nyomai a megosztott gyorsítótárban maradnak, és visszaállíthatók az oldalcsatornás gyorsítótár-észlelési módszerekkel, amelyek elemzik a változásokat. hozzáférési idők a gyorsítótárazott és nem gyorsítótárazott adatokhoz. A gyorsítótár tartalmának elemzésére a JavaScriptben elérhető időzítő elégtelen pontossága mellett a Google által javasolt módszert alkalmazzák, amely megtéveszti a processzorokban használt Tree-PLRU gyorsítótár-kiürítési stratégiát, és a ciklusok számának növelésével lehetővé teszi a jelentősen megnöveli az időbeli különbséget, ha egy érték jelen van vagy hiányzik a gyorsítótárban.

Forrás: opennet.ru

Hozzászólás