Kaspersky descubrió una vulnerabilidad que afecta a Google Chrome
Recientemente, Kaspersky descubrió un nuevo exploit que aprovechaba de una falla que era desconocida en Chrome, la cual Google ha confirmado que hay una vulnerabilidad zero-day en su navegador y que ya está catalogado como CVE-2019-13720.
Esta vulnerabilidad puede ser explotada utilizando un ataque utilizando una inyección similar a un ataque de “Watering Hole”. Este tipo de ataque hace referencia a un depredador que, en lugar de buscar presas, prefiere esperar en un lugar donde está seguro de que vendrá (en este caso, en un punto de agua para beber).
Ya que el ataque fue descubierto en un portal de información en coreano, en el cual se ha insertado un código JavaScript malicioso en la página principal, que a su vez carga un script de creación de perfiles desde un sitio remoto.
En el index de la página web se alojaba una pequeña inserción de código JavaScript que cargaba un script remoto desde code.jquery.cdn.behindcorona
El script luego carga otro script. Este script verifica si el sistema de la víctima puede infectarse al realizar una comparación con el agente de usuario del navegador, que debe ejecutarse en una versión de Windows de 64 bits y no ser un proceso WOW64.
También intenta obtener el nombre y la versión del navegador. La vulnerabilidad intenta explotar el error en el navegador Google Chrome y el script comprueba si la versión es mayor o igual a 65 (la versión actual de Chrome es 78).
La versión de Chrome verifica el script de creación de perfiles. Si se valida la versión del navegador, el script comienza a ejecutar una serie de solicitudes AJAX en el servidor controlado del atacante, donde el nombre de una ruta apunta al argumento pasado al script.
La primera solicitud es necesaria para obtener información importante para su uso posterior. Esta información incluye múltiples cadenas codificadas hexadecimales que le indican al script cuántos fragmentos del código de explotación real se deben descargar del servidor, así como una URL al archivo de imagen que incorpora una clave para la carga final y un Clave RC4 para descifrar fragmentos de código del exploit.
La mayoría del código usa varias clases relacionadas con un determinado componente vulnerable del navegador. Dado que este error aún no se había solucionado al escribir su publicación, Kaspersky decidió no incluir detalles sobre el componente vulnerable específico.
Hay algunas tablas grandes con números que representan un bloque de shellcode y una imagen PE integrada.
El exploit utilizó un error de race condition entre dos subprocesos debido a la falta de sincronización adecuada entre ellos. Esto le da al atacante una condición muy peligrosa de uso después de la liberación (UaF) porque puede conducir a escenarios de ejecución de código, que es exactamente lo que sucede en este caso.
El exploit primero intenta hacer que UaF pierda información importante de direcciones de 64 bits (como un puntero). Esto da como resultado varias cosas:
- si una dirección se divulga con éxito, significa que el exploit funciona correctamente
- se utiliza una dirección revelada para averiguar dónde se encuentra el montón / pila y que cancela la técnica de asignación aleatoria de formato de espacio de direcciones (ASLR)
- algunas otras indicaciones útiles para una explotación posterior podrían ubicarse mirando cerca de esta dirección.
Después de eso, intenta crear un gran grupo de objetos utilizando una función recursiva. Esto se hace para crear un diseño de montón determinista, que es importante para una explotación exitosa.
Al mismo tiempo, está tratando de usar una técnica de pulverización de montón que tiene como objetivo reutilizar el mismo puntero que se lanzó anteriormente en la parte UaF.
Este truco podría usarse para confundir y darle al atacante la capacidad de operar en dos objetos diferentes (desde el punto de vista de JavaScript), aunque de hecho están en la misma región de memoria.
Google ha lanzado una actualización de Chrome que corrige la falla en Windows, macOS y Linux, y se recomienda a los usuarios que actualicen a la versión 78.0.3904.87 de Chrome.