Google a demonstrat exploatarea vulnerabilităților Spectre prin execuția JavaScript în browser.

Compania Google a publicat mai multe prototipuri de exploatări, care arată posibilitatea exploatării vulnerabilităților din clasa Spectre prin executarea codului JavaScript în browser, ocolind metodele de protecție adăugate anterior. Exploatarea poate fi folosită pentru a obține acces la memoria procesului care gestionează conținutul web în fila curentă. Pentru testarea funcționării exploatării, a fost lansat site-ul leaky.page, iar codul care descrie logica funcționării a fost publicat pe GitHub.

Prototipul propus este conceput pentru a efectua un atac pe sisteme cu procesoare Intel Core i7-6500U într-un mediu cu Linux și Chrome 88. Pentru aplicarea exploatării în alte medii este necesară efectuarea de modificări. Metoda de exploatare nu este specifică procesoarelor Intel — după adaptări corespunzătoare, s-a confirmat funcționarea exploatării pe sisteme cu CPU de la alți producători, inclusiv Apple M1 bazat pe arhitectura ARM. După ajustări minime, exploatarea este, de asemenea, funcțională în alte sisteme de operare și în altele browsere pe baza motorului Chromium.

Într-un mediu bazat pe Chrome 88 standard și procesoare Intel Skylake, s-a reușit obținerea unei scurgeri de date din procesul responsabil cu gestionarea conținutului web în fila curentă Chrome (procesul renderer), cu o viteză de 1 kilobit pe secundă. În plus, au fost dezvoltate prototipuri alternative, de exemplu, o exploatare care, prin reducerea stabilității, crește viteza scurgerii până la 8kB/s folosind un temporizator performance.now() cu o precizie de 5 microsecunde (0.005 milisecunde). A fost pregătită, de asemenea, o variantă care funcționează cu o precizie a temporizatorului de o milisecundă, care poate fi utilizată pentru a organiza accesul la memoria altui proces cu o viteză de aproximativ 60 de biți pe secundă.

Codul demonstrativ publicat constă din trei părți. Prima parte efectuează calibrarea temporizatorului pentru a evalua timpul necesar execuției operațiunilor necesare pentru recuperarea datelor rămase în cache-ul procesorului ca rezultat al execuției speculative a instrucțiunilor CPU. A doua parte determină aranjamentul memoriei utilizate pentru plasarea unui tablou JavaScript.

Partea a treia execută direct exploatarea vulnerabilității Spectre pentru a determina conținutul memoriei procesului curent, prin crearea unor condiții pentru execuția speculativă a anumitor operații, rezultatul cărora este abandonat de procesor după determinarea unei prognoze nereușite. Totuși, urmele execuției rămân în cache-ul general și pot fi recuperate prin metode de determinare a conținutului cache-ului, analizând modificarea timpului de acces la datele cache și necache.

Tehnica de exploatare propusă permite evitarea utilizării temporizatoarelor de mare precizie, disponibile prin API-ul performance.now(), și a suportului pentru tipul SharedArrayBuffer, care permite crearea de array-uri în memorie partajată. Exploatul include un gadget Spectre, care provoacă execuția speculativă controlată a codului, și un analist de scurgere a informațiilor prin canale laterale, care determină datele adunate în cache în timpul execuției speculative.

Gadgetul este implementat printr-un array JavaScript, în care se încearcă accesul la o zonă dincolo de limitele buffer-ului, influențând starea blocului de predicție a ramificațiilor din cauza prezenței unei verificări a dimensiunii buffer-ului adăugată de compilator (procesorul preconizează speculativ un acces, dar revine asupra stării după verificare). Pentru analiza conținutului cache-ului în condiții de precizie insuficientă a temporizatoarelor, a fost propusă o metodă care păcălește strategia de înlocuire a datelor din cache-ul Tree-PLRU, permițând, prin creșterea numărului de cicluri, să se mărească semnificativ diferența de timp între returnarea valorii din cache și absența valorii în cache.

Este de menționat că Google a publicat un prototip de exploat pentru a demonstra realismul atacurilor utilizând vulnerabilitățile din clasa Spectre și pentru a stimula dezvoltatorii web să aplice tehnici care minimizează riscurile generate de astfel de atacuri. Google consideră că fără o revizuire substanțială a prototipului propus, nu este posibil să se creeze exploate universale, gata nu doar pentru demonstrare, ci și pentru utilizare pe scară largă.

Pentru a reduce riscurile, proprietarii de site-uri sunt sfătuiți să utilizeze capetele de tip 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 și SameSite Cookie, implementate recent. Mecanismele menționate nu oferă o protecție directă împotriva atacurilor, dar permit izolarea datelor site-ului de scurgerile în procese în care poate fi executat cod JavaScript al atacatorului (scurgerea are loc din memoria procesului curent, unde, pe lângă codul atacatorului, pot fi procesate și datele unui alt site deschis în aceeași filă). Ideea principală este de a separa execuția codului site-ului de cel provenit din surse nesigure, cum ar fi cele incluse prin iframe.

Redați video


Sursa: opennet.ro
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster