Se ha creado un nuevo método de RowHammer para evitar la protección ECC
Un grupo de investigadores de la Free University of Amsterdam ha desarrollado una nueva versión avanzada del ataque RowHammer, que permite cambiar el contenido de bits individuales en la memoria basada en chips DRAM, para proteger la integridad de los códigos de corrección de errores (ECC) que se aplican.
El ataque se puede realizar de forma remota con acceso no privilegiado al sistema, pues la vulnerabilidad de RowHammer puede distorsionar el contenido de los bits individuales de la memoria mediante la lectura cíclica de los datos de las celdas de memoria vecinas.
¿Qué es la vulnerabilidad RowHammer?
A lo que explican el grupo de investigadores sobre la vulnerabilidad de RowHammer, es que esta se basa en la estructura una memoria DRAM, pues básicamente esta es una matriz bidimensional de celdas de las cuales cada una de estas celdas consta de un capacitor y un transistor.
Con ello la lectura continua de la misma área de memoria conduce a fluctuaciones de voltaje y anomalías que causan una pequeña pérdida de carga de las celdas vecinas.
Si la intensidad de la lectura es lo suficientemente grande, la celda puede perder una cantidad de carga suficientemente grande y el siguiente ciclo de regeneración no tendrá tiempo de restaurar su estado original, lo que dará lugar a un cambio en el valor de los datos almacenados en la celda.
Una nueva variante de RowHammer
Hasta ahora, el uso de ECC se consideraba la forma más confiable de protegerse contra los problemas descritos anteriormente.
Pero los investigadores lograron desarrollar un método para cambiar los bits de memoria especificados que no activaban un mecanismo de corrección de errores.
El método se puede utilizar en servidores con memoria ECC para modificar los datos, sustituir códigos maliciosos y cambiar los derechos de acceso.
Por ejemplo, en ataques RowHammer demostrados anteriormente, cuando un atacante tenía acceso a una máquina virtual, las actualizaciones del sistema malintencionado se descargaron a través de un cambio en el proceso de apt del nombre del host para descargar y modificar la lógica de verificación de la firma digital.
¿Cómo actúa esta nueva variante?
Lo que explican los investigadores sobre este nuevo ataque es que el recorrido de ECC se basa en características de corrección de errores: si se cambia un bit, el ECC corregirá el error, si se generan dos bits, se generará una excepción y el programa se terminará por la fuerza, pero si se cambian tres bits simultáneamente, es posible que el ECC no note la modificación.
Para determinar las condiciones bajo las cuales la verificación ECC no funciona, se ha desarrollado un método de verificación similar al de la carrera que permite evaluar la posibilidad de un ataque para una dirección específica en la memoria.
El método se basa en el hecho de que, al corregir un error, el tiempo de lectura aumenta y el retraso resultante es bastante medible y notable.
El ataque se reduce a intentos sucesivos de cambiar cada bit individualmente, determinando el éxito del cambio por la aparición de un retraso causado por un ajuste de ECC.
Por lo tanto, se realiza una búsqueda de palabras de máquina con tres bits variables. En la última etapa, es necesario asegurarse de que los tres bits mutables en dos lugares sean diferentes, y luego tratar de cambiar su valor en una sola pasada.
Sobre la demostración
Los investigadores demostraron con éxito la posibilidad de un ataque en cuatro servidores diferentes con memoria DDR3 (teóricamente vulnerable y memoria DDR4), tres de los cuales estaban equipados con procesadores Intel (E3-1270 v3, Xeon E5-2650 v1, Intel Xeon E5-2620 v1), y uno AMD (Opteron 6376).
En la demostración se observa que la búsqueda de la combinación requerida de bits en el laboratorio en un servidor inactivo toma alrededor de 32 minutos.
Hacer un ataque a un servidor en ejecución es mucho más difícil debido a la presencia de interferencias que surgen de la actividad de la aplicación.
En los sistemas de producción, puede llevar hasta una semana encontrar la combinación requerida de bits intercambiables.
El artículo Se ha creado un nuevo método de RowHammer para evitar la protección ECC ha sido originalmente publicado en Linux Adictos.