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.
Más información:
Exploiting the DRAM rowhammer bug to gain
kernel privileges
Flipping Bits in Memory Without Accessing
Them:An Experimental Study of DRAM Disturbance Errors
Cliente Nativo
Antonio Ropero
Twitter: @aropero
No hay comentarios:
Publicar un comentario