Okvara podatkov v DDR3 zaradi vpliva sosednjih celic

Matej Huš

25. dec 2014 ob 16:42:29

Raziskovalci s Carneige Mellon University (CMU) in iz Intelovih laboratorijev so ugotovili, da je večina pomnilniških modulov DDR3 ranljiva na tako imenovano row hammer napako (Intelov patentirani izraz). Gre za posledico dizajna in miniaturizacije pomnilniških celic na čipih in ne programsko ranljivost. Problem je poznan že nekaj časa, šele nedavno pa se je pokazala njegova razširjenost in možnost zlorabe za napade iz virtualk.

Za varnost računalniških sistemov je nujno potrebna učinkovita izolacija delov pomnilnika, ki so dostopni različnim procesom z različnimi privilegiji. Pri row hammer gre zato, da veliko število dostopov do iste vrstice (problematičen je ukaz activate, ki odpre vrstico) v kratkem času povzroči težave v sosednjih vrsticah (disturbance error), kar vodi do izgube oziroma spremembe podatkov. Tam se lahko biti spremenijo (obrnejo), ker parazitski tokovi ob dostopu do vrstice v okolici povzročajo težave. To je zlasti pogosto, kadar določen naslov v pomnilniku uporablja več procesov. Gre za sklopitev sosednjih vrstic (inter-cell coupling, row-row coupling), ki se je zaradi miniaturizacije pojavila po letu 2010. To ni eksotična napaka, ampak pogosta in predvidljiva okvara podatkov, medtem ko celice fizično ostanejo brezhibne, zaradi česar je detekcija otežena.

Preverili so 129 pomnilniških modulov in odkrili, da je ranljivih kar 110; vsi so bili proizvedeni po letu 2010. Pred tem letom težav ni bilo, po letu 2013 pa so ranljivi vsi novi moduli. Pojav ni izrazito temperaturno odvisen, je pa zelo ponovljiv oziroma ga je mogoče enostavno reproducirati. To je problem, ker omogoča povsem strojno manipulacijo podatkov v pomnilniku, do katerih program sicer logično nima dostopa.

Pametnih rešitev ni, je pa mogoče z nekaterimi ukrepi zmanjšati verjetnost za obrnitev bita. Mogoče je omejiti dostopni interval, torej da mora med zaporednima dostopa do iste vrstice (row) preteči najmanj nekaj časa, kar seveda negativno vpliva na hitrost oziroma zmogljivost. Druga varianta je povečati pogostost osveževanja RAM-a, kjer pa spet vsak dodatni cikel povzroči povišanje porabe energije in padec hitrosti. ECC ni čudežna paličica, ker popravlja le en obrnjen bit, medtem ko omenjena napaka često obrne več bitov. Na koncu je edina trajna rešitev izdelava boljših čipov, kar pa predstavlja visoke stroške.

Intel in CMU v vmesnem času predlagata rešitev z imenom PARA (Probabilistic Adjacent Row Activation). Po vsakem dostopu do vrstice se z nizko verjetnostjo p (recimo 0,005) osveži naključno izbrana sosednja vrstica, kar je v testiranih pogojih zmanjšalo pogostnost napak na eno na leto. S prilagajanjem p je mogoče poskrbeti za poljubno ojačitev ali oslabitev zaščite. Taka rešitev v povprečju upočasni sistem za manj kot odstotek in praktično ne poveča poraba energije ter ne potrebuje nobenih dragih sprememb dizajna ali čipov.