CVE-2018-8589 o una condición de carrera que permite escalar privilegios en Windows

En octubre de 2018, los sistemas de Prevención de Explotación Automática (AEP) de Kaspersky detectaron un intento de explotar una vulnerabilidad en Windows que un análisis posterior confirmó como un nuevo 0-day que afectaba específicamente a win32k.sys. El exploit fue ejecutado por el primer stage de un instalador de malware para obtener los privilegios necesarios para la persistencia en el sistema de la víctima y fue detectado en varios ataques dirigidos en países del Este.

La vulnerabilidad, corregida por Microsoft el pasado martes, fue bautizada como CVE-2018-8589 y permite a un atacante elevar privilegios en un Windows 7 o Windows Server 2008. Se trata de una condición de carrera presente en win32k!XxxMoveWindow debido a un bloqueo incorrecto de los mensajes enviados de forma sincrónica entre threads.

El exploit crea dos threads, uno para una clase y otro para una ventana asociada. Luego mueve la ventana del thread opuesto dentro de la devolución de llamada de un mensaje WM_NCCALCSIZE en un procedimiento de ventana que es común a ambos.

Mensaje WM_NCCALCSIZE en win32k!XxxCalcValidRects

La terminación del thread opuesto en el nivel máximo de recursión dentro de la devolución de llamada WM_NCCALCSIZE causará una copia asíncrona de la estructura lParam controlada por el atacante.
Incorrecto bloqueo de mensajes entre win32k! XxxCalcValidRects y win32k! SfnINOUTNCCALCSIZE

El exploit rellena lParam con punteros al shellcode y, después de haber sido copiado con éxito al kernel dentro de win32k! SfnINOUTNCCALCSIZE, el kernel salta al nivel del usuario. El exploit que se ha visto en Internet solo funciona en versiones de 32 bits de Windows 7.

BSOD en una versión actualizada de Windows 7

Fuente: https://securelist.com/a-new-exploit-for-zero-day-vulnerability-cve-2018-8589/88845/

Comentarios