Estamos acostumbrados a escuchar sobre vulnerabilidades de software, malas configuraciones o problemas en aplicaciones que se convierten rápidamente en vectores de ciberseguridad. Hoy de lo que te quiero hablar es de la vulnerabilidades de Hardware en particular de una vulnerabilidad conocida como ROWHAMMER!
La vulnerabilidad Rowhammer es uno de los bugs de seguridad más increibles con los que me he topado. No se trata de un error de software o código mal escrito, sino de un bug muy dificil de mitigar en dispositivos electrónicos en general, en este caso, las memorias RAM.
Imaginate una biblioteca donde, si golpeas con mucha fuerza y rapidez un estante, las vibraciones hacen que un libro del estante de arriba se caiga o cambie de lugar. Eso es exactamente lo que hace Rowhammer con los datos.
¿Qué es y cómo funciona?
En la memoria DRAM, los datos se guardan en celdas (condensadores) dispuestas en una cuadrícula de filas y columnas. Debido a que los chips son cada vez más pequeños y densos, las celdas están demasiado cerca unas de otras.
Cuando un programa accede a una fila de memoria (la «abre»), se genera un pequeño campo electromagnético. Si un atacante accede a esa fila miles de veces por segundo («martilleo» o hammering, de ahí la palabra), la interacción eléctrica puede causar que las celdas de las filas adyacentes pierdan su carga y cambien su valor de 0 a 1 o viceversa. Esto se conoce como un bit flip.
Esta «interferencia de fila» ya se conocía, es un efecto físico de equipos con ese tipo de electrónica pero hasta ese momento se consideraba un problema de fiabilidad, no de seguridad.
En 2014 unos investigadores de Intel y la universidad de Carnegie Mellon teorizaron y escrbieron un artículo sobre esto. Te dejo el link: “Flipping Bits in Memory Without Accessing Them” (2014). Sobre una teoría estos pibes demostraron que podían corromper la memoria de una computadora común sin necesidad de permisos especiales, simplemente ejecutando un código que leyera memoria muy rápido.
Ni bien salió este artículo todo el mundo empezó a tratar de demostrar que se podía hackear usándolo.
Los ataques fueron escalando, te dejo los más importantes que encontré:
Escalada de Privilegios (2015)
Sino conoces Google Project Zero pegate una vuelta por acá: https://projectzero.google/ pero ahí arrancó todo.
- Google Project Zero: Mark Seaborn demostró que podía usar Rowhammer para alterar las Tablas de Páginas del kernel de Linux. Al cambiar un bit en estas tablas, un programa sin privilegios podía obtener acceso total a toda la memoria física del sistema (root).
Ataques desde el Navegador y Móviles (2015-2016)
- Rowhammer.js: Investigadores demostraron que se podía ejecutar el ataque usando solo JavaScript al visitar una página web maliciosa. (Tremeeendooooo)
- DRAMMER: Se demostró que los teléfonos Android también eran vulnerables, permitiendo el «rooteo» del teléfono mediante una aplicación maliciosa sin permisos.
Ataques Remotos (2018)
- Throwhammer: Investigadores de la Vrije Universiteit Amsterdam demostraron que se podían causar bit flips a través de la red (vía RDMA), sin ejecutar ni una sola línea de código en la máquina víctima.
Etapa 4: Rompiendo las Protecciones (2020 – 2024)
La industria respondió con una defensa llamada TRR (Target Row Refresh), que detecta el martilleo y refresca las filas vecinas. Sin embargo:
- TRRespass (2020): Demostró que patrones de martilleo más complejos podían «engañar» a TRR.
- Blacksmith (2021): Utilizó patrones de acceso aleatorios/frecuenciales para evadir las protecciones de las memorias DDR4.(este si fue super famoso)
- Phoenix (2024/2025): Recientemente se descubrió que incluso las memorias DDR5 (que se suponían seguras por tener corrección de errores interna o ECC) son vulnerables a ataques que logran corromper datos antes de que el sistema de corrección pueda actuar.
Documentación que recopilé:
2014 – El descubrimiento original Kim et al. – ISCA 2014
2015 – Exploit de Google Project Zero Blog de Google Project Zero
2016 – DRAMMER (Android) DRAMMER Research
2018 – Throwhammer (Red) Throwhammer Paper
2021 – Blacksmith (DDR4) Blacksmith – ETH Zürich
2024 – Phoenix (DDR5) Vulnerability (Kaspersky)
Labotatorio
Estudiando un poco me hice la grandiosa pregunta de: Soy vulnerable?. Obviamente la respuesta es SI, pero un SI condicional. Todos los equipos con RAM son vulnerables pero hay formas de mitigarlo.
Habilitar ECC: Si tu motherboard y cpu soportan memoria ECC (Error Correction Code), activalo!. Esto detecta y corrige los cambios de bits en tiempo real.
Actualizar BIOS/UEFI: Los fabricantes suelen lanzar parches que obligan a la RAM a refrescarse con el doble de frecuencia (2x Refresh Rate), lo que reduce la ventana de tiempo para el martilleo.
Configuración de Memoria: En algunos BIOS avanzados, puedes buscar la opción «Maximum Tactivate (tMAC)» o «Refresh Interval» y ajustarla para que sea más frecuente.
La idea de estos mecanismos es evitar que sea un solo martilleo y que se distribuya la carga magnética.
De todas formas es importante saber que el ECC (Error Correction Code) en las RAM de servidores mitiga gran parte de estos ataques, pero hay estudios que han demostrado que si logras voltear 3 o más bits simultáneamente, incluso el ECC falla. (dato de color).
Para comprobar si sos vulnerable (bajo tu responsabilidad):
#instalamos las dependencias
sudo apt-get update && sudo apt-get install -y git build-essential
#Clonamos el repo (este es el poc original de project zero
git clone https://github.com/google/rowhammer-test.git
cd rowhammer-test
#Compilamos
make
#y corremos como sudo
sudo ./rowhammer_test
También hice una búsqueda de los diferentes exploits disponibles en la web:
A. Escalada de Privilegios (Root)
- Google Project Zero (2015): El primer exploit que demostró cómo obtener privilegios de Kernel en Linux alterando las tablas de páginas (PTE).
- ZenHammer (2024):
B. Ataques en Navegadores y Móviles
- Rowhammer.js:
- DRAMMER:
C. Ataques Remotos y de Red
- Throwhammer: Ataque a través de la red utilizando RDMA (Remote Direct Memory Access), común en centros de datos.
- Nethammer: Similar a Throwhammer, pero utiliza paquetes de red estándar (UDP) para martillear la memoria de un servidor remoto sin código local. (no encontré exploits)
D. Evasión de Defensas Modernas
- Blacksmith (2021):
- Phoenix (2024/2025):
Ataque de este último exploit!.
Conclusiones
Enterarse de Vulnerabilidades tan críticas para los que trabajamos en sistemas es Correr a nuestros datacenters y equipos a ver si son vulnerables y patchearlos para poder vivir felices nuevamente!!. La otra cara de la realidad es que hay vulnerabilidades que no son relativas sino objetivas, como RowHammer. Estas vulnerabilidades están presentes y no se pueden remediar completamente, solo Mitigar!.
Como siempre, el desafío de TI es vivir con un martillo en la mano y un extintor en la otra!