Un grupo de investigadores de universidades estadounidenses, australianas e israelíes dieron a conocer que describieron una nueva técnica de ataque que permite poder explotar las vulnerabilidades de clase Spectre en los navegadores con tecnología Chromium.
El ataque, con nombre en código Spook.js, permite al ejecutar código JavaScript evitar el mecanismo de aislamiento del sitio y leer el contenido de todo el espacio de direcciones del proceso actual, es decir, acceder a los datos de las páginas que se ejecutan en otras pestañas, pero que se procesan en el mismo proceso.
Dado que Chrome lanza diferentes sitios en diferentes procesos, los ataques prácticos se limitan a los servicios que permiten a diferentes usuarios alojar sus páginas. El método de ataque de Spook.js hace posible desde una página en la que un atacante puede incrustar su código JavaScript, determinar la presencia de otras páginas abiertas por el usuario del mismo sitio y extraer información confidencial de ellas, por ejemplo, credenciales o datos bancarios sustituidos por el autocompletado sistema en formularios web.
Otra aplicación del método es un ataque a los complementos del navegador, que permite, cuando se instala un complemento controlado por un atacante, extraer datos de otros complementos.
Spook.js es aplicable a cualquier navegador basado en el motor Chromium, incluidos Google Chrome, Microsoft Edge y Brave. Los investigadores también creen que el método se puede adaptar para trabajar con Firefox, pero dado que el motor de Firefox es muy diferente de Chrome, el trabajo de crear un exploit de este tipo se deja para el futuro.
Para protegerse contra los ataques relacionados con la ejecución especulativa de instrucciones a través del navegador, la segmentación del espacio de direcciones se implementa en Chrome: el aislamiento de la zona de pruebas permite que JavaScript funcione solo con punteros de 32 bits y comparte la memoria del controlador en montones de 4 GB no superpuestos.
Para organizar el acceso a todo el espacio de direcciones del proceso y evitar la limitación de 32 bits, los investigadores utilizaron la técnica de confusión de tipos, que permite que el motor de JavaScript procese un objeto con un tipo incorrecto, lo que hace posible formar un código de 64 bits basado en una combinación de dos valores de 32 bits.
La esencia del ataque es que al procesar un objeto malicioso especialmente diseñado en el motor de JavaScript, se crean condiciones que conducen a la ejecución especulativa de instrucciones que acceden a la matriz. El objeto se selecciona de tal manera que los campos controlados por los atacantes se colocan en el área donde se usa el puntero de 64 bits.
Dado que el tipo de objeto malicioso no se corresponde con el tipo de matriz que se está procesando, en condiciones normales dichas acciones se bloquean en Chrome mediante el mecanismo de deoptimización del código utilizado para acceder a las matrices. Para resolver este problema, el código del ataque Type Confusion se coloca en un bloque condicional «if», que no se activa en condiciones normales, pero se ejecuta en modo especulativo, si el procesador predice incorrectamente más ramificaciones.
Como resultado, el procesador accede especulativamente al puntero de 64 bits generado y revierte el estado después de determinar la predicción fallida, pero los rastros de ejecución se establecen en la caché compartida y se pueden restaurar usando métodos para determinar el contenido de la caché a través de canales terceros, analizando el cambio en el tiempo de acceso a los datos en caché y no en caché.
Para analizar el contenido de la caché en las condiciones de insuficiente precisión del temporizador disponible en JavaScript, se utiliza un método propuesto por Google que engaña la estrategia de desalojo de datos de la caché Tree-PLRU utilizada en procesadores y permite, al aumentar el número de ciclos, para aumentar significativamente la diferencia de tiempo en presencia y ausencia de un valor en la caché.
Los investigadores han publicado un exploit prototipo que funciona en Chrome 89 en sistemas con Intel i7-6700K e i7-7600U. El exploit fue creado utilizando prototipos de código JavaScript previamente publicados por Google para llevar a cabo ataques Spectre.
Finalmente los investigadores mencionan que lograron preparar exploits de trabajo para sistemas basados en procesadores Intel y Apple M1, a los que se les da la oportunidad de organizar la lectura de la memoria a una velocidad de 500 bytes por segundo y una precisión del 96%. Se supone que el método es aplicable a los procesadores AMD, pero no fue posible preparar un exploit completamente funcional.
Fuente: https://www.spookjs.com