Propúxose un método de ataque para determinar remotamente fragmentos de memoria no servidor

Un grupo de investigadores da Universidade Técnica de Graz (Austria), coñecido anteriormente por desenvolver os ataques MDS, NetSpectre, Throwhammer e ZombieLoad, publicou un novo método de ataque de canle lateral (CVE-2021-3714) contra o mecanismo de deduplicación da memoria. , que permite determinar a presenza de determinados datos na memoria, organizar unha fuga byte a byte do contido da memoria ou determinar a disposición da memoria para evitar a protección de aleatorización baseada en enderezos (ASLR). O novo método difire das variantes demostradas anteriormente de ataques ao mecanismo de deduplicación ao realizar un ataque desde un host externo utilizando como criterio o cambio no tempo de resposta ás solicitudes enviadas ao atacante a través dos protocolos HTTP/1 e HTTP/2. Demostrouse a capacidade de levar a cabo o ataque para servidores baseados en Linux e Windows.

Os ataques ao mecanismo de deduplicación da memoria usan a diferenza no tempo de procesamento dunha operación de escritura como unha canle para filtrar información en situacións nas que un cambio de datos leva á clonación dunha páxina de memoria deduplicada mediante o mecanismo Copy-On-Write (COW). . Durante o funcionamento, o núcleo detecta páxinas de memoria idénticas de diferentes procesos e combínaas, asignando páxinas de memoria idénticas nunha única área de memoria física para almacenar só unha copia. Cando un dos procesos intenta cambiar os datos asociados ás páxinas deduplicadas, prodúcese unha excepción (errón de páxina) e, mediante o mecanismo Copy-On-Write, créase automaticamente unha copia separada da páxina de memoria, que se asigna ao proceso. Dedícase tempo adicional a completar a copia, o que pode ser un sinal de que os cambios de datos interfiran noutro proceso.

Os investigadores demostraron que os atrasos derivados do mecanismo COW poden ser capturados non só localmente, senón tamén analizando os cambios nos tempos de entrega de resposta na rede. Propuxéronse varios métodos para determinar o contido da memoria desde un host remoto mediante a análise do tempo de execución das solicitudes a través dos protocolos HTTP/1 e HTTP/2. Para gardar os modelos seleccionados, utilízanse aplicacións web estándar que almacenan a información recibida nas solicitudes na memoria.

O principio xeral do ataque redúcese a encher unha páxina de memoria no servidor con datos que potencialmente repitan o contido dunha páxina de memoria xa existente no servidor. O atacante agarda entón o tempo necesario para que o núcleo deduplique e fusione a páxina de memoria, despois modifica os datos duplicados controlados e avalía o tempo de resposta para determinar se o hit foi exitoso.

Propúxose un método de ataque para determinar remotamente fragmentos de memoria no servidor

Durante os experimentos, a taxa máxima de fuga de información foi de 34.41 bytes por hora cando se ataca a través dunha rede global e de 302.16 bytes por hora cando se ataca a través dunha rede local, o que é máis rápido que outros métodos de extracción de datos a través de canles de terceiros (por exemplo, nun ataque NetSpectre, a taxa de transferencia de datos é de 7.5 bytes á unha).

Propuxéronse tres opcións de ataque de traballo. A primeira opción permite determinar os datos na memoria do servidor web que usa Memcached. O ataque redúcese a cargar certos conxuntos de datos no almacenamento Memcached, borrar o bloque deduplicado, reescribir o mesmo elemento e crear unha condición para que se produza a copia COW cambiando o contido do bloque. Durante o experimento con Memcached, foi posible determinar en 166.51 segundos a versión de libc instalada nun sistema que se executa nunha máquina virtual.

A segunda opción permitiu coñecer o contido dos rexistros no DBMS MariaDB, cando se utilizaba o almacenamento InnoDB, recreando o contido byte a byte. O ataque lévase a cabo mediante o envío de solicitudes especialmente modificadas, o que produce desaxustes dun só byte nas páxinas de memoria e analizando o tempo de resposta para determinar que a suposición sobre o contido do byte era correcta. A taxa de tal fuga é baixa e ascende a 1.5 bytes por hora cando se ataca desde unha rede local. A vantaxe do método é que se pode usar para recuperar contidos de memoria descoñecidos.

A terceira opción permitiu ignorar completamente o mecanismo de protección KASLR en 4 minutos e obter información sobre a compensación de memoria da imaxe do núcleo da máquina virtual, nunha situación na que o enderezo de compensación está nunha páxina de memoria na que non cambian outros datos. O ataque levouse a cabo desde un host situado a 14 saltos do sistema atacado. Os exemplos de código para implementar os ataques presentados prometen ser publicados en GitHub.

Fonte: opennet.ru

Engadir un comentario