Vulnerabilidad de ejecución remota de código del cliente DHCP desmitificada


CVE-2019-0547

CVE-2019-0547 fue la primera vulnerabilidad parcheada por Microsoft este año. La biblioteca de enlace dinámico, dhcpcore.dll, que es responsable de los servicios del cliente DHCP en un sistema, es vulnerable a los paquetes de respuesta DHCP maliciosos.

Esta vulnerabilidad permite la ejecución remota de código si el usuario intenta conectarse a una pink con un servidor DHCP falso, por lo que es una vulnerabilidad crítica.

Descripción basic del protocolo DHCP

DHCP es un protocolo cliente-servidor utilizado para asignar dinámicamente una dirección IP cuando una computadora se conecta a una red. El servidor DHCP escucha en el puerto 67 y es responsable de distribuir las direcciones IP a los clientes DHCP y de asignar la configuración TCP / IP a los puntos finales.

El apretón de manos DHCP se representa a continuación:

Durante la oferta de DHCP y el reconocimiento de DHCP, el paquete contiene toda la información de configuración de TCP / IP requerida para que un cliente se una a la red. La estructura de un paquete DHCP Ack se muestra a continuación:

El campo de opciones contiene varios parámetros necesarios para la operación básica de DHCP. Una de las opciones en el campo Opciones es Búsqueda de dominio (el campo de tipo es 119).

Campo de opción de búsqueda de dominio (RFC 3397)

Esta opción se pasa junto con los paquetes OFERTA y ACK al cliente para especificar la lista de búsqueda de dominio utilizada al resolver nombres de host usando DNS. El formato del campo de opción DHCP es el siguiente:

Para permitir que la lista de búsqueda se codifique de forma compacta, las cadenas de búsqueda en la lista de búsqueda se concatenan y codifican.

Una lista de nombres de dominio, como www.illustration.com y dns.illustration.com se codifican así:

Vulnerabilidad

Existe una vulnerabilidad en la función DecodeDomainSearchListData de dhcpcore.dll.

La función DecodeDomainSearchListData decodifica el valor del campo de opción de lista de búsqueda codificada. Durante la decodificación, la función calcula la longitud de la lista de nombres de dominio decodificados y asigna memoria y copia la lista decodificada.

Un usuario malintencionado puede crear una lista de búsqueda codificada, de modo que cuando la función DecodeDomainSearchListData decodifica, la longitud resultante es cero. Esto conducirá a heapalloc con cero memoria, lo que dará como resultado una escritura fuera del límite.

Parche

El parche incluye una comprobación que garantiza que el argumento de tamaño para HeapAlloc no sea cero. Si es cero, la función sale.

Conclusión

Un servidor DHCP falso en la crimson puede aprovechar esta vulnerabilidad, respondiendo a la solicitud DHCP de los clientes. Este servidor DHCP falso también puede ser un punto de acceso inalámbrico al que se conecta un usuario. La explotación exitosa de esta vulnerabilidad puede desencadenar la ejecución de un código en el cliente y tomar el management del sistema.

Los clientes de McAfee NSP están protegidos de este ataque con la firma «0x42602000».





Enlace a la noticia initial