Amerikai, ausztrál és izraeli egyetemek kutatócsoportja új támadási technikát javasolt a Spectre osztályú sebezhetőségek kiaknázására a Chromium motorral rendelkező böngészőkben. A Spook.js kódnéven ismert támadás lehetővé teszi, hogy a JavaScript kód végrehajtásával megkerüljék a weboldalak izolációs mechanizmusát, és elolvassák a jelenlegi folyamat teljes címzési térfogalmát, azaz hozzáférjenek az egyes lapokon futó oldalak adataihoz, amelyeket más fülekben, de egy folyamatban dolgoznak fel.
Mivel a Chrome különböző weboldalakat különböző folyamatokban indít el, a gyakorlati támadások lehetősége a felhasználók számára saját oldalakat létrehozó szolgáltatásokra korlátozódik. A módszer lehetővé teszi, hogy a támadó, aki képes illeszteni a saját JavaScript kódját egy adott oldalba, megállapítsa, hogy van-e más, ugyanazon weboldalon megnyitott lap, és kinyerje az onnan származó titkos információkat, például a webformák automatikus kitöltését végző rendszer által megadott hitelesítő adatokat vagy banki adatokat. Példaként bemutatásra került, hogyan lehet támadni egy idegen blogot a Tumblr szolgáltatásban, ha annak tulajdonosa egy másik fülön megnyitja a támadó blogját, amely ugyanazon a szolgáltatáson található.

A módszer másik alkalmazási lehetősége a böngészőbővítmények elleni támadás, amely lehetővé teszi, hogy a támadók által ellenőrzött bővítmény telepítésekor adatokat nyerjenek ki más bővítményekből. Példaként bemutatásra került, hogyan lehet káros bővítmény telepítésével titkos információkat nyerni a LastPass jelszókezelőből.

A kutatók bemutatták a Chrome 89-en működő exploit prototípusát, amelyet Intel i7-6700K és i7-7600U CPU rendszerekhez optimalizáltak. Az exploit létrehozásához a Google által korábban közzétett JavaScript kód prototípusait használták Spectre osztályú támadásokhoz. Megjegyzik, hogy a kutatóknak sikerült működő exploithoz jutniuk Intel és Apple M1 processzorokkal rendelkező rendszerekhez, lehetővé téve, hogy az adatokat 500 bájt/másodperc sebességgel és 96%-os pontossággal olvassák el. Feltételezik, hogy a módszer alkalmazható AMD processzorokon is, de teljesen működőképes exploitot nem sikerült létrehozni.
A támadás bármely Chromium alapú böngészőt érint, beleértve a Google Chrome-ot, a Microsoft Edge-et és a Brave-et. A kutatók azt is feltételezik, hogy a módszer alkalmazható a Firefoxra is, de mivel a Firefox motorja jelentősen eltér a Chrome-tól, a hasonló exploit létrehozásának munkája a jövőre maradt.
A böngészőn keresztüli, spekulatív utasítás végrehajtásával kapcsolatos támadások elleni védelem érdekében a Chrome-ban a címkék szegmentálása valósult meg - a sandbox-izoláció csak 32 bites mutatókkal engedélyezi a JavaScript működését, és a kezelők memóriáját nem átfedő 4GB-os kupacokban (heap) osztja el. Az egész címtartományhoz való hozzáférés és a 32 bites korlát megkerülésére a kutatók a Type Confusion technikáját használták, amely lehetővé teszi a JavaScript motor számára, hogy hibás típusú objektumot dolgozzon fel, így egy 64 bites mutató jöhet létre két 32 bites érték kombinációjából.
A támadás lényege, hogy a JavaScript motorban speciálisan kialakított, rosszindulatú objektum feldolgozása során olyan körülmények jönnek létre, amelyek spekulatív utasítás végrehajtáshoz vezetnek, amelyek hozzáférnek egy tömbhöz. Az objektumot úgy választják ki, hogy a támadók által ellenőrzött mezők egy 64 bites mutatóval működő területen helyezkedjenek el. Mivel a rosszindulatú objektum típusa nem felel meg a feldolgozott tömb típusának, ezek a műveletek a Chrome-ban a tömbökhoz való hozzáféréshez használt kód deopimizálás mechanizmusával általában le vannak tiltva. A probléma megoldása érdekében a Type Confusion támadáshoz szükséges kódot egy 'if' feltételes blokkba helyezik, amely normál körülmények között nem aktiválódik, de spekulatív módban, a processzor helytelen ágon való előrejelzése esetén végrehajtódik.
A végén a processzor spekulatívan hozzáfér a létrehozott 64 bites mutatóhoz, és visszaállítja az állapotot, miután meghatározta a sikertelen előrejelzést, de a végrehajtási nyomok a közös cache-ben maradnak, és helyreállíthatók a cache tartalmának meghatározására szolgáló módszerekkel, amelyek elemezik a hozzáférési idő változását a gyorsítótárba és a nem gyorsítótárazott adatokba. A cache tartalmának elemzésére, a JavaScript-ben elérhető időzítő pontatlan használata mellett, a Google által javasolt módszert alkalmazzák, amely megtéveszti a processzorokban alkalmazott Tree-PLRU cache kiürítési stratégiát, és lehetővé teszi a ciklusok számának növelésével a hozzáférés ideje közötti különbség jelentős növelését, amikor egy érték hozzáférhető a cache-ben, illetve nem.
Forrás: opennet.ru
