Nueva técnica de explotación de vulnerabilidades de tipo Spectre en Chrome

Un grupo de investigadores de universidades estadounidenses, australianas e israelíes ha propuesto una nueva técnica de ataque a través de canales laterales para explotar vulnerabilidades de la clase Spectre en navegadores basados en el motor Chromium. El ataque, que ha recibido el nombre de código Spook.js, permite, mediante la ejecución de código JavaScript, eludir el mecanismo de aislamiento de sitios y leer el contenido de todo el espacio de direcciones del proceso actual, es decir, acceder a los datos de páginas que se están ejecutando en otras pestañas, pero que se procesan en un único proceso.

Dado que Chrome ejecuta diferentes sitios en diferentes procesos, la posibilidad de llevar a cabo ataques prácticos está limitada a servicios que permiten a diferentes usuarios alojar sus páginas. El método permite, desde una página en la que el atacante puede incrustar su código JavaScript, determinar la existencia de otras páginas abiertas por el usuario del mismo sitio y extraer información confidencial de ellas, como credenciales o datos bancarios que el sistema de autocompletado de formularios web haya introducido. Como demostración, se muestra cómo se puede atacar un blog ajeno en el servicio Tumblr, si su propietario abre en otra pestaña el blog de los delincuentes, alojado en el mismo servicio.

Reproducir video

Otra variante de aplicación del método es el ataque a extensiones de navegador, permitiendo que, al instalar una extensión controlada por los atacantes, se extraigan datos de otras extensiones. Como ejemplo, se muestra cómo al instalar una extensión maliciosa se puede extraer información confidencial del gestor de contraseñas LastPass.

Reproducir video

Los investigadores han publicado un prototipo de exploit que funciona en Chrome 89 en sistemas con CPU Intel i7-6700K e i7-7600U. Al crear el exploit, se utilizaron prototipos de código JavaScript previamente publicados por Google para llevar a cabo ataques de la clase Spectre. Se señala que los investigadores lograron preparar exploits funcionales para sistemas basados en procesadores Intel y Apple M1, que permiten organizar la lectura de memoria a una velocidad de 500 bytes por segundo y con una precisión del 96%. Se supone que el método también es aplicable a procesadores AMD, aunque no se logró preparar un exploit completamente operativo.

El ataque es aplicable a cualquier navegador basado en el motor Chromium, incluyendo Google Chrome, Microsoft Edge y Brave. Los investigadores también creen que el método se puede adaptar para funcionar con Firefox, pero dado que el motor de Firefox es muy diferente al de Chrome, el trabajo para crear un exploit similar se ha dejado para el futuro.

Para protegerse de los ataques basados en la ejecución especulativa de instrucciones a través del navegador, Chrome ha implementado la segmentación del espacio de direcciones: la sandbox-isolación permite que JavaScript funcione solo con punteros de 32 bits y separa la memoria de los controladores en montones (heap) de 4 GB no superpuestos. Para organizar el acceso a todo el espacio de direcciones del proceso y eludir la limitación de 32 bits, los investigadores han utilizado la técnica Type Confusion, que permite obligar al motor JavaScript a procesar un objeto con un tipo incorrecto, lo que permite formar un puntero de 64 bits a partir de la combinación de dos valores de 32 bits.

La esencia del ataque es que, al procesar un objeto malicioso cuidadosamente diseñado en el motor JavaScript, se crean condiciones que conducen a la ejecución especulativa de instrucciones que acceden a un array. El objeto se selecciona de tal manera que los campos controlados por el atacante se colocan en un área donde se utiliza un puntero de 64 bits. Dado que el tipo del objeto malicioso no coincide con el tipo del array que se está procesando, normalmente tales acciones se bloquean en Chrome mediante un mecanismo de desoptimización de código utilizado para acceder a los arrays. Para resolver este problema, el código para el ataque Type Confusion se coloca en un bloque condicional "if" que no se activa en condiciones normales, pero que se ejecuta en modo especulativo, cuando el procesador predice incorrectamente la próxima bifurcación.

Al final, el procesador accede de forma especulativa a un puntero de 64 bits formado y retrocede el estado tras determinar una predicción errónea; sin embargo, las huellas de la ejecución quedan en la caché general y pueden ser recuperadas mediante métodos que determinan el contenido de la caché a través de canales secundarios, 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 condiciones de precisión insuficiente del temporizador disponible en JavaScript, se utiliza el método propuesto por Google, que engaña la estrategia de reemplazo de datos de la caché Tree-PLRU empleada en los procesadores y permite, al aumentar el número de ciclos, incrementar considerablemente la diferencia de tiempo entre la presencia y ausencia de un valor en la caché.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster