16 mar. 2015

Rowhammer. Vulnerabilidad física en las memorias DRAM

Project Zero de Google ha dado a conocer la que puede convertirse en una de las vulnerabilidades más curiosas de los últimos tiempos. En esta ocasión el problema no radica en ningún software, sino en la forma que se fabrican las memorias DRAM más modernas.

El fallo, bautizado como "Rowhammer" es extremadamente curioso. Según la descripción ofrecida es un problema con algunas memorias DRAM modernas por el cual el acceso repetido a una fila de memoria puede provocar cambios de bits (que pasen de 0 a 1 y viceversa) en las filas adyacentes (un proceso llamado "bit flipping"). Sí, como suena, acceder a determinadas direcciones de memoria, puede provocar cambios en las direcciones contiguas.

El aislamiento de la memoria es clave para asegurar un sistema informático. Está claro, el acceso a una dirección de memoria no debe tener efectos colaterales en los datos almacenados en otras direcciones. Sin embargo, la tecnología DRAM cada vez produce memorias con menores dimensiones y mayor capacidad, por esto las células de memoria están cada vez más cercanas una de otra, lo que complica el aislamiento y hace que células DRAM sean más sensibles a interferencias eléctricas e interactúen eléctricamente entre sí.

Se ha conseguido demostrar como la lectura de la misma dirección DRAM, puede corromper los datos en las filas vecinas. La investigación procede de un trabajo universitario publicado el pasado año por la Universidad de Carnegie Mellon e Intel. Un equipo de nueve investigadores ha comprobado este fenómeno en sistemas Intel y AMD mediante un programa que genera múltiples accesos a la memoria DRAM.

En las pruebas realizadas por este equipo de investigación consiguieron provocar errores en la mayoría de los módulos DRAM testados (110 de 129) de tres grandes fabricantes, no se especificaban los nombres de éstos.

Y Google lo lleva a la práctica

Los resultados de la investigación universitaria ya de por sí presentan interesantes revelaciones. Pero todo habría quedado ahí, y en un trabajo para los fabricantes de memoria para evitar este problema, la mejora de los aislamientos entre celdas y en la mejora de estos componentes. Pero lo relevante de la noticia reside en que el equipo de Project Zero ha conseguido explotar deforma efectiva este fallo en dos exploits diferentes para lograr elevar los privilegios en un sistema.

El primero de los exploits consiste en un programa Cliente Nativo (NaCl) (la sandbox de Chrome para ejecutar código C y C++ compilado en el navegador) y consigue elevar sus privilegios para escapar de la sandbox NaCl x86-64, con la posibilidad de efectuar llamadas al sistema operativo directamente. Google ha conseguido mitigar este problema, con CVE asignado CVE-2015-0565, desactivando la instrucción CLFLUSH en la Sandbox.

Un segundo exploit se ejecuta como un proceso normal en un Linux x86-64 y consigue elevar sus permisos para conseguir privilegios a nivel Kernel para ganar acceso de lectura y escritura a toda la memoria física.

En las pruebas de Google se comprobaron 29 portátiles (x86) fabricados entre 2010 y el pasado año, y provocaron errores en algunos de ellos (todos con DDR3). Aunque al igual que ocurría en el trabajo universitario tampoco se facilitan los nombres ni modelos de los fabricantes de los portátiles.

Como es habitual en las investigaciones de Project Zero de Google todos los programas y exploits desarrollados para las pruebas están disponibles para su análisis.

Soluciones

Las soluciones y/o contramedidas se presentan complicadas. Se trata de un problema en las propias memorias y es complicado de atacar. Aun así se plantean posibles medidas para evitar los cambios de bits inducidos por "Rowhammer", mediante cambios en la DRAM, en los controladores de memoria o en ambos.

Un sistema para evitarlo sería que dado un determinado periodo de refresco no se active cualquier fila demasiadas veces sin comprobar también que las filas vecinas se actualicen. Para ellos se podría incluir una serie de contadores en el controlador de memoria o en la propia DRAM para el recuento de activaciones.

También se propone la posibilidad de que los fabricantes realicen actualizaciones de las BIOS para mitigar este problema, cambiando la forma en que la BIOS configura el controlador de memoria de la CPU y el aumento de la frecuencia de refresco. Por último otra posibilidad sería emplear los contadores de rendimiento de las CPUs para monitorizar el posible uso de este ataque.

Fuente: Hispasec

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!