V DDR3 pamätiach je možné vyvolať chyby opakovaným čítaním, umožňujú útoky

Vo veľkej väčšine DDR3 pamätí aj od renomovaných výrobcov je možné vyvolať veľké množstvo chýb, zmien uložených informácií, špecifickým opakovaným čítaním.

Chyby pritom nevznikajú priamo v čítaných pamäťových bunkách ale v blízkych riadkoch k týmto bunkám, toto zistenie má tak aj vážne bezpečnostné dôsledky. Aj kód bez oprávnení totiž využitím tohto fenoménu môže zasahovať do pamäte, ktorá mu nepatrí, a minimálne zhodiť operačný systém. Potenciálne môže aj prevziať kontrolu nad počítačom.

Zistil to tím z Carnegie Mellon University a Intel Labs, ktorý o svojim zisteniach informuje v tomto článku (PDF).

Vznik chýb je podľa zistení tímu možné dosiahnuť opakovaným mnohonásobným rýchlym zvýšením a znížením úrovne napätia vodiča fyzického riadku pamäte v rámci jedného obnovovacieho cyklu. Takéto mnohonásobné opakovanie v rámci jedného obnovovacieho cyklu pamäte, teda skôr ako sa uložené hodnoty v DDR pamäti obnovia, môže postupne v moderných pamätiach s čoraz menšími bunkami a ich väčšou hustotou zmeniť uložený náboj a teda uložené hodnoty v pamäťových bunkách v okolitých riadkoch.

Opakované zvyšovanie a znižovanie napätia na vodiči riadku pamäte je možné dosiahnuť jednoduchým opakovaným striedavým čítaním obsahu pamäťovej bunky v tomto riadku a inej v inom riadku. Radič pamäte v takomto prípade opakovane aktivuje a vypína napätie na vodiči daného riadku.

Jednoduchý program, ktorý vyvolá chyby v DDR3 pamätiach

Pri cielenej rýchlej aktivácii a vypínaní napätia ide pritom podľa testu tímu o častý jav. Pri testoch na PC platforiem Intel Sandy Bridge, Ivy Bridge a Haswell pri takomto opakovanom čítaní z jednej pamäťovej pozície v 2 GB module prišlo k zmene hodnôt až 16 až 22 tisíc pamäťových buniek, pričom približne rovnako časté bolo zmenenie hodnoty z 0 na 1 a z 1 na 0. Zrejme pre odlišnosť radičov na AMD Piledriver počet chýb dosahoval iba 58, stále je ale samozrejme dostatočný pre spôsobenie problémov.

Navyše nie je jasné, aká je časová a priestorová distribúcia vzniku chýb a či menší počet chýb v prípade AMD paradoxne neumožňuje cielenejšie vážnejšie útoky.

Pre masové otestovanie rozličných modulov vyvinul tím testovacie zariadenie postavené na FPGA čipe, pričom na ňom otestoval spolu 129 DDR3 pamäťových modulov od troch významných nemenovaných výrobcov. Až u 110 z týchto modulov vznikli chyby.

Na vyvolanie chyby stačilo v minimálnom prípade iba 139 tisíc prečítaní pamäte a u modulu s najväčším počtom vyvolaných chyb sa zmenila každá 1700-tá pamäťová bunka.

Ako najpraktickejšie riešenie pre zabránenie zneužívania tohto problému okrem skvalitnenia čipov navrhuje tím zaviesť inteligentné obnovovanie riadkov DDR pamäte, ktoré by identifikovalo riadky ohrozené potenciálne takouto zmenou pri častom prístupe k ich susedným riadkom a tieto by obnovovalo prednostne.