Row hammer (también escrito como rowhammer ) es un exploit de seguridad que se aprovecha de un efecto secundario involuntario e indeseable en la memoria dinámica de acceso aleatorio (DRAM) en la que las celdas de memoria interactúan eléctricamente entre sí filtrando sus cargas, posiblemente cambiando el contenido de los dispositivos cercanos. filas de memoria que no se abordaron en el acceso a la memoria original. Esta elusión del aislamiento entre las celdas de memoria DRAM es el resultado de la alta densidad de celdas en la DRAM moderna y puede desencadenarse mediante patrones de acceso a la memoria especialmente diseñados que activan rápidamente las mismas filas de memoria en numerosas ocasiones. [1] [2] [3]
El efecto de martillo de fila se ha utilizado en algunas vulnerabilidades de seguridad informática de escalada de privilegios , [2] [4] [5] [6] y los ataques basados en la red también son teóricamente posibles. [7] [8]
Existen diferentes técnicas basadas en hardware para evitar que se produzca el efecto de martillo de fila, incluido el soporte necesario en algunos procesadores y tipos de módulos de memoria DRAM . [9] [10]
Fondo
En la RAM dinámica (DRAM), cada bit de datos almacenados ocupa una celda de memoria separada que se implementa eléctricamente con un capacitor y un transistor . El estado de carga de un condensador (cargado o descargado) es lo que determina si una celda DRAM almacena "1" o "0" como valor binario . Un gran número de celdas de memoria DRAM están empaquetadas en circuitos integrados , junto con alguna lógica adicional que organiza las celdas con el propósito de leer, escribir y actualizar los datos. [11] [12]
Las celdas de memoria (cuadrados azules en ambas ilustraciones) se organizan además en matrices y se direccionan a través de filas y columnas. Una dirección de memoria aplicada a una matriz se divide en la dirección de fila y la dirección de columna, que son procesadas por los decodificadores de dirección de fila y columna (en ambas ilustraciones, rectángulos verdes verticales y horizontales, respectivamente). Después de que una dirección de fila selecciona la fila para una operación de lectura (la selección también se conoce como activación de fila ), los bits de todas las celdas de la fila se transfieren a los amplificadores de detección que forman el búfer de fila (cuadrados rojos en ambas ilustraciones), a partir de los cuales el bit exacto se selecciona utilizando la dirección de columna. En consecuencia, las operaciones de lectura son de naturaleza destructiva porque el diseño de DRAM requiere que las celdas de memoria se reescriban después de leer sus valores transfiriendo las cargas de las celdas al búfer de filas. Las operaciones de escritura decodifican las direcciones de manera similar, pero como resultado del diseño, se deben reescribir filas enteras para cambiar el valor de un solo bit. [1] : 2-3 [11] [12] [13]
Como resultado del almacenamiento de bits de datos utilizando condensadores que tienen una tasa de descarga natural, las celdas de memoria DRAM pierden su estado con el tiempo y requieren la reescritura periódica de todas las celdas de memoria, que es un proceso conocido como actualización. [1] : 3 [11] Como otro resultado del diseño, la memoria DRAM es susceptible a cambios aleatorios en los datos almacenados, que se conocen como errores de memoria blanda y se atribuyen a los rayos cósmicos y otras causas. Existen diferentes técnicas que contrarrestan los errores de memoria blanda y mejoran la confiabilidad de la DRAM, de las cuales la memoria de código de corrección de errores (ECC) y sus variantes avanzadas (como la memoria bloqueada ) son las más utilizadas. [14]
Descripción general
El aumento de la densidad de los circuitos integrados DRAM ha llevado a celdas de memoria físicamente más pequeñas que contienen menos carga , lo que resulta en márgenes de ruido operacional más bajos , mayores tasas de interacciones electromagnéticas entre celdas de memoria y una mayor posibilidad de pérdida de datos. Como resultado, se han observado errores de perturbación , causados por celdas que interfieren con el funcionamiento de las demás y que se manifiestan como cambios aleatorios en los valores de los bits almacenados en las celdas de memoria afectadas. La conciencia de los errores de perturbación se remonta a principios de la década de 1970 y a Intel 1103 como los primeros circuitos integrados DRAM disponibles comercialmente; Desde entonces, los fabricantes de DRAM han empleado varias técnicas de mitigación para contrarrestar los errores de perturbación, como mejorar el aislamiento entre celdas y realizar pruebas de producción. Sin embargo, los investigadores demostraron en un análisis de 2014 que los chips DDR3 SDRAM comercialmente disponibles fabricados en 2012 y 2013 son susceptibles a errores de perturbación, mientras que utilizan el término martillo de fila para nombrar el efecto secundario asociado que llevó a los volteos de bits observados . [1] [3] [15]
La oportunidad de que se produzca el efecto de martillo de fila en la memoria DDR3 [16] se atribuye principalmente a la alta densidad de células de memoria de DDR3 y los resultados de las interacciones asociadas entre las células, mientras que las activaciones rápidas de fila de DRAM se han determinado como la causa principal. Las activaciones frecuentes de filas provocan fluctuaciones de voltaje en las líneas de selección de filas asociadas, que se ha observado que inducen tasas de descarga superiores a las naturales en los condensadores que pertenecen a filas de memoria cercanas (adyacentes, en la mayoría de los casos), que se denominan filas víctimas ; si las celdas de memoria afectadas no se actualizan antes de que pierdan demasiada carga, se producen errores de perturbación. Las pruebas muestran que se puede observar un error de perturbación después de realizar alrededor de 139,000 accesos subsiguientes a filas de memoria (con descargas de caché ), y que hasta una celda de memoria de cada 1,700 celdas puede ser susceptible. Esas pruebas también muestran que la tasa de errores de perturbación no se ve sustancialmente afectada por el aumento de la temperatura ambiental, mientras que depende del contenido real de DRAM porque ciertos patrones de bits dan como resultado tasas de error de perturbación significativamente más altas. [1] [2] [15] [17]
Una variante llamada martilleo de doble cara implica activaciones dirigidas de dos filas de DRAM que rodean una fila de víctimas: en la ilustración proporcionada en esta sección, esta variante activaría ambas filas amarillas con el objetivo de inducir volteos de bits en la fila púrpura, que en este caso caso sería la fila de la víctima. Las pruebas muestran que este enfoque puede resultar en una tasa significativamente mayor de errores de perturbación, en comparación con la variante que activa solo una de las filas DRAM vecinas de la fila víctima. [4] [18] : 19-20 [19]
Mitigación
Existen diferentes métodos para una detección, prevención, corrección o mitigación más o menos exitosa del efecto de martillo de hileras. Las pruebas muestran que el código de corrección de errores simple , que proporciona capacidades de corrección de error simple y detección de error doble (SECDED), no puede corregir o detectar todos los errores de perturbación observados porque algunos de ellos incluyen más de dos bits invertidos por palabra de memoria . [1] : 8 [15] : 32 Además, la investigación muestra que los giros de martillo de tres bits dirigidos con precisión evitan que la memoria ECC note las modificaciones. [20] [21]
Una solución menos eficaz es introducir una actualización de la memoria más frecuente, con intervalos de actualización más cortos que los habituales 64 ms, [a] pero esta técnica da como resultado un mayor consumo de energía y una mayor sobrecarga de procesamiento; algunos proveedores proporcionan actualizaciones de firmware que implementan este tipo de mitigación. [22] Una de las medidas de prevención más complejas lleva a cabo una identificación contrabasada de las filas de memoria a las que se accede con frecuencia y actualiza de forma proactiva las filas vecinas; otro método emite actualizaciones aleatorias adicionales infrecuentes de las filas de memoria vecinas a las filas a las que se accede, independientemente de su frecuencia de acceso. La investigación muestra que estas dos medidas de prevención causan impactos insignificantes en el rendimiento. [1] : 10-11 [23]
Desde el lanzamiento de la microarquitectura Ivy Bridge , los procesadores Intel Xeon admiten la llamada actualización de fila de pseudodirecto (pTRR) que se puede usar en combinación con módulos de memoria dual en línea (DIMM) DDR3 compatibles con pTRR para mitigar el efecto de martillo de fila al actualizando automáticamente las posibles filas de víctimas, sin impacto negativo en el rendimiento o el consumo de energía. Cuando se utilizan con DIMM que no son compatibles con pTRR, estos procesadores Xeon de forma predeterminada recurren a la actualización de DRAM al doble de la frecuencia habitual, lo que da como resultado una latencia de acceso a la memoria ligeramente mayor y puede reducir el ancho de banda de la memoria hasta en un 2–4%. [9]
El estándar de memoria móvil LPDDR4 publicado por JEDEC [24] incluye soporte de hardware opcional para la llamada actualización de fila de destino (TRR) que evita el efecto de martillo de fila sin afectar negativamente el rendimiento o el consumo de energía. [10] [25] [26] Además, algunos fabricantes implementan TRR en sus productos DDR4 , [27] [28] aunque no forma parte del estándar de memoria DDR4 publicado por JEDEC. [29] Internamente, TRR identifica posibles filas víctimas, contando el número de activaciones de filas y comparándolas con valores predefinidos de recuento máximo de activación (MAC) y ventana de activación máxima (t MAW ) específicos del chip , y actualiza estas filas para evitar cambios de bits. . El valor MAC es el número total máximo de activaciones de filas que se pueden encontrar en una fila DRAM particular dentro de un intervalo de tiempo que es igual o más corto que la cantidad de tiempo t MAW antes de que sus filas vecinas se identifiquen como filas víctimas; TRR también puede marcar una fila como fila víctima si la suma de las activaciones de fila para sus dos filas vecinas alcanza el límite de MAC dentro de la ventana de tiempo t MAW . [24] [30]
Debido a la necesidad de una gran cantidad de activaciones de fila DRAM realizadas rápidamente, los exploits de martillo de fila emiten una gran cantidad de accesos a memoria no almacenados en caché que causan fallas de caché , que pueden detectarse monitoreando la tasa de fallas de caché en busca de picos inusuales utilizando contadores de rendimiento de hardware . [4] [31]
La versión 5.0 del software de diagnóstico de memoria MemTest86 , lanzado el 3 de diciembre de 2013, agregó una prueba de martillo de fila que verifica si la RAM de la computadora es susceptible a errores de perturbación, pero solo funciona si la computadora arranca UEFI ; sin UEFI, arranca una versión anterior sin prueba de martillo. [32]
Trascendencia
La protección de la memoria , como forma de evitar que los procesos accedan a la memoria que no ha sido asignada a cada uno de ellos, es uno de los conceptos detrás de la mayoría de los sistemas operativos modernos . Al utilizar la protección de la memoria en combinación con otros mecanismos relacionados con la seguridad, como los anillos de protección , es posible lograr una separación de privilegios entre procesos, en los que los programas y los sistemas informáticos en general se dividen en partes limitadas a los privilegios específicos que requieren para realizar un proceso en particular. tarea. El uso de la separación de privilegios también puede reducir el alcance del daño potencial causado por los ataques a la seguridad informática al restringir sus efectos a partes específicas del sistema. [33] [34]
Los errores de perturbación (explicados en la sección anterior ) derrotan eficazmente varias capas de protección de memoria al " cortocircuitarlas " a un nivel de hardware muy bajo, creando prácticamente un tipo de vector de ataque único que permite que los procesos alteren el contenido de partes arbitrarias de la memoria principal manipulando directamente el hardware de memoria subyacente. [2] [4] [18] [35] En comparación, los vectores de ataque "convencionales" como los desbordamientos de búfer apuntan a eludir los mecanismos de protección a nivel de software, explotando varios errores de programación para lograr alteraciones de los contenidos de la memoria principal inaccesibles. [36]
Exploits
code1a: mov ( X ), % eax // leer desde la dirección X mov ( Y ), % ebx // leer desde la dirección Y clflush ( X ) // limpiar el caché para la dirección X clflush ( Y ) // limpiar el caché para la dirección Y mfence jmp code1a |
Un fragmento de código ensamblador x86 que induce el efecto de martillo de fila (direcciones de memoria X y Y deben asignarse a diferentes filas de DRAM en el mismo banco de memoria ) [1] : 3 [4] [18] : 13–15 |
La investigación inicial sobre el efecto de martillo de fila, publicada en junio de 2014, describió la naturaleza de los errores de perturbación e indicó la posibilidad de construir un ataque, pero no proporcionó ningún ejemplo de un exploit de seguridad en funcionamiento. [1] Un artículo de investigación posterior de octubre de 2014 no insinuó la existencia de ningún problema relacionado con la seguridad que surja del efecto de martillo de fila. [dieciséis]
El 9 de marzo de 2015, el Proyecto Zero de Google reveló dos exploits de escalada de privilegios de trabajo basados en el efecto de martillo de fila, estableciendo su naturaleza explotable en la arquitectura x86-64 . Uno de los exploits revelados apunta al mecanismo de Google Native Client (NaCl) para ejecutar un subconjunto limitado de instrucciones de máquina x86-64 dentro de una caja de arena , [18] : 27 explotando el efecto de martillo de fila para escapar de la caja de arena y obtener la capacidad de emitir llamadas al sistema directamente. Esta vulnerabilidad de NaCl , rastreada como CVE - 2015-0565 , se ha mitigado modificando el NaCl para que no permita la ejecución de la instrucción de máquina ( cache line flush [37] ), que anteriormente se creía necesaria para construir una fila efectiva. ataque de martillo. [2] [4] [35]clflush
El segundo exploit revelado por Project Zero se ejecuta como un proceso de Linux sin privilegios en la arquitectura x86-64, explotando el efecto de martillo de filas para obtener acceso sin restricciones a toda la memoria física instalada en una computadora. Mediante la combinación de los errores de perturbación con pulverización de memoria , esta hazaña es capaz de alterar página entradas de la tabla [18] : 35 utilizado por la memoria virtual sistema para el mapeo de direcciones virtuales a direcciones físicas , lo que resulta en la hazaña acceso de memoria no restringida. [18] : 34,36–57 Debido a su naturaleza y la incapacidad de la arquitectura x86-64 para realizar clflush
una instrucción de máquina privilegiada, este exploit difícilmente puede mitigarse en computadoras que no usan hardware con mecanismos de prevención de martillo de fila incorporados. . Al probar la viabilidad de los exploits, Project Zero descubrió que aproximadamente la mitad de las 29 computadoras portátiles probadas experimentaron errores de perturbación, y algunos de ellos ocurrieron en computadoras portátiles vulnerables en menos de cinco minutos de ejecución de código inductor de martillo de fila; Las computadoras portátiles probadas se fabricaron entre 2010 y 2014 y utilizaron memoria DDR3 no ECC. [2] [4] [35]
En julio de 2015, un grupo de investigadores de seguridad publicó un artículo que describe una arquitectura , y una forma independiente del conjunto de instrucciones, para explotar el efecto de martillo de fila. En lugar de depender de la clflush
instrucción para realizar vaciados de caché, este enfoque logra accesos a memoria no almacenados en caché al provocar una tasa muy alta de desalojo de caché utilizando patrones de acceso a memoria cuidadosamente seleccionados. Aunque las políticas de reemplazo de caché difieren entre procesadores, este enfoque supera las diferencias arquitectónicas al emplear un algoritmo de estrategia de desalojo de caché adaptativo . [18] : 64–68 La prueba de concepto para este enfoque se proporciona como una implementación de código nativo y como una implementación de JavaScript pura que se ejecuta en Firefox 39. La implementación de JavaScript, llamada Rowhammer.js , [38] utiliza caracteres de tipo grande arreglos y confía en su asignación interna usando páginas grandes ; como resultado, demuestra una explotación de muy alto nivel de una vulnerabilidad de muy bajo nivel. [39] [40] [41] [42]
En octubre de 2016, los investigadores publicaron DRAMMER, una aplicación de Android que usa el martillo de fila, junto con otros métodos, para obtener acceso de root de manera confiable en varios teléfonos inteligentes populares. [43] La vulnerabilidad fue reconocida como CVE - 2016-6728 [44] y Google publicó una mitigación en un mes. Sin embargo, debido a la naturaleza general de las posibles implementaciones del ataque, es difícil implementar de manera confiable un parche de software efectivo. En junio de 2018, la mayoría de las propuestas de parches realizadas por la academia y la industria eran poco prácticas de implementar o insuficientes para detener todos los ataques. Como mitigación, los investigadores propusieron una defensa ligera que previene los ataques basados en el acceso directo a la memoria (DMA) al aislar los búferes DMA con filas de protección. [45] [46]
Ver también
- Codificación de memoria: función del controlador de memoria que convierte los datos del usuario escritos en la memoria en patrones pseudoaleatorios
- Endurecimiento por radiación : el acto de hacer que los componentes electrónicos sean resistentes al daño o al mal funcionamiento causado por la radiación ionizante.
- Alteración de un solo evento : un cambio de estado causado por iones o radiación electromagnética que golpean un nodo sensible en un dispositivo electrónico
- Error suave : un tipo de error que implica cambios erróneos en señales o datos, pero sin cambios en el dispositivo o circuito subyacente.
Notas
- ^ Las investigaciones muestran que la tasa de errores de perturbación en una selección de módulos de memoria DDR3 se cierra a cero cuando el intervalo de actualización de la memoria se vuelve aproximadamente siete veces más corto que el predeterminado de 64 ms. [15] : 17,26
Referencias
- ^ a b c d e f g h yo Yoongu Kim; Ross Daly; Jeremie Kim; Chris Fallin; Ji Hye Lee; Donghyuk Lee; Chris Wilkerson; Konrad Lai; Onur Mutlu (24 de junio de 2014). "Voltear bits en la memoria sin acceder a ellos: un estudio experimental de errores de perturbación de DRAM" (PDF) . ece.cmu.edu . IEEE . Consultado el 10 de marzo de 2015 .
- ^ a b c d e f Dan Goodin (10 de marzo de 2015). "El truco de vanguardia otorga un estatus de superusuario al explotar la debilidad de la DRAM" . Ars Technica . Consultado el 10 de marzo de 2015 .
- ^ a b Paul Ducklin (12 de marzo de 2015). " ' Row hammering' - cómo explotar una computadora sobrecargando su memoria" . Sophos . Consultado el 14 de marzo de 2015 .
- ^ a b c d e f g Mark Seaborn; Thomas Dullien (9 de marzo de 2015). "Aprovechando el error de DRAM rowhammer para obtener privilegios del kernel" . googleprojectzero.blogspot.com . Consultado el 10 de marzo de 2015 .
- ^ "El uso de bitflips de Rowhammer para rootear teléfonos Android es ahora una cosa" . Ars Technica . Consultado el 25 de octubre de 2016 .
- ^ Swati Khandelwal (3 de mayo de 2018). "GLitch: nuevo ataque 'Rowhammer' puede secuestrar teléfonos Android de forma remota" . The Hacker News . Consultado el 21 de mayo de 2018 .
- ^ Mohit Kumar (10 de mayo de 2018). "Nuevo ataque Rowhammer puede secuestrar computadoras de forma remota a través de la red" . The Hacker News . Consultado el 21 de mayo de 2018 .
- ^ Swati Khandelwal (16 de mayo de 2018). "Nethammer: explotación del error DRAM Rowhammer a través de solicitudes de red" . The Hacker News . Consultado el 21 de mayo de 2018 .
- ^ a b Marcin Kaczmarski (agosto de 2014). "Reflexiones sobre la optimización del rendimiento de la familia de productos Intel Xeon E5-2600 v2: directrices para la selección de componentes" (PDF) . Intel . pag. 13 . Consultado el 11 de marzo de 2015 .
- ^ a b Marc Greenberg (15 de octubre de 2014). "Fiabilidad, disponibilidad y capacidad de servicio (RAS) para interfaces DDR DRAM" (PDF) . memcon.com . pp. 2, 7, 10, 20, 27. Archivado desde el original (PDF) el 5 de julio de 2016 . Consultado el 11 de marzo de 2015 .
- ^ a b c "Lección 12: Conceptos básicos de DRAM" (PDF) . utah.edu . 17 de febrero de 2011. págs. 2–7 . Consultado el 10 de marzo de 2015 .
- ^ a b "Comprensión del funcionamiento de DRAM" (PDF) . IBM . Diciembre de 1996. Archivado desde el original (PDF) el 29 de agosto de 2017 . Consultado el 10 de marzo de 2015 .
- ^ David August (23 de noviembre de 2004). "Conferencia 20: Tecnología de la memoria" (PDF) . cs.princeton.edu . págs. 3-5. Archivado desde el original (PDF) el 19 de mayo de 2005 . Consultado el 10 de marzo de 2015 .
- ^ Bianca Schroeder; Eduardo Pinheiro; Wolf-Dietrich Weber (25 de junio de 2009). "Errores de DRAM en la naturaleza: un estudio de campo a gran escala" (PDF) . cs.toronto.edu . ACM . Consultado el 10 de marzo de 2015 .
- ^ a b c d e Yoongu Kim; Ross Daly; Jeremie Kim; Chris Fallin; Ji Hye Lee; Donghyuk Lee; Chris Wilkerson; Konrad Lai; Onur Mutlu (24 de junio de 2014). "Voltear bits en la memoria sin acceder a ellos: errores de perturbación de DRAM" (PDF) . ece.cmu.edu . Consultado el 10 de marzo de 2015 .
- ^ a b Parque Kyungbae; Sanghyeon Baeg; ShiJie Wen; Richard Wong (octubre de 2014). "Martilleo de precarga activa en una fila inducida por falla en DDR3 SDRAM bajo tecnología de 3 × nm". Martilleo de precarga activa en una falla inducida por fila en SDRAM DDR3 con tecnología de 3x nm . IEEE . págs. 82–85. doi : 10.1109 / IIRW.2014.7049516 . ISBN 978-1-4799-7308-8.
- ^ Yoongu Kim; Ross Daly; Jeremie Kim; Chris Fallin; Ji Hye Lee; Donghyuk Lee; Chris Wilkerson; Konrad Lai; Onur Mutlu (30 de julio de 2015). "RowHammer: análisis de confiabilidad e implicaciones de seguridad" (PDF) . ece.cmu.edu . Consultado el 7 de agosto de 2015 .
- ^ a b c d e f g Mark Seaborn; Thomas Dullien (6 de agosto de 2015). "Aprovechamiento del error de DRAM rowhammer para obtener privilegios del kernel: cómo causar y explotar errores de un solo bit" (PDF) . Sombrero negro . Consultado el 7 de agosto de 2015 .
- ^ Andy Greenberg (10 de marzo de 2015). "Hack épico de Googlers explota cómo la memoria pierde electricidad" . Cableado . Consultado el 17 de marzo de 2015 .
- ^ Shaun Nichols (21 de noviembre de 2018). "3 es el número mágico (de bits): voltéelos a la vez y su protección ECC puede ser Rowhammer'd" . El registro .
- ^ Dan Goodin (22 de noviembre de 2018). "Los bitflips de Rowhammer potencialmente desastrosos pueden eludir las protecciones de ECC; ECCploit es el primer ataque de Rowhammer que derrota el código de corrección de errores" . Ars Technica . Consultado el 17 de enero de 2021 .
- ^ "Escalada de privilegios de martillo de fila (aviso de seguridad de Lenovo LEN-2015-009)" . Lenovo . 5 de agosto de 2015 . Consultado el 6 de agosto de 2015 .
- ^ Dae-Hyun Kim; Prashant J. Nair; Moinuddin K. Qureshi (9 de octubre de 2014). "Soporte arquitectónico para mitigar el martilleo de hileras en memorias DRAM" (PDF) . ece.gatech.edu . IEEE . Archivado desde el original (PDF) el 11 de marzo de 2015 . Consultado el 11 de marzo de 2015 .
- ^ a b "Estándar JEDEC JESD209-4A: Velocidad de datos doble de baja potencia (LPDDR4)" (PDF) . JEDEC . Noviembre de 2015. págs. 222–223 . Consultado el 10 de enero de 2016 .
- ^ Kishore Kasamsetty (22 de octubre de 2014). "Desafíos y soluciones de escalado de DRAM en el contexto LPDDR4" (PDF) . memcon.com . pag. 11. Archivado desde el original (PDF) el 3 de junio de 2016 . Consultado el 10 de enero de 2016 .
- ^ Omar Santos (9 de marzo de 2015). "Mitigaciones disponibles para la vulnerabilidad DRAM Row Hammer" . cisco.com . Consultado el 11 de marzo de 2015 .
- ^ Marc Greenber (9 de marzo de 2015). "Row Hammering: qué es y cómo los piratas informáticos podrían usarlo para obtener acceso a su sistema" . synopsys.com . Consultado el 10 de enero de 2016 .
- ^ Jung-Bae Lee (7 de noviembre de 2014). "Solución de memoria verde (Samsung Investors Forum 2014)" (PDF) . teletogether.com . Samsung Electronics . pag. 15 . Consultado el 10 de enero de 2016 .
- ^ "Estándar JEDEC JESD79-4A: DDR4 SDRAM" (PDF) . JEDEC . Noviembre de 2013 . Consultado el 10 de enero de 2016 .
- ^ "Hoja de datos: características de SDRAM DDR4 de 4 Gb × 4, × 8 y × 16" (PDF) . Tecnología Micron . 20 de noviembre de 2015. págs. 48, 131. Archivado desde el original (PDF) el 10 de febrero de 2018 . Consultado el 10 de enero de 2016 .
- ^ Nishad Herath; Anders Fogh (6 de agosto de 2015). "Estos no son los contadores de rendimiento de CPU de su gran padre: contadores de rendimiento de hardware de CPU para la seguridad" (PDF) . Sombrero negro . págs. 29, 38–68 . Consultado el 9 de enero de 2016 .
- ^ "PassMark MemTest86 - Historial de versiones" . memtest86.com . 13 de febrero de 2015 . Consultado el 11 de marzo de 2015 .
- ^ Pehr Söderman (2011). "Protección de la memoria" (PDF) . csc.kth.se . Consultado el 11 de marzo de 2015 .
- ^ Niels Provos; Markus Friedl; Peter Honeyman (10 de agosto de 2003). "Prevención de la escalada de privilegios" (PDF) . niels.xtdnet.nl . Consultado el 11 de marzo de 2015 .
- ^ a b c Liam Tung (10 de marzo de 2015). " La falla de DRAM de " Rowhammer "podría estar muy extendida, dice Google" . ZDNet . Consultado el 11 de marzo de 2015 .
- ^ Murat Balaban (6 de junio de 2009). "Buffer Overflows Desmitified" (TXT) . enderunix.org . Consultado el 11 de marzo de 2015 .
- ^ "CLFLUSH: Vaciar línea de caché (referencia de conjunto de instrucciones x86)" . renejeschke.de . 3 de marzo de 2013. Archivado desde el original el 3 de diciembre de 2017 . Consultado el 6 de agosto de 2015 .
- ^ Daniel Gruss; Clémentine Maurice (27 de julio de 2015). "IAIK / rowhammerjs: rowhammerjs / rowhammer.js en el maestro" . github.com . Consultado el 29 de julio de 2015 .
- ^ Daniel Gruss; Clementine Maurice; Stefan Mengard (24 de julio de 2015). "Rowhammer.js: un ataque de error inducido por software remoto en JavaScript". arXiv : 1507.06955 .
- ^ David Auerbach (28 de julio de 2015). "Explotación de seguridad de Rowhammer: por qué un nuevo ataque de seguridad es realmente aterrador" . slate.com . Consultado el 29 de julio de 2015 .
- ^ Alix Jean-Pharuns (30 de julio de 2015). "Rowhammer.js es el truco más ingenioso que he visto" . Tarjeta madre.
- ^ Dan Goodin (4 de agosto de 2015). "Explotación de DRAM 'Bitflipping' para atacar PC: simplemente agregue JavaScript" . Ars Technica.
- ^ VUSec (octubre de 2016). "DRAMMER: FLIP FENG SHUI SE VUELVE MÓVIL" . Consultado el 21 de enero de 2017 .
- ^ Base de datos nacional de vulnerabilidades del NIST (NVD). "Detalle CVE-2016-6728" .
- ^ Victor van der Veen; Martina Lindor; Yanick Fratantonio; Harikrishnan Padmanabha Pillai; Giovanni Vigna; Christopher Kruegel; Herbert Bos; Kaveh Razavi (2018), "GuardION: Practical Mitigation of DMA-Based Rowhammer Attacks on ARM" , Detección de intrusiones y malware, y evaluación de vulnerabilidades , Springer International Publishing, págs. 92-113, doi : 10.1007 / 978-3-319 -93411-2_5 , hdl : 1871.1 / 112a5465-aeb5-40fd-98ff-6f3b7c976676 , ISBN 9783319934105
- ^ "RAMPA Y GUARDIA - Las vulnerabilidades en los teléfonos modernos permiten el acceso no autorizado" . Consultado el 30 de junio de 2018 .
enlaces externos
- Algunas notas sobre DRAM (#rowhammer) , 9 de marzo de 2015, por Robert Graham
- Error de hardware de Rowhammer amenaza con romper la seguridad de los portátiles , InfoWorld , 9 de marzo de 2015, por Serdar Yegulalp
- Mecanismo de falla conocida de memoria DDR3 llamado "Row Hammer" en YouTube , 17 de julio de 2014, por Barbara Aichinger
- Patente US 20140059287 A1: comando de actualización de martillo de fila , 27 de febrero de 2014, por Kuljit Bains et al.
- Vulnerabilidad de escalamiento de privilegios de Row Hammer , aviso de seguridad de Cisco Systems , 11 de marzo de 2015
- ARMADURA: Un detector de filas calientes de memoria en tiempo de ejecución , Universidad de Manchester , por Mohsen Ghasempour et al.
- Uso de errores de memoria para atacar una máquina virtual , 6 de marzo de 2003, por Sudhakar Govindavajhala y Andrew W. Appel
- Un programa para probar el problema "rowhammer" de DRAM , código fuente en GitHub