El pasado martes 14 de mayo Microsoft lanzaba un parche para la vulnerabilidad CVE-2019-0708 bautizada también como BlueKeep, una vulnerabilidad en Remote Desktop Services de Windows que permite ejecución remota de código sin pre-autenticación, mandando simplemente paquetes especialmente modificados.
Tal y como reza Microsoft en su boletín, Windows 7, Windows Server 2008 R2 y Windows Server 2008 son vulnerables, así como los Windows 2003 y Windows XP, estos últimos y como ya sabemos ya fuera de soporte.
Evidentemente la criticidad de la vulnerabilidad causó un gran revuelo porque además abre la posibilidad de nuevo de armar malware "wormable" o autopropagable del tipo WannaCry. El resultado ha sido una avalancha de búsquedas de un exploit funcional que todavía hoy no ha cesado. Pero antes de avanzar cualquier PoC entendamos un poco en qué consiste la vulnerabilidad...
Análisis técnico CVE-2019-0708
Nos enfrentamos a una vulnerabilidad del tipo use-after-free en termdd.sys, un driver de kernel que usa el RDP (Remote Desktop Protocol) de Microsoft. Para entenderlo un poco mejor vamos a ilustrar el inicio de una comunicación RDP gracias a un buen esquema que encontré en el blog de Ixia:
Primero, tenemos una conexión X.224 iniciada por el cliente que se utiliza para realizar una solicitud de conexión al servidor, seguido de una confirmación de esta conexión.
Las siguientes peticiones "MCS Connect Initial y GCC Create", dentro del intercambio de mensajes para la Configuración Básica, contienen información de creación de canales virtuales, información relacionada con la seguridad y otros parámetros de capacidad y compatibilidad del cliente RDP. Dentro hay un campo de 8 bytes terminado en un byte nulo llamado "channelName_N" que se usa para especificar el nombre del canal.
Evidentemente la criticidad de la vulnerabilidad causó un gran revuelo porque además abre la posibilidad de nuevo de armar malware "wormable" o autopropagable del tipo WannaCry. El resultado ha sido una avalancha de búsquedas de un exploit funcional que todavía hoy no ha cesado. Pero antes de avanzar cualquier PoC entendamos un poco en qué consiste la vulnerabilidad...
Análisis técnico CVE-2019-0708
Nos enfrentamos a una vulnerabilidad del tipo use-after-free en termdd.sys, un driver de kernel que usa el RDP (Remote Desktop Protocol) de Microsoft. Para entenderlo un poco mejor vamos a ilustrar el inicio de una comunicación RDP gracias a un buen esquema que encontré en el blog de Ixia:
Primero, tenemos una conexión X.224 iniciada por el cliente que se utiliza para realizar una solicitud de conexión al servidor, seguido de una confirmación de esta conexión.
Las siguientes peticiones "MCS Connect Initial y GCC Create", dentro del intercambio de mensajes para la Configuración Básica, contienen información de creación de canales virtuales, información relacionada con la seguridad y otros parámetros de capacidad y compatibilidad del cliente RDP. Dentro hay un campo de 8 bytes terminado en un byte nulo llamado "channelName_N" que se usa para especificar el nombre del canal.