Hay muchas publicaciones científicas que tratan con ataques de caché. Más recientemente, se publicó el ataque CacheBleed que explota los conflictos del banco de caché en la arquitectura de Intel Sandy Bridge. La mayoría de los ataques de tiempo utilizan un enfoque similar:
- El atacante llena la caché con los mismos datos aleatorios que controla.
- El atacante espera mientras su víctima está haciendo algún cálculo (por ejemplo, cifrado).
- El atacante continúa la ejecución y mide el tiempo para cargar cada conjunto de sus datos que está escrito en el caché en el paso 1. Si la víctima ha accedido a algunos conjuntos de caché, habrá desalojado algunas de las líneas del atacante, que el atacante observa como mayor latencia de acceso a la memoria para esas líneas.
Al hacerlo, el atacante puede averiguar a qué conjunto de caché o incluso a qué línea de caché accedió la víctima.
La mayoría de los documentos que he leído concluyen automáticamente que el atacante tiene la posibilidad de deducir los datos (por ejemplo, una clave privada segura) que se escribieron en estas ubicaciones de caché. Esto es lo que no entiendo:
Si sé que la víctima V accedió a una determinada posición de caché, ¿cómo obtengo sus datos? Muchas direcciones de memoria se asignan a la misma posición de caché e incluso si tuviera la dirección de memoria completa, dudo que el atacante pueda realizar un DMA.
Como referencia, puedes tomar el ataque CacheBleed recientemente publicado. >