14 jul. 2020

SigRed: Microsoft parchea vulnerabilidad crítica en el servidor DNS de Windows (10 de 10, Parchea!)


Una vulnerabilidad crítica que ha estado presente en el Servidor DNS de Windows 2008 a 2019 durante casi dos décadas y podía explotarse para obtener privilegios de Administrador de Dominio y comprometer toda la infraestructura corporativa detrás de ella. Microsoft la ha solucionado hoy.

La vulnerabilidad recibió el identificador de seguimiento CVE-2020-1350 y el nombre SigRed. Es una Ejecución Remota de Código que afecta a las versiones de Windows Server 2003 a 2019 y recibió la calificación de gravedad máxima, 10 de 10.

La vulnerabilidad es crítica porque es "wormable", lo que significa que un exploit puede propagarse automáticamente a máquinas vulnerables en la red sin interacción del usuario y ejecutar código con permisos de System. Esta característica lo coloca en la misma categoría de riesgo que EternalBlue en Server Message Block (SMB) y BlueKeep en Remote Desktop Protocol (RDP).

Paquete DNS mal formado

El sistema de DNS es un modelo es jerárquico y descentralizado, por lo que si un servidor DNS reenvía las consultas a las que no tiene respuesta. En la parte superior de la jerarquía hay 13 servidores DNS raíz que tienen toda la información. Los investigadores de Check Point descubrieron una falla en la implementación de DNS de Microsoft que puede explotarse cuando el servidor analiza una consulta entrante o una respuesta a una solicitud reenviada.
Encontraron un desbordamiento de enteros que conduce a un desbordamiento de heap-based buffer en "dns.exe! SigWireRead", la función que analiza los tipos de respuesta para consultas tipo "SIG". Para resumir, al enviar una respuesta DNS que contenga un registro SIG grande (mayor que 64 KB), se puede causar un desbordamiento del búfer basado en el almacenamiento dinámico de aproximadamente 64 KB en un pequeño búfer asignado.

Para hacer que el servidor DNS de Windows objetivo analice las respuestas desde su máquina, los investigadores hicieron lo siguiente:
  • Configurar los registros NS a un dominio propio (deadbeef.fun) para que apunten a un servidor DNS malicioso (ns1.41414141.club)
  • Consultar a la víctima del servidor DNS de Windows para obtener registros NS de deadbeef.fun
  • El DNS de la víctima, que aún no conoce la respuesta para esta consulta, reenvía la consulta al servidor DNS que se encuentra arriba (8.8.8.8)
  • El servidor autorizado (8.8.8.8) conoce la respuesta y responde que el NameServer de deadbeef.fun es ns1.41414141.club
  • El NS Server de Windows procesa y almacena en caché esta respuesta
  • La próxima vez que solicitemos un subdominio de deadbeef.fun, el servidor DNS de Windows de destino también consultará a ns1.41414141.club por su respuesta, ya que es el NameServer para este dominio.
  • En Windows, el cliente DNS y el servidor DNS se implementan en dos módulos diferentes:
    • Cliente DNS: dnsapi.dll es responsable de la resolución de DNS.
    • Servidor DNS: dns.exe es responsable de responder las consultas DNS en Windows Server, en el que está instalada la funcionalidad DNS.
Los investigadores descubrieron que un actor dalino que explota SigRed no tiene que estar en la misma red que el servidor DNS de destino, ya que los datos DNS pueden transportarse a través de una conexión TCP, compatible con Windows DNS. Como tal, el servidor de destino analizará los datos como una consulta DNS, incluso si está empaquetada como una carga HTTP.

Check Points señala que debido a que el servidor DNS de Windows admite "Reutilización de conexión" y "Canalización", un atacante puede iniciar varias consultas a través de una conexión TCP sin tener que esperar una respuesta. Estas características permiten enviar al servidor una solicitud HTTP POST con datos binarios que tiene otra consulta DNS en los datos POST, para ser procesados ​​por separado.

Esto es posible en navegadores menos populares que permiten solicitudes al puerto 53 utilizadas por DNS. Google Chrome y Mozilla Firefox no permiten solicitudes HTTP a este puerto.

La vulnerabilidad ha existido en el código de Microsoft por más de 17 años y los investigadores que lo encontraron dicen que no es descabellado suponer que otros actores también pueden haberlo encontrado.

"Una violación del servidor DNS es un problema crítico. La mayoría de las veces, coloca al atacante a solo una pulgada de distancia de violar a toda la organización. Solo hay un puñado de estos tipos de vulnerabilidad lanzados alguna vez" dijo Omri Herscovici de CheckPoint.

Es fundamental que las organizaciones grandes y pequeñas prioricen la aplicación de los parches que Microsoft lanzó hoy para SigRed.

Actualización 16:30: como una solución temporal, hasta que se aplique el parche, Microsoft sugiere establecer la longitud máxima de un paquete de un mensaje DNS sobre TCP en 0xFF00 (cambiar el valor de TcpReceivePacketSize de 0xFFFF a 0xFF00, 255 bytes menos que el máximo), lo que debería eliminar la vulnerabilidad. Se puede hacer ejecutando los siguientes comandos:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters" /v
"TcpReceivePacketSize" /t REG_DWORD /d 0xFF00 /f net stop DNS && net start DNS
Actualización 17:00: ya hay PoC y exploit público (este es un fake).

2 comentarios:

  1. parece fake el PoC, no mire mucho, pero no parece un exploit

    ResponderBorrar
    Respuestas
    1. Gracias, habia olvidado actualizar el enlace. Ahora está aclarado.

      Borrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!