Objavljeno: 10.3.2015 08:00

Pomanjkljiv dizajn pomnilniških čipov je resna varnostna luknja

Raziskovalci iz Googlove skupine za iskanje ranljivosti Project Zero so pokazali, da je strojno pomnilniško ranljivost "rowhammer", ki so jo teoretično opisali decembra, tudi v praksi mogoče zlorabiti. Zaradi dizajna pomnilniških čipov je mogoče v pomnilniku DDR3 izključno z bralnimi operacijami spremeniti bite v sosednjih celicah, kar so izkoristili za eskalacijo privilegijev na računalniku z nameščenim Linuxom. Napad je še vedno bolj teoretična kot praktična grožnja, a da bo tako tudi ostalo, bo treba v prihodnosti spremeniti dizajn čipov.

Celice v pomnilniku DRAM sestavljajo kondenzatorji, ki ves čas puščajo naboj, zato je pomnilnik neobstojen. V modernih računalnikih ga je zato treba vsakih 64 milisekund prebrati in ponovno zapisati, za kar skrbi krmilnik. Hkrati pa imajo celice še eno slabost: zelo občutljive na zunanje vplive so. Kozmični žarki ali radioaktivni razpadi v okolici lahko povzročijo spremembo bita (bit flip). Zato je pomnilnik zgrajen iz neradioaktivnih materialov, proti kozmičnim žarkom pa ne moremo nič.

Raziskovalci pa so pokazali, da je mogoče z zaporednim branjem istih celic povzročiti spremembo bita v sosednjih celicah. Ranljivi so številni pomnilniški moduli, ki so bili proizvedeni po letu 2010 ter praktično vsi najnovejši. Razlog je v miniaturizaciji in večanju kapacitete, zaradi česar proizvajalci na manjši prostor čedalje  bliže tlačijo čedalje več celic.

Kritični ukaz je activate, ki vrstico v pomnilniku pripravi za branje. Če ga izvedemo več tisočkrat v sekundi, preden se pomnilnik uspe osvežiti, in vmes skrbimo za odmetavanje predpomnilnika (cache flush), da krmilnik dejansko bere iz pomnilnika in nam ne servira vsakokrat zgolj vrednosti iz predpomnilnika, lahko spremenimo bite v sosednjih celicah.

Praktična izvedba je odvisna od modela pomnilniškega krmilnika in drugih komponent v sistemu, a je izvedljiva, kot dokazuje Google. Uspeli so doseči spremembo bita, kar se ni odrazilo kot zrušitev sistema, temveč eskalacija privilegijev.

To je širši napad od prekoračitve predpomnilnika (buffer overflow). Pri slednji pišemo v pomnilnik več, kolikor je prostora, zato se nekaj podatkov zapiše v področje, kamor načeloma nimamo dostopa. Če ima to področje višje pravice, se koda lahko izvede. Z eskalacijo privilegijev pa pridobimo popoln dostop nad računalnikom. ECC problema ne rešuje, ker lahko napadalci vedno poskušajo spremeniti dva bita, česar ECC ne bo uspel odpraviti.

Pametne rešitve še ni, k sreči pa tudi ranljivosti zelo verjetno še nihče ne zlorablja.

http://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji