CVE-2020-16898: “Mal vecino” | Blogs de McAfee


CVE-2020-16898: «Mal vecino»

Puntuación CVSS: 9.
Vector: CVSS: 3. / AV: N / AC: H / PR: N / UI: N / S: C / C: H / I: H / A: H / E: P / RL: O / RC: C

Visión de conjunto
Hoy, Microsoft Anunciado una vulnerabilidad crítica en la pila IPv6 de Windows, que permite a un atacante enviar paquetes malintencionados para ejecutar potencialmente código arbitrario en un sistema remoto. La prueba de concepto compartida con los miembros de MAPP (Microsoft Active Protection Program) es extremadamente basic y perfectamente confiable. Da como resultado un BSOD (pantalla azul de la muerte) inmediato, pero más aún, indica la probabilidad de explotación para aquellos que pueden evitar las mitigaciones de Home windows 10 y Home windows Server 2019. Los efectos de un exploit que otorgaría la ejecución remota de código serían generalizados y de gran impacto, ya que este tipo de mistake podría volverse manipulable. Para facilitar la referencia, denominamos a la vulnerabilidad «Poor Neighbor» porque se encuentra dentro de un «Protocolo» de descubrimiento de vecinos ICMPv6, utilizando el tipo de anuncio de enrutador.

Detalles de la vulnerabilidad
Existe una vulnerabilidad de ejecución remota de código cuando la pila TCP / IP de Home windows maneja incorrectamente los paquetes de anuncios de enrutador ICMPv6 que usan el tipo de opción 25 (Opción de servidor DNS recursivo) y un valor de campo de longitud par. En esta opción, la longitud se cuenta en incrementos de 8 bytes, por lo que una opción RDNSS con una longitud de 3 debe tener una longitud whole de 24 bytes. La opción en sí consta de cinco campos: Tipo, Longitud, Reservado, Duración y Direcciones de los servidores DNS recursivos IPv6. Los primeros cuatro campos siempre suman 8 bytes, pero el último campo puede contener un número variable de direcciones IPv6, que tienen 16 bytes cada una. Como resultado, el campo de longitud siempre debe tener un valor impar de al menos 3, por RFC 8106:

When an IPv6 host receives DNS selections (i.e., RDNSS and DNSSL
solutions) by RA messages, it procedures the options as follows:

   o  The validity of DNS options is checked with the Size subject
      that is, the worth of the Size field in the RDNSS alternative is
      bigger than or equivalent to the minimal value (3) and satisfies the
      necessity that (Duration - 1) % 2 == .

Cuando se proporciona un valor de longitud uniforme, la pila de TCP / IP de Home windows avanza incorrectamente el búfer de purple en una cantidad que es 8 bytes demasiado pequeña. Esto se debe a que la pila cuenta internamente en incrementos de 16 bytes, sin tener en cuenta el caso en el que se utiliza un valor de longitud que no cumple con RFC. Esta falta de coincidencia hace que la pila interprete los últimos 8 bytes de la opción true como el inicio de una segunda opción, lo que en última instancia conduce a un desbordamiento del búfer y un potencial RCE.

Es possible que se requiera una fuga de memoria o un mistake de divulgación de información en el kernel de Windows para construir una cadena de explotación completa para esta vulnerabilidad. A pesar de esto, esperamos ver exploits funcionales en un futuro muy cercano.

Superficie de amenaza
El mayor impacto aquí será para los consumidores en las máquinas con Home windows 10, aunque con las actualizaciones de Windows es possible que la superficie de amenaza se minimice rápidamente. Si bien no se debe contar con Shodan.io como fuente definitiva, nuestras mejores consultas indican que la cantidad de máquinas con Windows Server 2019 con direcciones IPv6 es de cientos, sin exceder aproximadamente 1000. Esto probablemente se deba a que la mayoría de los servidores están detrás de firewalls o alojados. por proveedores de servicios en la nube (CSP) y no se puede acceder directamente a través de escaneos de Shodan.

Detección
Creemos que esta vulnerabilidad se puede detectar con una very simple heurística que analiza todo el tráfico ICMPv6 entrante, buscando paquetes con un campo de tipo ICMPv6 de 134, que indica Anuncio de enrutador, y un campo de opción ICMPv6 de 25, que indica Servidor DNS recursivo (RDNSS). Si esta opción RDNSS también tiene un valor de campo de longitud que es par, la heurística descartaría o marcaría el paquete asociado, ya que es possible que sea parte de un intento de explotación de «Mal vecino».

Mitigación
Parchear es siempre el primer curso de acción y el más efectivo. Si esto no es posible, la mejor mitigación es deshabilitar IPv6, ya sea en la NIC o en el perímetro de la crimson descartando el tráfico ipv6 si no es esencial. Además, los anuncios del enrutador ICMPv6 se pueden bloquear o eliminar en el perímetro de la crimson. Home windows Defender y Firewall de Windows no pueden bloquear la prueba de concepto cuando están habilitados. Aún se desconoce si este ataque puede tener éxito al canalizar el tráfico ICMPv6 sobre IPv4 utilizando tecnologías como 6to4 o Teredo. Nuestros esfuerzos por repetir el ataque de esta manera no han tenido éxito hasta la fecha.

Para aquellos clientes de McAfee que no pueden implementar el parche de Windows, las siguientes firmas de Community Protection System (NSP) proporcionarán un parche virtual contra el intento de explotación de esta vulnerabilidad, así como una vulnerabilidad similar (CVE-2020-16899). A diferencia de «Negative Neighbor», el impacto de CVE-2020-16899 se limita a la denegación de servicio en forma de BSoD.

ID de ataque NSP: 0x40103a00 – ICMP: vulnerabilidad de elevación de privilegios de pila IPv6 de Home windows (CVE-2020-16898)
ID de ataque NSP: 0x40103b00 – ICMP: vulnerabilidad de elevación de privilegios de proveedor SSDP de detección de funciones de Windows (CVE-2020-16899)

Además, estamos lanzando reglas de Suricata para detectar la posible explotación de estas vulnerabilidades. Debido a las limitaciones en las herramientas de código abierto como Snort y Suricata, descubrimos que implementar la lógica de detección mínima descrita anteriormente requería combinar Suricata con su analizador de secuencias de comandos Lua incorporado. Hemos alojado las reglas y los scripts de Lua en nuestro GitHub público bajo CVE-2020-16898 y CVE-2020-16899 respectivamente. Aunque hemos confirmado que las reglas detectan correctamente el uso de la prueba de conceptos, deben examinarse minuciosamente en su entorno antes de la implementación para evitar el riesgo de falsos positivos.





Enlace a la noticia unique