
A principios de este año, los tipos de ataque
Specter y Meltdown ya se mostraban. Le permiten atacar a la víctima con un uso mínimo de recursos. Se puede utilizar un JavaScript especialmente diseñado para realizar un ataque Spectre. Los servicios en la nube, hasta donde se puede entender, son seguros: ambos tipos de ataques son aplicables solo a la penetración de recursos de red discretos.
Ahora
hay información sobre un nuevo tipo de ataque. Fue proporcionado por investigadores de la Universidad Tecnológica de Graz que lleva el nombre de Karl y Franz. El especialista en seguridad cibernética Daniel Grass, quien descubrió el ataque Meltdown original, también participó en el descubrimiento de un nuevo tipo de ataque. En cuanto al nuevo producto, se llama NetSpectre. Su peculiaridad es que un atacante puede leer de forma remota los datos de la memoria sin ejecutar ningún código en el sistema de la víctima.
Vale la pena señalar que todas las opciones de ataque de Spectre se basan en el mismo conjunto de principios. Cada procesador se caracteriza por un comportamiento arquitectónico y microarquitectura. Pueden variar, pero no dramáticamente. Por ejemplo, en el primer caso, un programa que carga un valor de un área específica de la memoria esperará hasta que se conozca la dirección antes de comenzar la descarga. En el segundo caso, el procesador puede intentar adivinar la dirección para comenzar a recibir el valor de la memoria, incluso antes de que se conozca la dirección exacta.
Si el procesador comete un error, la descarga se realizará de una nueva manera, esta vez con la dirección correcta. El valor "adivinado" se ignorará y se preservará el comportamiento definido arquitectónicamente. Pero el error afectará a otros elementos, en particular, el contenido de la memoria caché. Tales violaciones pueden ser detectadas e identificadas por malware. Este método de obtención de datos se conoce como un canal de terceros. O más bien, como un
ataque a canales de
terceros (o secundarios).
Este no es un nuevo tipo de ataque en absoluto, se los conoce desde los años 80 del siglo pasado, pero se generalizaron después de la cobertura de Paul Kocher en el año 96. NetSpectre se basa en estos principios de ataque bien conocidos, pero los desarrolladores han aportado algo propio. En particular, el ataque le permite iniciar una fuga de datos desde la memoria manipulando los paquetes de red que se envían a través de la red.
Para determinar los datos residuales del procesador, los expertos que hablaron sobre el ataque sugieren utilizar fragmentos de código existentes en las aplicaciones o el núcleo, que se activan cuando aparecen ciertos tipos de solicitudes de red. Por ejemplo, para extraer datos que se han asentado en la memoria caché, los investigadores proponen modificar el método Evict + Reload. Se basa en la creación de condiciones para desplazar datos del caché, así como en el procesamiento de solicitudes, cuyo tiempo de ejecución nos permite juzgar la disponibilidad de datos en el caché del procesador.
Un ataque podría considerarse muy peligroso si no fuera por su bajo rendimiento. En condiciones óptimas, el nuevo método puede determinar 15-60 bits por hora. Un día: no más de 45-180 bytes. Pero las condiciones óptimas son muy raras, por lo que, en condiciones normales, la velocidad de ataque es mínima: solo 1-3 bytes en 3-8 horas de ataque. Para comprobar un bit en este caso, se requieren unos 20 millones de comprobaciones.
Según los expertos, con el tiempo, se propondrán nuevos métodos para aumentar la efectividad del ataque. Pero extraer, por ejemplo, una clave AES tomará días enteros. Tal ataque está bloqueado por métodos de defensa que son efectivos contra la primera versión de la vulnerabilidad Spectre (CVE-2017-5753).

Para aumentar el rendimiento del ataque en condiciones reales, pero no óptimas, hasta 60 bits por hora, los investigadores
sugieren usar dispositivos con instrucciones AVX2 como un canal adicional para la filtración de información. Este método utiliza las características de transferir la unidad AVX2 al modo de ahorro de energía. En el caso de uso inactivo de AVX2, se proporciona un modo de ahorro de energía en el que la unidad AVX2 continuará funcionando, aunque con una disminución en el rendimiento. Si AVX2 está inactivo durante 1 ms, el procesador lo apaga, lo que provoca un retraso durante la siguiente operación.
Los atacantes pueden determinar el hecho de la ejecución del código especulativo en función de la desaparición del retraso para despertar el bloque anterior. Y esto, a su vez, le permite reducir la cantidad de verificaciones para determinar cada bit de información.
Para realizar este trabajo, puede usar una utilidad especializada. Según los expertos, los fragmentos de código mencionados anteriormente pueden estar contenidos en cualquier aplicación de red. Incluyendo - el código de servidores http, SSH y otros manejadores de paquetes de red. Bajo ciertas condiciones, puede obtener acceso completo a los contenidos de toda la memoria del sistema.