Google demonštroval využitie zraniteľností Spectre prostredníctvom spúšťania JavaScriptu v prehliadači

Google zverejnil niekoľko prototypov exploitov, ktoré ukazujú možnosť zneužitia zraniteľností triedy Spectre pri spúšťaní kódu JavaScript v prehliadači, čím obchádza predtým pridané metódy ochrany. Využitie možno použiť na získanie prístupu k pamäti procesu spracúvania webového obsahu na aktuálnej karte. Na otestovanie fungovania exploitu bola spustená webová stránka leaky.page a kód popisujúci logiku práce bol zverejnený na GitHub.

Navrhovaný prototyp je určený na útok na systémy s procesormi Intel Core i7-6500U v prostredí s Linuxom a Chrome 88. Pre využitie exploitu pre iné prostredia sú potrebné úpravy. Metóda využívania nie je špecifická pre procesory Intel - po vhodnej úprave sa potvrdilo, že exploit bude fungovať na systémoch s CPU od iných výrobcov, vrátane Apple M1 na architektúre ARM. Po menších úpravách je exploit funkčný aj v iných operačných systémoch a v iných prehliadačoch založených na engine Chromium.

V prostredí založenom na štandardných procesoroch Chrome 88 a Intel Skylake bolo možné uniknúť dáta z procesu zodpovedného za spracovanie webového obsahu na aktuálnej karte Chrome (proces vykresľovania) rýchlosťou 1 kilobajt za sekundu. Okrem toho boli vyvinuté alternatívne prototypy, napríklad exploit, ktorý umožňuje za cenu zníženia stability zvýšiť rýchlosť úniku na 8 kB/s pri použití časovača performance.now() s presnosťou 5 mikrosekúnd (0.005 milisekúnd ). Pripravená bola aj verzia, ktorá pracovala s presnosťou časovača na jednu milisekúndu, čo bolo možné použiť na organizáciu prístupu do pamäte iného procesu rýchlosťou asi 60 bajtov za sekundu.

Publikovaný demo kód pozostáva z troch častí. Prvá časť kalibruje časovač na odhadnutie času vykonávania operácií potrebných na obnovenie dát zostávajúcich vo vyrovnávacej pamäti procesora v dôsledku špekulatívneho vykonávania inštrukcií CPU. Druhá časť určuje rozloženie pamäte použité pri prideľovaní poľa JavaScript.

Tretia časť priamo využíva zraniteľnosť Spectre na určenie obsahu pamäte aktuálneho procesu v dôsledku vytvárania podmienok pre špekulatívne vykonávanie určitých operácií, ktorých výsledok po určení neúspešnej predikcie procesor zahodí, ale stopy po spustenia sú uložené vo všeobecnej vyrovnávacej pamäti a možno ich obnoviť pomocou metód na určovanie obsahu vyrovnávacej pamäte kanálmi tretích strán, ktoré analyzujú zmeny v prístupovom čase k údajom uloženým vo vyrovnávacej pamäti a neuloženým údajom.

Navrhovaná technika využívania umožňuje zaobísť sa bez vysoko presných časovačov dostupných cez performance.now() API a bez podpory pre typ SharedArrayBuffer, ktorý umožňuje vytváranie polí v zdieľanej pamäti. Využívanie zahŕňa gadget Spectre, ktorý spôsobuje kontrolované špekulatívne vykonávanie kódu, a analyzátor úniku postranného kanála, ktorý deteguje údaje uložené vo vyrovnávacej pamäti získané počas špekulatívneho vykonávania.

Modul gadget je implementovaný pomocou poľa JavaScript, v ktorom sa uskutoční pokus o prístup k oblasti mimo hraníc vyrovnávacej pamäte, čo ovplyvňuje stav bloku predikcie vetvenia v dôsledku prítomnosti kontroly veľkosti vyrovnávacej pamäte pridanej kompilátorom (procesor špekulatívne vykonáva prístup pri pohľade dopredu, ale po kontrole vráti stav späť). Na analýzu obsahu vyrovnávacej pamäte v podmienkach nedostatočnej presnosti časovača bola navrhnutá metóda, ktorá oklame stratégiu vymazania vyrovnávacej pamäte Tree-PLRU používanú v procesoroch a umožňuje zvýšením počtu cyklov výrazne zvýšiť rozdiel v čase pri návrate. hodnota z vyrovnávacej pamäte a keď v pamäti cache nie je žiadna hodnota.

Je potrebné poznamenať, že spoločnosť Google zverejnila prototyp zneužitia s cieľom ukázať uskutočniteľnosť útokov pomocou zraniteľností triedy Spectre a povzbudiť vývojárov webu, aby používali techniky, ktoré minimalizujú riziká takýchto útokov. Google zároveň verí, že bez výrazného prepracovania navrhovaného prototypu nie je možné vytvárať univerzálne exploity, ktoré sú pripravené nielen na demonštráciu, ale aj na široké využitie.

Na zníženie rizika sa vlastníkom stránok odporúča používať nedávno implementované hlavičky Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame- Options, X -Content-Type-Options a SameSite Cookie. Tieto mechanizmy priamo nechránia pred útokmi, umožňujú však izolovať dáta stránok pred únikom do procesov, v ktorých je možné spustiť JavaScript kód útočníka (k úniku dochádza z pamäte aktuálneho procesu, ktorý okrem kódu útočníka , môže tiež spracovávať údaje z inej lokality otvorenej na tej istej karte). Hlavnou myšlienkou je oddeliť vykonávanie kódu lokality v rôznych procesoch od kódu tretích strán prijatého z nespoľahlivých zdrojov, napríklad prostredníctvom prvku iframe.



Zdroj: opennet.ru

Pridať komentár