¿Cuáles son las implicaciones de seguridad del ataque "Row Hammer"?

15

Me acabo de enterar del ataque Row Hammer . Según la descripción, esto suena extremadamente peligroso, pero me pregunto qué porcentaje de dispositivos se ven realmente afectados por estos. ¿Hay alguna otra forma de protegerse que no sea reemplazar la RAM por una que sea compatible con ECC?

    
pregunta d33tah 09.03.2015 - 22:19
fuente

3 respuestas

6

La implicación de seguridad básica es que un usuario sin privilegios puede elevar su acceso al nivel de raíz / kernel.

Project Zero de Google probó 29 computadoras portátiles diferentes fabricado entre 2010-2014 inclusive, y encontró que 15 eran vulnerables y 14 no lo eran. Advierten que este tamaño de muestra no es suficiente para ser considerado representativo, pero todavía es sugerente que es poco probable que sea un problema aislado.

El documento original Invocar bits en la memoria sin acceder a ellos sugiere que el problema es mucho más ancho:

  

Entre los 129 módulos DRAM que analizamos (con 972 chips DRAM),   Se descubrieron errores de perturbación en 110 módulos (836 chips). En   En particular, todos los módulos fabricados en los últimos dos años (2012 y   2013) fueron vulnerables

La única forma real de mitigar el ataque es no ejecutar binarios arbitrarios en su sistema y no permitir que nadie más acceda a su sistema si tienen intenciones hostiles. Esto es obviamente un problema para los recursos informáticos compartidos, p. Ej. universidades, instalaciones de alojamiento, etc. Los proveedores de la nube podrían ser vulnerables (se ha reportado una corrupción exitosa de la memoria interna de las máquinas virtuales, pero queda por ver cuán explotable es esto).

El uso de ECC, aunque no es una garantía de seguridad, puede disminuir la probabilidad de una explotación exitosa. La mitigación completa es actualizar a un sistema que emplee alguna defensa, ya sea un controlador de memoria o una DRAM que detecte y evite activamente la explotación. La disponibilidad de tales controladores o DRAM en este momento es desconocida, pero se sabe que existen. Los fabricantes de memoria han estado al tanto de este problema por un tiempo, y la especificación para LPDDR4 incluye mitigaciones, por lo que las futuras computadoras portátiles estarán protegidas.

    
respondido por el bain 10.03.2015 - 18:27
fuente
5

ECC RAM no es necesariamente inmune; La memoria de ECC corrige de manera confiable los giros de un bit y detecta la mayoría de los lanzamientos de dos bits, lo que hace que el ataque sea más difícil, pero no es conceptualmente inviable.

La memoria RAM sin ECC no es necesariamente débil; de hecho, según la definición de cómo debe comportarse la RAM, nunca debe ocurrir un solo giro de bit. Lo que estamos hablando aquí es RAM con un defecto: la RAM no funciona como debería. El hecho deprimente es que tales defectos son mucho más comunes de lo que generalmente se supone, ya que, en condiciones normales , dichos defectos no se activan a menudo (o en absoluto).

La solución es obtener RAM no defectuosa. El problema subyacente se convierte entonces en: ¿cómo detectaremos que la RAM está defectuosa? La conocida herramienta MemTest86 incluye una prueba de "interferencia" (ya que al menos v6, disponible en la versión gratuita).

Para una solución de solo software, uno podría imaginar una "actualización manual" realizada por el kernel. Algunos subprocesos del kernel harían regularmente lo siguiente, para todas las páginas en la RAM física:

  • Bloquee la página (es decir, márquela como no accesible para el código de usuario).
  • Dale la vuelta a todos los bits de la página, asegurando que la caché se vacíe con los códigos de operación relevantes.
  • Voltee todos los bits nuevamente, nuevamente con un vaciado de caché. Esto restaura los datos originales en la página.
  • Desbloquear la página.

Si userland accede a la página mientras se está actualizando, el controlador de capturas simplemente espera a que se complete la actualización, luego vuelve al proceso para que pueda volver a intentarlo.

El doble giro está destinado a garantizar que incluso el hardware inteligente que intenta seguir las modificaciones reales hará vaciar los datos y, por lo tanto, volver a escribir la página (que rellenará los pozos potenciales en los chips DRAM).

En gran medida, este proceso imitaría lo que ya hace el hardware para la actualización de la memoria. Entonces sería cuestión de decidir con qué frecuencia se debe hacer esto; refrescar más a menudo significa más ancho de banda de CPU / RAM gastado en la actualización, por lo que hay un compromiso. El hecho de que se pueda lograr una compensación aceptable depende de la cantidad de RAM que haya, la velocidad de la memoria RAM y el defecto de la memoria RAM.

La implementación en cualquier sistema operativo dado se deja como un ejercicio para el lector. Supongo que esto puede tener un impacto no trivial en las heurísticas de paginación / intercambio (cuando se realiza la paginación o el intercambio, el kernel intenta desalojar páginas a las que no se ha accedido recientemente, y esta contabilidad la realiza la propia MMU; jugar estragos con esta recopilación de información).

    
respondido por el Thomas Pornin 10.03.2015 - 18:15
fuente
1

Había estado trabajando en DRAM durante muchos años, aquí están algunos de mis puntos. Como sé, hay muchas investigaciones que intentan resolver este problema y algunas de ellas afirman tener una solución. Pero como veo, la mayoría de ellos no tienen una protección completa. Por lo tanto, podría ser una gran bomba en el mundo de la computación si algún pirata informático puede hacer con éxito disparar esta bomba. No es solo DDR-3 y fabricados entre el año 2012-2013 son vulnerables. En realidad, puede suceder en todos los DDR-3 e incluso DDR-4. El problema se debe a la mayor densidad de los chips DRAM de hoy. Los datos almacenados en cada celda hacen que las celdas cercanas cambien su contenido cuando se lee mucho en la misma celda. Para aumentar la actualización, no se solucionará el problema, solo se reducirá la posibilidad de ser golpeado. Pero también aumenta el calor del sistema y ralentiza la potencia del proceso. De hecho, cuando esto sucede, se vuelve más vulnerable al golpe de Row Hammer. Por lo tanto, aumentar la tasa de actualización no es una buena solución. ECC no va a resolver el problema, solo hace que sea más difícil hacerlo, porque ECC solo puede corregir errores de 1 o 2 bits. Lo sentimos, todavía no veo una buena solución, pero la publicaré aquí si la conozco.

    
respondido por el Sunny.Arhi 02.11.2016 - 20:49
fuente

Lea otras preguntas en las etiquetas