Dieron a conocer un ataque que permite la detección remota de fragmentos de memoria
Un grupo de investigadores de la Universidad Tecnológica de Graz (Austria), anteriormente conocida por desarrollar ataques MDS, NetSpectre, Throwhammer y ZombieLoad, dieron a conocer hace pocos dias un nuevo método de ataque (CVE-2021-3714) el cual a través de canales laterales al mecanismo de deduplicación de la página de memoria pueden determinar la presencia de ciertos datos en la memoria, organizar una fuga de bytes del contenido de la memoria o determinar el diseño de la memoria para omitir la protección basada en la aleatorización de direcciones (ASLR).
El nuevo método se diferencia de las variantes de ataques al mecanismo de deduplicación demostradas anteriormente al llevar a cabo un ataque desde un host externo utilizando como criterio para cambiar el tiempo de respuesta a las solicitudes enviadas por el atacante a través de los protocolos HTTP/1 y HTTP/2. El ataque se demostró para servidores Linux y Windows.
Los ataques de deduplicación de memoria aprovechan la diferencia en el tiempo de procesamiento de una operación de escritura como un canal para la fuga de información en situaciones en las que los cambios de datos conducen a la clonación de una página de memoria deduplicada mediante el mecanismo de copia en escritura (COW).
En el proceso, el kernel determina las mismas páginas de memoria de diferentes procesos y las combina, mapeando páginas de memoria idénticas en un área de la memoria física para almacenar solo una copia. Cuando uno de los procesos intenta cambiar los datos asociados con las páginas deduplicadas, se genera una excepción (error de página) y, mediante el mecanismo de copia en escritura, se crea automáticamente una copia separada de la página de memoria, que se asigna a la proceso al cual se dedica más tiempo a la copia, lo que puede ser una señal de que el cambio de datos se superpone con otro proceso.
Los investigadores han demostrado que las demoras resultantes del mecanismo COW pueden capturarse no solo localmente, sino también analizando el cambio en el tiempo de entrega de las respuestas a través de la red.
Con esta información, los investigadores han propuesto varios métodos para determinar el contenido de la memoria desde un host remoto mediante el análisis del tiempo de ejecución de las solicitudes a través de los protocolos HTTP/1 y HTTP/2. Para guardar las plantillas seleccionadas se utilizan aplicaciones web típicas que almacenan en memoria la información recibida en las solicitudes.
El principio general del ataque se reduce a llenar una página de memoria en el servidor con datos que potencialmente duplican el contenido de una página de memoria que ya está en el servidor. Luego, el atacante espera el tiempo que tarda el kernel en deduplicar y fusionar la página de memoria, luego modifica los datos duplicados controlados y estima el tiempo de respuesta para determinar si el éxito fue exitoso.
En el transcurso de los experimentos realizados, la tasa máxima de fuga de información fue de 34,41 bytes por hora para un ataque sobre la WAN y 302,16 bytes por hora para un ataque sobre una red local, que es más rápido que otros métodos de extracción de datos por canales laterales. (por ejemplo, en el ataque de NetSpectre, la tasa de transferencia de datos es de 7,5 bytes por hora).
Se proponen tres variantes de trabajo del ataque:
- La primera opción permite definir datos en la memoria del servidor web en el que se utiliza Memcached. El ataque se reduce a cargar ciertos conjuntos de datos en el almacenamiento Memcached, borrar un bloque deduplicado, reescribir el mismo elemento y crear una condición para que ocurra una copia COW al cambiar el contenido del bloque.
- La segunda opción permitió conocer el contenido de los registros en el DBMS MariaDB, cuando se usa el almacenamiento InnoDB, recreando el contenido byte a byte. El ataque se lleva a cabo mediante el envío de solicitudes especialmente modificadas, lo que genera desajustes de un byte en las páginas de memoria y analiza el tiempo de respuesta para determinar que la suposición sobre el contenido del byte era correcta. La tasa de tal fuga es baja y asciende a 1,5 bytes por hora cuando se ataca desde una red local.
- La tercera opción permitió omitir por completo el mecanismo de protección KASLR en 4 minutos y obtener información sobre el desplazamiento en la memoria de la imagen del kernel de la máquina virtual, en una situación en la que la dirección de desplazamiento está en una página de memoria, otros datos en los que no cambio.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.