A partir de la funcionalidad provista por procesadores modernos, un proceso de usuario no puede leer regiones de memoria de otro proceso. Asimismo a nivel de kernel de un sistema operativo, el "supervisor bit" define si una página de memoria puede ser accedida o no.
En esta presentación se demostrará el uso de un "side-channel attack" al cache del CPU para poder evadir la protección de aislamiento de memoria y leer contenido sensible.
Varias implementaciones disponibles en dominio publico no proveen resultados confiables. Sin embargo, a partir del resultado de nuestra investigación detallaremos:

  1. Un ejemplo del funcionamiento del ataque "Flush+Reload" en un proceso de usuario, midiendo los tiempos de un "cache miss", y leyendo arbitrariamente datos de un proceso víctima.
  2. Las falencias en el comportamiento del branch predictor y speculative execution de los procesadores modernos.
  3. El funcionamiento de nuestra implementación de Spectre, entrenando al branch predictor para generar un mispredict y filtrar información sensible.
  4. El funcionamiento de nuestra implementación de Meltdown, para obtener arbitrariamente datos en páginas de kernel.

Ambas implementaciones fueron desarrolladas para Windows y Linux.


By using an existing functionality provided by modern microprocessors, a user is prevented from reading the memory of other user's process. At the Operating System kernel level, the "supervisor bit" defines whether or not a memory page can be accessed.
In this presentation, we will demonstrate the use of the "side-channel attack" against the CPU cache in order to evade the memory isolation protection and read sensible contents.
Several public domain implementations are available but do not provide reliable results. However, based on our research outcome we will detail:

  1. An example of the attack "Flush+Reload" inside a user's process, measuring the '"cache miss" times, and arbitrarily reading data from a victim's process.
  2. The shortcomings of the branch predictor and speculative execution behavior in modern microprocessors.
  3. The details of our Spectre implementation, training the branch predictor to generate a mispredict aiming at leaking sensitive information.
  4. The details of our Meltdown implementation used to gather data from kernel pages.

Both implementations developed for Windows and Linux OS.

Saturday, April 21, 2018