La vulnerabilidad Bad Neighbor de Windows explicada – y cómo proteger su red

0
22

En octubre del 2020, Microsoft parcheó un conjunto de vulnerabilidades que incluían las fallas críticas de red CVE-2020-16898 y CVE-2020-16899. Conocidas como «Bad Neighbor» o «Ping of Death Redux», estas fallas acechan en la implementación de redes TCP/IP en Windows en la forma en que los paquetes ICMPv6 entrantes son manejados bajo ciertas condiciones.

Tanto CVE-2020-16898 como CVE-2020-16899 representan la vulnerabilidad Bad Neighbor; sin embargo, el impacto de CVE-2020-16898 es la ejecución remota de código, mientras que el de CVE-2020-16899 es la denegación de servicio (DoS).

La falla exige atención ya que afecta incluso a las versiones recientes de Windows 10 y Server, muy utilizadas tanto en entornos empresariales como domésticos. Además, en Internet han surgido múltiples exploits de prueba de concepto (PoC) para esta vulnerabilidad.

¿Qué es Bad Neighbor?
El aviso de seguridad de Microsoft sobre la vulnerabilidad es bastante simplista:

«Existe una vulnerabilidad de ejecución de código remoto cuando la pila TCP/IP de Windows maneja incorrectamente los paquetes de anuncio de router ICMPv6. Un atacante que explotara con éxito esta vulnerabilidad podría obtener la capacidad de ejecutar código en el servidor o cliente objetivo».

La vulnerabilidad Bad Neighbor proviene de un desbordamiento del búfer que se produce por la forma en que la pila TCP/IP se implementa en Windows. Cuando el protocolo ICMPv6 está habilitado, la implementación no maneja adecuadamente los paquetes de anuncio de router (RA) siempre, y cuando el servidor DNS recursivo (RDNSS) también esté habilitado.

Esto se debe a que cuando se aplican ambas condiciones, se espera que los paquetes RA ICMPv6 tengan cinco campos: tipo, longitud, reservado, vida útil y direcciones RDNSS IPv6, siendo la longitud del paquete un valor impar, según lo especificado por el RFC 8106.

La razón es simple. El valor de la longitud (que debería ser al menos 3) se cuenta en incrementos de 8 bytes. Los primeros cuatro campos siempre ocupan 8 bytes. Considerando que el último campo (direcciones IPv6 RDNSS) puede contener una o más direcciones IPv6 de 16 bytes cada una, se espera que el tamaño total de un solo paquete RA sea de 24, 40 o 56 (dependiendo de cuántas direcciones IPv6 haya).

Una estructura de paquetes ICMPv6 con la opción RDNSS activada.

Una longitud de 3 implicaría que la longitud total del paquete es de 24 bytes y contiene solo una dirección IPv6. Por consiguiente, el valor proporcionado para la longitud debería ser 3, 5, 7 y así sucesivamente.

Si un paquete elaborado contiene un valor de longitud uniforme, puede dar lugar a un desbordamiento del búfer de la memoria intermedia debido a que el paquete es más grande, pero se anuncia que contiene menos bytes de los que realmente contiene. El desbordamiento del búfer resultante está obligado a causar una condición de denegación de servicio (DoS), pero bajo ciertas condiciones un atacante remoto no autenticado puede explotar la falla para ejecutar también un código arbitrario en el sistema impactado.

«Para explotar esta vulnerabilidad, un atacante tendría que enviar paquetes de anuncio de router ICMPv6 especialmente diseñados a una computadora remota con Windows», explica el aviso de seguridad de Microsoft en CVE-2020-16898.

¿Cuál es el impacto potencial de Bad Neighbor?
Windows y Windows Server siguen siendo los sistemas operativos más utilizados en los entornos empresariales, incluyendo los de salud/asistencia médica. Los operadores de ransomware se dirigen a hospitales y centros de salud usando una variedad de vectores de ataque. En un caso, un ataque de ransomware causó la muerte de un paciente.

Dada la probabilidad de que esta falla sea explotada para atacar hospitales, el Servicio Nacional de Salud del Reino Unido (NHS) publicó su propio aviso de seguridad sobre Bad Neighbor. «Bad Neighbor es una de esas vulnerabilidades que es fácil de desestimar por exagerada, porque actualmente solo resulta en una pantalla azul”, anota Rob Bathurst, CTO de Digitalware.

Bathurst dice que los operadores de ransomware pueden utilizar esta vulnerabilidad como un vector de ataque para entregar sus kits maliciosos y acelerar sus actividades en una red comprometida. «Esa opinión, sin embargo, no tiene en cuenta el hecho de que la única manera de protegerse es deshabilitando el IPv6, lo cual es casi imposible de hacer en una computadora moderna o unida a un dominio. Esto significa que los grupos de ransomware, una vez que la vulnerabilidad se convierte en un arma, pueden aprovecharla contra cualquiera con un sistema operativo afectado al que pueda llegar a través de una red. Una versión armada de esta vulnerabilidad capaz [de instalar] un kit de ransomware podría aumentar seriamente la velocidad de una infección después del compromiso inicial».

La vulnerabilidad Bad Neighbor ahora tiene múltiples exploits de PoC disponibles, razón por la cual se alienta a los administradores de la red a remediar esta falla inmediatamente.

Cómo mitigar la vulnerabilidad Bad Neighbor
El aviso de Microsoft recomienda parchear la vulnerabilidad Bad Neighbor aplicando las últimas actualizaciones de seguridad. Si no es posible actualizar, también se ha proporcionado una solución alternativa para los sistemas que ejecutan Windows 10 versión 1709 y superior. La solución provisional consiste en desactivar la opción de RDNSS ICMPv6 ejecutando un simple comando de PowerShell. No es necesario reiniciar el sistema para que los cambios surtan efecto.

netsh int ipv6 set int *INTERFACENUMBER* rabaseddnsconfig=disable

«El método alternativo desactiva la configuración del DNS basada en RA. Es una alternativa en redes donde la dirección de un host IPv6 se autoconfigura a través de la autoconfiguración de direcciones IPv6 sin estado, donde no hay ninguna infraestructura DHCPv6 o algunos hosts no tienen un cliente DHCPv6», señala el aviso de Microsoft. «Windows todavía soporta DHCPv6 y tiene prioridad sobre la configuración basada en 6106«.

Sin embargo, consulte a los administradores de TI y de redes antes de aplicar estas soluciones provisionales para asegurarse de que la infraestructura de la empresa no depende de la configuración del DNS basada en RA.

Para los profesionales del Centro de Operaciones de Seguridad (SOC), la siguiente regla del IDS Suricata puede ayudar a monitorear el tráfico en busca de señales de un exploit de Bad Neighbor en progreso. El script cve-2020-16898.lua con información relacionada está disponible en el blog del Advanced Threat Research team de McAfee.

alert icmp any any -> any any (msg:»Potential CVE-2020-16898 Exploit»; lua:cve-2020-16898.lua; sid:202016898; rev:1;)

Lo que hace que la remediación sea particularmente desafiante en torno a Bad Neighbor es el intercambio que podría resultar de la desactivación de la característica RDNSS de ICMPv6, en tiempos en los que IPv6 sigue siendo ampliamente adoptado.

Ax Sharma – CSOonline.com / CIOperu.pe