Hace pocos días se dio a conocer información sobre la creación de un nuevo tipo de ataque mediante la técnica de Rowhammer (conocido para inducir fallas de hardware mediante el acceso rápido a datos de chips de memoria DRAM).
Bautizada como Mayhem, la vulnerabilidad recientemente identificada por investigadores del Instituto Politécnico de Worcester, revela un nivel de gravedad significativo debido a su capacidad para eludir las comprobaciones de autenticación SUDO y SSH.
Los investigadores mencionan que Mayhem utiliza la técnica de distorsión de bits de la memoria dinámica de acceso aleatorio (DRAM) de Rowhammer para cambiar los valores de las variables de pila utilizadas como indicadores en el programa para decidir si la autenticación ha pasado los controles de seguridad. Este ataque se dirige específicamente a aplicaciones que emplean comprobaciones para comparar valores distintos de cero.
En un escenario típico, el éxito del ataque implica la corrupción de cualquier bit asociado con la variable de autenticación de 32 bits en la pila. Si algún bit de esta variable se daña, el valor ya no será cero, lo que llevará a la conclusión exitosa de la autenticación. Este patrón de validación se encuentra comúnmente en aplicaciones como SUDO, OpenSSH, MySQL y OpenSSL.
Es importante destacar que el ataque también puede dirigirse a comparaciones más específicas, como «if(auth == 1)», aunque su implementación en este caso se vuelve más compleja. En este escenario, se requiere distorsionar no solo cualquier bit de 32, sino el último bit del valor cero.
Además, el método puede influir en los valores de las variables en los registros del procesador, ya que los valores de los registros se almacenan temporalmente en la pila durante cambios de contexto, llamadas a funciones o controladores de señales. Durante este período, se pueden introducir distorsiones en la memoria, y el valor modificado se restaurará en el registro correspondiente.
La vulnerabilidad Rowhammer explota la naturaleza física de la memoria DRAM, que consiste en una matriz bidimensional de celdas, cada una compuesta por un capacitor y un transistor. Realizar lecturas repetidas en la misma región de la memoria provoca fluctuaciones de voltaje y anomalías, generando una pequeña pérdida de carga en las celdas adyacentes.
Cuando la intensidad de lectura es alta, la celda vecina puede experimentar una pérdida significativa de carga, y el siguiente ciclo de regeneración no tendrá tiempo de restaurar su estado original, lo que conducirá a un cambio en el valor de los datos almacenados en la celda. Este fenómeno conduce a un cambio en el valor de los datos almacenados en la celda, dando lugar a la vulnerabilidad conocida como Rowhammer.
Mayhem se introduce en sistemas a través de un script PHP, que los atacantes cargan en los servidores aprovechando contraseñas FTP comprometidas, vulnerabilidades en el sitio web o mediante la obtención de credenciales de administración del sitio mediante ataques de fuerza bruta.
El componente principal de Mayhem es un archivo ELF malicioso que, tras la instalación, este archivo descarga complementos adicionales y los guarda en un sistema de archivos oculto y cifrado. La presencia de estos complementos ofrece a los atacantes la capacidad de utilizar los servidores recién infectados para llevar a cabo ataques y comprometer sitios adicionales.
Para protegerse contra Mayhem, se recomienda utilizar en las comparaciones no una evaluación de las diferencias desde cero o una coincidencia con uno, sino una verificación de coincidencia utilizando un valor inicial aleatorio con octetos distintos de cero. En este caso, para establecer el valor deseado de la variable, es necesario distorsionar con precisión un número significativo de bits, lo cual no es realista, a diferencia de la distorsión de un bit.
Los investigadores mencionan que para mitigar el riesgo de ataques como Mayhem, se sugiere:
Cambiar la estrategia en las comparaciones, de evaluación de las diferencias desde cero o la coincidencia con uno. En cambio, se recomienda utilizar una verificación de coincidencia que involucre un valor inicial aleatorio con octetos distintos de cero. En este enfoque, establecer el valor deseado de la variable requeriría la distorsión precisa de un número significativo de bits, lo cual resulta poco realista en comparación con la distorsión de un solo bit.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.