A Google a Spectre sebezhetőségeinek kihasználását mutatja be JavaScript futtatásával a böngészőben

A Google számos kizsákmányoló prototípust tett közzé, amelyek bemutatják a Spectre osztályú sebezhetőségek kihasználásának lehetőségét JavaScript-kód futtatásakor a böngészőben, megkerülve a korábban hozzáadott védelmi módszereket. Az exploitok segítségével hozzá lehet férni az aktuális lapon lévő webtartalmat feldolgozó folyamat memóriájához. Az exploit működésének tesztelésére elindult a leaky.page weboldal, a munka logikáját leíró kód pedig felkerült a GitHubra.

A javasolt prototípust Intel Core i7-6500U processzorokkal rendelkező rendszerek megtámadására tervezték Linux és Chrome 88 környezetben. Ahhoz, hogy az exploitot más környezetekben is használhassuk, módosításokra van szükség. A kiaknázási módszer nem jellemző az Intel processzorokra – megfelelő adaptációt követően az exploit megerősítette, hogy más gyártók processzoraival működő rendszereken is működik, beleértve az ARM architektúrán alapuló Apple M1-et is. Kisebb módosítások után az exploit más operációs rendszerekben és más Chromium-motorra épülő böngészőkben is működik.

A szabványos Chrome 88 és Intel Skylake processzorokra épülő környezetben a jelenlegi Chrome lapon (renderelői folyamat) 1 kilobájt/másodperc sebességgel lehetett adatokat szivárogtatni a webes tartalmak feldolgozásáért felelős folyamatból. Ezenkívül alternatív prototípusokat fejlesztettek ki, például egy olyan kihasználást, amely lehetővé teszi a szivárgási sebesség 8 kB/s-ra növelését a stabilitás csökkentése árán a performance.now() időzítő használatakor 5 mikroszekundumos (0.005 ezredmásodperces) pontossággal. ). Elkészült egy olyan verzió is, amely egy ezredmásodperces időzítő pontossággal működött, amivel mintegy 60 bájt/s sebességgel lehetett megszervezni egy másik folyamat memóriájához való hozzáférést.

A közzétett demo kód három részből áll. Az első rész kalibrálja az időzítőt, hogy megbecsülje a processzor gyorsítótárában maradt adatok helyreállításához szükséges műveletek végrehajtási idejét a CPU-utasítások spekulatív végrehajtása következtében. A második rész határozza meg a JavaScript tömb kiosztásánál használt memóriaelrendezést.

A harmadik rész közvetlenül a Spectre sebezhetőségét használja ki az aktuális folyamat memóriatartalmának meghatározására, bizonyos műveletek spekulatív végrehajtásának feltételeinek megteremtése eredményeként, amelyek eredményét a sikertelen előrejelzés meghatározása után a processzor eldobja, de a folyamat nyomai megmaradnak. A végrehajtás az általános gyorsítótárban van elhelyezve, és visszaállítható a gyorsítótár tartalmának meghatározására szolgáló módszerekkel olyan harmadik fél csatornái által, amelyek elemzik a gyorsítótárazott és nem gyorsítótárazott adatok elérési idejének változásait.

A javasolt kihasználási technika lehetővé teszi a performance.now() API-n keresztül elérhető nagy pontosságú időzítők, valamint a SharedArrayBuffer típus támogatása nélkül, amely lehetővé teszi tömbök létrehozását az osztott memóriában. Az exploit magában foglalja a Spectre modult, amely ellenőrzött spekulatív kódvégrehajtást okoz, és egy oldalcsatornás szivárgáselemzőt, amely észleli a spekulatív végrehajtás során nyert gyorsítótárban tárolt adatokat.

A gadget egy JavaScript tömb segítségével valósult meg, amelyben a puffer határain kívül eső területhez próbálnak hozzáférni, ami befolyásolja az elágazás előrejelzési blokk állapotát a fordító (a processzor, a processzor, a processzor) által hozzáadott pufferméret ellenőrzése miatt. előre tekintve spekulatív módon végrehajtja a hozzáférést, de ellenőrzés után visszaállítja az állapotot). A gyorsítótár tartalmának elemzésére nem megfelelő időzítési pontosság mellett olyan módszert javasoltak, amely megtéveszti a processzorokban használt Tree-PLRU gyorsítótár-kiürítési stratégiát, és lehetővé teszi a ciklusok számának növelésével jelentősen növelni az időbeli különbséget a visszatéréskor. egy érték a gyorsítótárból, és amikor nincs érték a gyorsítótárban.

Megjegyzendő, hogy a Google közzétette a kihasználás prototípusát, hogy bemutassa a Spectre osztályú sebezhetőségeket használó támadások megvalósíthatóságát, és hogy a webfejlesztőket olyan technikák használatára ösztönözze, amelyek minimalizálják az ilyen támadásokból származó kockázatokat. A Google ugyanakkor úgy véli, hogy a javasolt prototípus jelentős átdolgozása nélkül lehetetlen olyan univerzális exploitokat létrehozni, amelyek nemcsak demonstrációra, hanem széles körű felhasználásra is készek.

A kockázat csökkentése érdekében a webhelytulajdonosokat arra bátorítjuk, hogy használják a közelmúltban bevezetett fejléceket Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Metaadat-kérés lekérése, X-Frame- Options, X -Content-Type-Options és SameSite Cookie. Ezek a mechanizmusok közvetlenül nem védenek a támadások ellen, de lehetővé teszik, hogy a webhely adatait a kiszivárgástól elkülönítse olyan folyamatokba, amelyekben a támadó JavaScript kódja végrehajtható (a szivárgás az aktuális folyamat memóriájából történik, amely a támadó kódja mellett , az ugyanazon a lapon megnyitott másik webhely adatait is feldolgozhatja). A fő ötlet az, hogy a webhelykód végrehajtását a különböző folyamatokban elválasztják a megbízhatatlan forrásokból, például egy iframe-en keresztül bevitt, harmadik féltől származó kódtól.



Forrás: opennet.ru

Hozzászólás