# Row hammer

Row hammer (també escrit com rowhammer) és una explotació de seguretat que aprofita un efecte secundari no desitjat i indesitjable en la memòria dinàmica d'accés aleatori (DRAM) en què les cèl·lules de memòria interaccionen elèctricament entre elles filtrant les seves càrregues, possiblement canviant el contingut de les zones properes. files de memòria que no es van abordar a l'accés a la memòria original. Aquesta elusió de l'aïllament entre les cèl·lules de memòria DRAM és el resultat de l'alta densitat de cèl·lules de la DRAM moderna i es pot desencadenar per patrons d'accés a la memòria especialment dissenyats que activen ràpidament les mateixes files de memòria nombroses vegades.
L'efecte de martell s'ha utilitzat en algunes explotacions de seguretat informàtica d'escalada de privilegis, i els atacs basats en xarxa també són teòricament possibles.
Existeixen diferents tècniques basades en maquinari per evitar que es produeixi l'efecte del martell de fila, inclòs el suport necessari en alguns processadors i tipus de mòduls de memòria DRAM.

## Rerefons

A la RAM dinàmica (DRAM), cada bit de dades emmagatzemades ocupa una cel·la de memòria independent que s'implementa elèctricament amb un condensador i un transistor. L'estat de càrrega d'un condensador (carregat o descarregat) és el que determina si una cèl·lula DRAM emmagatzema "1" o "0" com a valor binari. Un gran nombre de cel·les de memòria DRAM estan empaquetades en circuits integrats, juntament amb alguna lògica addicional que organitza les cel·les amb l'objectiu de llegir, escriure i actualitzar les dades.
Les cel·les de memòria (quadrats blaus en ambdues il·lustracions) s'organitzen encara més en matrius i s'adrecen a través de files i columnes. Una adreça de memòria aplicada a una matriu es divideix en l'adreça de fila i l'adreça de columna, que són processades pels descodificadors d'adreces de fila i columna (en ambdues il·lustracions, rectangles verds verticals i horitzontals, respectivament). Després que una adreça de fila selecciona la fila per a una operació de lectura (la selecció també es coneix com a activació de fila), els bits de totes les cel·les de la fila es transfereixen als amplificadors de sentit que formen la memòria intermèdia de fila (quadrats vermells en ambdues il·lustracions), des dels quals el bit exacte es selecciona mitjançant l'adreça de columna. En conseqüència, les operacions de lectura són de naturalesa destructiva perquè el disseny de la DRAM requereix que les cel·les de memòria es tornin a escriure després que s'hagin llegit els seus valors transferint les càrregues de les cèl·lules al buffer de fila. Les operacions d'escriptura descodifiquen les adreces d'una manera similar, però com a resultat del disseny s'han de reescriure files senceres perquè es canviï el valor d'un sol bit. $^{:2–3}$

## Visió general

L'augment de la densitat de circuits integrats DRAM ha donat lloc a cèl·lules de memòria físicament més petites que contenen menys càrrega, donant lloc a marges de soroll operacionals més baixos, augment de les taxes d'interaccions electromagnètiques entre les cèl·lules de memòria i una major possibilitat de pèrdua de dades. Com a resultat, s'han observat errors de pertorbació, causats per les cèl·lules que interfereixen en el funcionament de les altres i es manifesten com a canvis aleatoris en els valors dels bits emmagatzemats a les cel·les de memòria afectades. La consciència dels errors de pertorbació es remunta a principis dels anys 70 i Intel 1103 com els primers circuits integrats DRAM disponibles comercialment; des de llavors, els fabricants de DRAM han emprat diverses tècniques de mitigació per contrarestar els errors de pertorbació, com ara millorar l'aïllament entre cèl·lules i realitzar proves de producció. Tanmateix, els investigadors van demostrar en una anàlisi del 2014 que els xips DDR3 SDRAM disponibles comercialment fabricats el 2012 i el 2013 són susceptibles a errors de pertorbació, mentre que utilitzaven el terme martell de fila per anomenar l'efecte secundari associat que va provocar canvis de bits observats.

### Mitigació

Existeixen diferents mètodes per a la detecció, prevenció, correcció o mitigació amb més o menys èxit de l'efecte del martell. Les proves mostren que el codi de correcció d'errors simple, que proporciona capacitats de correcció d'error únic i de detecció d'error doble (SECDED), no és capaç de corregir ni detectar tots els errors de pertorbació observats perquè alguns d'ells inclouen més de dos bits invertits per paraula de memòria. $^{:8}$ $^{:32}$A més, la investigació mostra que les voltes de martell de tres bits orientades amb precisió impedeixen que la memòria ECC noti les modificacions.
Una solució menys eficaç és introduir una actualització de memòria més freqüent, amb els intervals d'actualització més curts que els 64ms habituals, però aquesta tècnica té com a resultat un major consum d'energia i una major sobrecàrrega de processament; alguns venedors proporcionen actualitzacions de microprogramari que implementen aquest tipus de mitigació. Una de les mesures de prevenció més complexes realitza la identificació basada en comptadors de les files de memòria d'accés freqüent i actualitza de manera proactiva les files veïnes; un altre mètode emet actualitzacions aleatòries infreqüents addicionals de les files de memòria veïnes de les files a les quals s'accedeix, independentment de la seva freqüència d'accés. La investigació demostra que aquestes dues mesures de prevenció causen impactes insignificants en el rendiment. $^{:10–11}$

## Referències

* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors» (en anglès). ece.cmu.edu. IEEE, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Goodin, Dan. «Cutting-edge hack gives super user status by exploiting DRAM weakness» (en anglès). Ars Technica, 10-03-2015. [Consulta: 10 març 2015].
* ↑ Ducklin, Paul. «'Row hammering' – how to exploit a computer by overworking its memory» (en anglès). Sophos, 12-03-2015. [Consulta: 14 març 2015].
* ↑ Goodin, Dan. «Cutting-edge hack gives super user status by exploiting DRAM weakness» (en anglès). Ars Technica, 10-03-2015. [Consulta: 10 març 2015].
* ↑ Seaborn, Mark. «Exploiting the DRAM rowhammer bug to gain kernel privileges» (en anglès). googleprojectzero.blogspot.com, 09-03-2015. [Consulta: 10 març 2015].
* ↑ Marcin Kaczmarski. «Thoughts on Intel Xeon E5-2600 v2 Product Family Performance Optimisation – Component selection guidelines». Intel, 01-08-2014. Arxivat de l'original el 18 d’abril 2024. [Consulta: 11 març 2015].
* ↑ Greenberg, Marc. «Reliability, Availability, and Serviceability (RAS) for DDR DRAM interfaces». memcon.com p. 2, 7, 10, 20, 27, 15-10-2014. Arxivat de l'original el 5 juliol 2016. [Consulta: 11 març 2015].
* ↑ «Lecture 12: DRAM Basics» (en anglès). utah.edu p. 2–7, 17-02-2011. [Consulta: 10 març 2015].
* ↑ «Understanding DRAM Operation» (en anglès). IBM, 01-12-1996. Arxivat de l'original el 29 agost 2017. [Consulta: 10 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors» (en anglès). ece.cmu.edu. IEEE, 24-06-2014. [Consulta: 10 març 2015].
* ↑ «Lecture 12: DRAM Basics» (en anglès). utah.edu p. 2–7, 17-02-2011. [Consulta: 10 març 2015].
* ↑ «Understanding DRAM Operation» (en anglès). IBM, 01-12-1996. Arxivat de l'original el 29 agost 2017. [Consulta: 10 març 2015].
* ↑ David August. «Lecture 20: Memory Technology» (en anglès). cs.princeton.edu p. 3–5, 23-11-2004. Arxivat de l'original el 19 maig 2005. [Consulta: 10 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: DRAM Disturbance Errors» (en anglès). ece.cmu.edu, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors» (en anglès). ece.cmu.edu. IEEE, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Ducklin, Paul. «'Row hammering' – how to exploit a computer by overworking its memory» (en anglès). Sophos, 12-03-2015. [Consulta: 14 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: DRAM Disturbance Errors» (en anglès). ece.cmu.edu, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors» (en anglès). ece.cmu.edu. IEEE, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: DRAM Disturbance Errors» (en anglès). ece.cmu.edu, 24-06-2014. [Consulta: 10 març 2015].
* ↑ VUsec, Systems and Network Security Group. «ECCploit: ECC Memory Vulnerable to Rowhammer Attacks After All» (en anglès). Vrije Universiteit Amsterdam, 11-11-2018. [Consulta: 30 maig 2022].
* ↑ «Row Hammer Privilege Escalation (Lenovo Security Advisory LEN-2015-009)» (en anglès). Lenovo, 05-08-2015. [Consulta: 6 agost 2015].
* ↑ Yoongu Kim. «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors» (en anglès). ece.cmu.edu. IEEE, 24-06-2014. [Consulta: 10 març 2015].
* ↑ Dae-Hyun Kim. «Architectural Support for Mitigating Row Hammering in DRAM Memories» (en anglès). ece.gatech.edu. IEEE, 09-10-2014. Arxivat de l'original el 11 març 2015. [Consulta: 11 març 2015].