Google a dezvăluit acum câteva zile diverse prototipuri de exploatare care demonstrează posibilitatea exploatării vulnerabilităților din clasa Spectre atunci când rulați cod JavaScript într-un browser, fără a trece prin metodele de securitate adăugate mai sus.
Exploit-urile pot fi folosite pentru a obține acces la memoria unui proces care procesează conținut web în fila curentă. Pentru a testa funcționarea exploit-ului, a fost lansat site-ul paginii scurse și codul care descrie logica operațiunii este publicat pe GitHub.
Prototipul propus este conceput pentru sisteme de atac cu procesoare Intel Core i7-6500U într-un mediu Linux și Chrome 88, deși acest lucru nu lasă deoparte faptul că pot fi făcute modificări pentru a utiliza exploit-ul în alte medii.
Metoda de operare nu este specifica pentru procesatorii Intel: după adaptarea corespunzătoare, Exploatarea a fost confirmată că funcționează pe sisteme cu procesoare terțe, inclusiv Apple M1 bazat pe arhitectura ARM. După ajustări minore, exploit-ul funcționează și pe alte sisteme de operare și alte browsere bazate pe motorul Chromium.
Într-un mediu bazat pe procesoare standard Chrome 88 și Intel Skylake, am realizat o scurgere de date din procesul responsabil de redarea conținutului web în fila Chrome actuală (proces de randare) la o viteză de 1 kilobyte pe secundă. În plus, au fost dezvoltate prototipuri alternative, de exemplu un exploit care permite, cu prețul unei stabilități reduse, creșterea ratei de scurgere la 8kB/s atunci când se folosește timer-ul performance.now() cu o precizie de 5 microsecunde (0.005 milisecunde). ). De asemenea, a fost pregătită o variantă care a funcționat cu o precizie a temporizatorului de o milisecundă, care ar putea fi folosită pentru a orchestra accesul la memorie al unui alt proces la o rată de aproximativ 60 de octeți pe secundă.
Codul demo publicat este format din trei părți:
- Prima parte Calibrați cronometrul pentru a estima timpul de execuție a operațiunilor necesare pentru a prelua datele rămase în memoria cache a procesorului ca urmare a execuției speculative a instrucțiunilor CPU.
- A doua parte definește aspectul memoriei utilizat la alocarea matricei JavaScript.
- A treia parte Exploatează direct vulnerabilitatea Spectre pentru a determina conținutul memoriei a procesului curent ca urmare a creării condițiilor pentru execuția speculativă a anumitor operațiuni, al căror rezultat este eliminat de procesor după determinarea unei predicții eșuate, dar urmele de execuție se află în memoria cache partajată și pot fi restaurate folosind metode de determinare stocați conținutul în cache folosind canale terțe care analizează modificarea timpului de acces la datele din cache și necache.
Tehnica de exploatare propusă elimină nevoia de cronometre de înaltă precizie disponibil prin API-ul performance.now() și fără suport pentru tipul SharedArrayBuffer, care permite crearea de matrice în memoria partajată.
Exploatarea include dispozitivul Spectre, care determină execuția controlată a codului speculativ și un analizor de scurgeri pe canal lateral, care determină datele care au fost introduse în cache în timpul execuției speculative.
Gadgetul este implementat folosind o matrice JavaScript, în care încercând să acceseze o zonă din afara granițelor tampon, care afectează starea blocului de predicție a ramurilor datorită prezenței unei verificări a dimensiunii bufferului adăugat de compilator (procesorul efectuează în mod speculativ un acces timpuriu, dar derulează înapoi starea după verificare).
Pentru a analiza conținutul cache-ului în condiții de precizie insuficientă a temporizatorului, a fost propusă o metodă care înșală strategia de evacuare a datelor cache Tree-PLRU folosită la procesoare și permite, prin creșterea numărului de cicluri, să crească semnificativ diferența de timp în care valoarea este returnată din cache și în absența unei valori în cache.
Google a publicat un prototip al exploit-ului pentru a arăta fezabilitatea atacurilor folosind vulnerabilitățile clasei Spectre și să încurajeze dezvoltatorii web să folosească tehnici care minimizează riscurile unor astfel de atacuri.
În același timp, Google consideră că, fără o revizuire semnificativă a prototipului propus, este imposibil să se creeze exploit-uri universale care să fie gata nu numai pentru demonstrație, ci și pentru utilizare pe scară largă.
Fuente: https://security.googleblog.com