Un grupo de investigadores de seguridad, varios de los cuales participaron en la detección de las primeras vulnerabilidades Meltdown y Spectre, desarrollaron un nuevo tipo de ataque en canales de terceros.
Este ataque se realiza basado en el análisis de contenido del caché de la página, que contiene información obtenida como resultado del acceso del sistema operativo a los discos, unidades SSD y otros dispositivos de bloqueo.
A diferencia de los ataques Specter, la nueva vulnerabilidad no está causada por problemas de hardware, sino que solo concierne a las implementaciones de software del caché de página y se manifiesta en Linux (CVE-2019-5489),Windows y probablemente, en muchos otros sistemas operativos.
Al manipular las llamadas del sistema mincore (Linux) y QueryWorkingSetEx (Windows) para determinar la presencia de una página de memoria en el caché de la página del sistema, un atacante local sin privilegios puede rastrear algunos accesos de memoria de otros procesos.
El ataque le permite rastrear el acceso a nivel de bloques de 4 kilobytes con una resolución de tiempo de 2 microsegundos en Linux (6.7 medidas por segundo) y 446 nanosegundos en Windows (223 medidas por segundo).
La memoria caché de la página acumula datos bastante diversos, incluidos extractos de archivos ejecutables, bibliotecas compartidas, datos cargados en el disco, archivos reflejados en la memoria y otra información que generalmente se almacena en el disco y es utilizada por el sistema operativo y las aplicaciones.
¿En qué consiste este ataque?
El ataque se basa en el hecho de que todos los procesos utilizan un caché de página de sistema común y la presencia o ausencia de información en este caché se puede determinar cambiando el retraso en la lectura de datos del disco o refiriéndose a las llamadas al sistema antes mencionadas.
Las páginas en la memoria caché pueden reflejarse en un área de memoria virtual utilizada por varios procesos (por ejemplo, solo una copia de una biblioteca compartida puede estar presente en la memoria física, que se refleja en la memoria virtual de diferentes aplicaciones).
En el proceso de desplazar la información de la memoria caché de la página y rellenarla cuando se cargan datos típicos de un disco, puede analizar el estado de páginas similares en la memoria virtual de otras aplicaciones.
Las llamadas del sistema mincore y QueryWorkingSetEx simplifican en gran medida un ataque, ya que le permiten determinar de inmediato qué páginas de memoria de un rango de direcciones determinado están presentes en la memoria caché de la página.
Dado que el tamaño del bloque supervisado (4 Kb) es demasiado grande para determinar el contenido por iteración, el ataque solo se puede usar para la transmisión de datos encubiertos.
Reduciendo la fuerza de las operaciones criptográficas al rastrear el comportamiento del algoritmo, evaluando los patrones típicos de acceso a la memoria de procesos conocidos o monitoreando el progreso de otro proceso.
El diseño de los datos en la memoria por los que se conoce al atacante (por ejemplo, si los contenidos básicos del búfer se conocen inicialmente en el momento de la salida del cuadro de diálogo de autenticación, puede determinar Arola sobre la base del símbolo de extorsión durante su intervención del usuario).
¿Existe alguna solución contra esto?
Si, si existe ya una solución por parte de Linux y es que este tipo de investigaciones ayudan a detectar problemas antes de que otros con intenciones perjudiciales saquen provecho de ellas.
Para el kernel de Linux, la solución ya está disponible como un parche, el cual ya se encuentra descrito y documentado.
En el caso de Windows 10, el problema se solucionó en una compilación de pruebas (Insider Preview Build) 18305.
Las aplicaciones prácticas del ataque al sistema local demostrado por los investigadores incluyen la creación de un canal de transmisión de datos desde entornos aislados aislados, la recreación de elementos de interfaz en pantalla (por ejemplo, diálogos de autenticación), la definición de pulsaciones de teclas y la recuperación de contraseñas temporales generadas automáticamente).
Fuente: linuxadictos.com