Se ha propuesto un método de ataque para determinar de forma remota fragmentos de memoria en el servidor.

Un grupo de investigadores de la Universidad Técnica de Graz (Austria), anteriormente conocidos por desarrollar los ataques MDS, NetSpectre, Throwhammer y ZombieLoad, ha publicado un nuevo método de ataque de canal lateral (CVE-2021-3714) contra el mecanismo de deduplicación de memoria. , que permite determinar la presencia en la memoria de ciertos datos, organizar una fuga byte por byte del contenido de la memoria o determinar el diseño de la memoria para evitar la protección de aleatorización basada en direcciones (ASLR). El nuevo método se diferencia de las variantes de ataques al mecanismo de deduplicación demostradas anteriormente porque realiza un ataque desde un host externo utilizando como criterio el cambio en el tiempo de respuesta a las solicitudes enviadas al atacante a través de los protocolos HTTP/1 y HTTP/2. La capacidad de llevar a cabo el ataque ha sido demostrada para servidores basados ​​en Linux y Windows.

Los ataques al mecanismo de deduplicación de memoria utilizan la diferencia en el tiempo de procesamiento de una operación de escritura como canal para filtrar información en situaciones en las que un cambio en los datos conduce a la clonación de una página de memoria deduplicada mediante el mecanismo de copia en escritura (COW). . Durante la operación, el kernel detecta páginas de memoria idénticas de diferentes procesos y las fusiona, asignando páginas de memoria idénticas a 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 produce una excepción (fallo de página) y, utilizando el mecanismo de copia en escritura, se crea automáticamente una copia separada de la página de memoria, que se asigna al proceso. Se dedica más tiempo a completar la copia, lo que puede ser una señal de que los cambios en los datos interfieren con otro proceso.

Los investigadores han demostrado que los retrasos resultantes del mecanismo COW se pueden capturar no sólo localmente, sino también analizando los cambios en los tiempos de entrega de respuesta a través de la red. Se han propuesto varios métodos para determinar el contenido de la memoria de un host remoto analizando el 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 estándar que almacenan en la 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 repiten el contenido de una página de memoria ya existente en el servidor. Luego, el atacante espera el tiempo necesario para que el kernel deduplica y fusione la página de memoria, luego modifica los datos duplicados controlados y evalúa el tiempo de respuesta para determinar si el acceso fue exitoso.

Se ha propuesto un método de ataque para determinar de forma remota fragmentos de memoria en el servidor.

Durante los experimentos, la tasa máxima de fuga de información fue de 34.41 bytes por hora cuando se ataca a través de una red global y de 302.16 bytes por hora cuando se ataca a través de una red local, que es más rápido que otros métodos de extracción de datos a través de canales de terceros (por ejemplo, en un ataque NetSpectre, la velocidad de transferencia de datos es de 7.5 bytes a la una).

Se han propuesto tres opciones de ataque funcionales. La primera opción le permite determinar los datos en la memoria del servidor web que utiliza Memcached. El ataque se reduce a cargar ciertos conjuntos de datos en el almacenamiento de Memcached, borrar el bloque deduplicado, reescribir el mismo elemento y crear una condición para que se produzca la copia COW cambiando el contenido del bloque. Durante el experimento con Memcached, fue posible determinar en 166.51 segundos la versión de libc instalada en un sistema que se ejecuta en una máquina virtual.

La segunda opción hizo posible conocer el contenido de los registros en el DBMS MariaDB, cuando se utiliza el almacenamiento InnoDB, recreando el contenido byte por byte. El ataque se lleva a cabo enviando solicitudes especialmente modificadas, lo que genera discrepancias de un solo byte en las páginas de memoria y analizando el tiempo de respuesta para determinar si la suposición sobre el contenido del byte era correcta. La tasa de dicha fuga es baja y asciende a 1.5 bytes por hora cuando se ataca desde una red local. La ventaja del método es que se puede utilizar para recuperar contenidos de memoria desconocidos.

La tercera opción hizo posible omitir completamente el mecanismo de protección KASLR en 4 minutos y obtener información sobre el desplazamiento de 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 en la que otros datos no cambian. El ataque se llevó a cabo desde un host ubicado a 14 saltos del sistema atacado. Se promete publicar en GitHub ejemplos de código para implementar los ataques presentados.

Fuente: opennet.ru

Añadir un comentario