Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=1a8fa48d-26cc-4ee4-bf64-fc5937bae10a

GAMBADAS: Rowhammer.js, acceso a la memoria de tu máquina desde JavaScript

RowHammer

Una de las máximas sagradas del desarrollo web es que todo lo que ocurre en el navegador está aislado del sistema operativo. Todo el código JavaScript se ejecuta dentro de una zona restringida (conocida como "sandbox") desde la cual, por seguridad, no hay acceso a los recursos de bajo nivel del sistema ¿verdad?

Pues por lo visto, no.

Este verano un grupo de investigadores en seguridad informática de la Universidad de Cornell presentaron los resultados de un estudio (PDF), con una prueba de concepto llamada Rowhammer.js, que te pondrá los pelos de punta. Se trata de un fragmento de código JavaScript que puede escapar el sandbox de seguridad del navegador y acceder directamente a la memoria física de tu equipo.

Y lo peor es que no puedes hacer nada al respecto: no se trata de un error de software, sino de hadware. Lo bueno es que es un ataque tan difícil de realizar que no debería preocuparte demasiado tampoco.

El nombre viene de "Row Hammer" un fenómeno de la memoria en el que se basa y que se deriva de un efecto secundario de cómo funciona la memoria RAM dinámica. Vamos a ver en qué consiste...

En una DRAM cada minúsculo capacitor contiene un 1 o un 0 en función de si tiene o no carga almacenada. Dado que se empaquetan tantos juntos a una escala tan pequeña, a veces la carga de uno puede afectar a los contiguos, corrompiendo la memoria. Para evitarlo la DRAM utiliza un controlador de memoria que refresca la carga de todos estos diminutos capacitores varias miles de veces cada segundo para asegurar que siempre es la correcta.

Básicamente si un programa malintencionado lograse inundar una fila en particular de capacitores con datos, una y otra vez a toda velocidad, interrumpiría el proceso de refresco del controlador de memoria, y podría hacer que las cargas se transmitieran a propósito a filas contiguas, corrompiendo la memoria y rompiendo el funcionamiento del sistema operativo. Esto es lo que se llama "Row Hammering".

A principios de año Google consiguió hacer algo como esto usando un programa escrito a bajo nivel y ejecutado localmente. Era algo impresionante y muy inteligente, pero con un posible impacto muy limitado. Sin embargo con RowHammer.js la cosa cambia por completo pues se utiliza el lenguaje presente en todos los ordenadores y con un programa que se descarga en remoto usando un simple navegador =:-O

Las contramedidas aparentemente podrían ser dos:

  • Forzar refrescos más rápidos de la memoria DRAM
  • Ralentizar la ejecución de JavaScript en los navegadores para que no puedan darse cambios tan rápidos.

Ninguna de las dos soluciones es práctica, según dicen los propios investigadores.

Es algo técnicamente muy interesante, y puedes leer una descripción más completa pero sencilla del asunto en la Wikipedia, una descripción técnica "hardcore" del equipo de Google, y por supuesto leer el "paper" que presentaron los investigadores.

En un mundo cada vez más dependiente de la tecnología, este tipo de cuestiones nos muestran lo frágil que es la base en la que lo sustentamos.

Fecha de publicación:
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: DevFacts

¿Te vas a perder los mejores trucos de programación?

Únete a miles de desarrolladores que ya reciben cada mes nuestro boletí­n por email. No te pierdas los mejores trucos, noticias y frikadas.

Enviamos poco, pero bueno. Palabra de desarrollador.

Suscríbete aquí­

Sí­guenos también en:

Telegram LinkedIn YouTube
La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.