Pages

joi, 24 mai 2012

Cum spargi Google Chrome: tutorial in 6 pasi

image
Care e cel mai simplu mod de a încerca să ataci PC-ul unui utilizator? Browser-ul, evident. E cel mai folosit program cu care utilizatorul iese la figurat din interiorul rețelei proprii și poate fi momit către diverse locații unde să i se pregătească ambuscade.

Pinkie Pie s-a ales cu 60000 USD în urma atacului reușit asupra browser-ului Chrome la Pwn2Own în martie anul acesta. La vremea respectivă prea multe detalii legate de atac nu au fost date publicității: s-a zis sec că Pinkie Pie a folosit o combinație de mai multe vulnerabilități ca să reușească să afișeze o imagine proprie pe un Chrome actualizat în interiorul unui laptop cu Windows 7 SP1 x64 cu update-urile la zi.

Pe 22 mai, pe blog-ul Chrome au apărut câteva informații suplimentare: șase bug-uri diferite, în module separate din Chrome, folosite pe rând au permis ieșirea din zona sand box și apoi succesul atacului. Pe scurt, iată despre ce e vorba:

1. Primul bug a permis exploatarea unei vulnerabilități legate de modul în care Chrome folosește opțiunea de prerandare – Chrome își dă seama unde vrea utilizatorul să ajungă și aduce și pregătește de afișare pagina înainte ca utilizatorul să intre efectiv pe ea. În mod normal Chrome blochează plugin-urile până când se intră efectiv pe pagină. Pinkie Pie a descoperit un mod prin care să facă să fie rulate plugin-urile native Chrome pe o pagină prerandată.

2. Așa a putut fi randată o imagine care să exploateze o vulnerabilitate (117656) legată de decodarea GPU. Având controlul pe GPU, Pinkie Pie putea să scrie cod undeva. A găsit una în GPU buckets.

3. GPU buckets folosesc o structură arborescentă în care primii 8 baiți folosesc pointeri către alte noduri. Pinkie a suprascris primii 8 ca să trimită codul către o structură falsă, pe care a creat-o și așa să poată scrie/citi adrese arbitrare în GPU. Împreună cu câteva adrese predictibile din Windows a putut crea un lanț de execuție pentru propriul cod în interiorul unui proces GPU.

4. În teorie nu ar trebui să fie nici-o problemă majoră, încă. Numai că Pinkie a mai descoperit și că pentru o perioadă extrem de scurtă, Chrome aduce o nouă imagine în care GPU-ul poate să vadă canalul primului proces și să se poată conecta pe el – treabă cu care a fost simplu să trimită cod personalizat  (bug 117627)

5. Cu ajutorul unui alt bug ce afectează motorul de randare Pinkie a ajuns să poată rula proces cu drepturi crescute prin intermediul unuia cu drepturi limitate, ceva ce nu ar fi trebuie să fie posibil după cum spun cei de la Google. În momentul acesta devine partea cea mai grea: să iasă din mediul protejat (sand box) al browser-ului.

6. A trebuit să facă manager-ul de extensii din Chrome să creadă că rulează cod de încredere și cu ajutorul a încă două bug-uri (117715) a putut să specifice o locație de unde să fie încărcată o extensie pentru motorul de prerandare (doar browser-ul ar trebui să poată face asta, cu căi prestabilite și fără posibilitatea de schimbare). Al doilea bug (117736) nu a mai prezentat un mesaj de confirmare pentru instalarea unei extensii despachetate de NPAPI. Combinația celor două bug-uri i-au permis lui Pinkie să instaleze și să ruleze un plugin propriu ce a putut rula în afara mediului protejat din Chrome, cu privilegii complete.

Povestea asta i-a adus lui Pinkie 60000 USD. Banal, nu? Cu toate mecanismele de protecție din Windows și Chrome, tot s-a găsit o modalitate să se penetreze sistemul. Suficient timp, bani și dedicație sunt în măsură să aducă rezultatele dorite.

Gândiți-vă că ar fi putut la fel de simplu să nu vândă exploit-ul lui Google și să îl dea unor terți interesați și probabil că Google nu ar fi aflat prea curând de treaba asta.

Se întâmpla acum aproape trei luni. Între timp, cel mai folosit browser din lume a devenit Chrome. Mai vreți să migrați către el?

 Sursa: chip.ro

0 comentarii:

Trimiteți un comentariu

 
Powered by High tech Blog™