Vulnerabilidad Crítica En SMB (CVE-2020-1206): SMBleed
Investigadores en ciberseguridad han descubierto una nueva vulnerabilidad crítica que afecta al protocolo SMB y que podría permitir a los atacantes exponer la memoria del kernel de forma remota. Esto, combinado con otra vulnerabilidad ya conocida (CVE-2020-0796, también conocida como «SMBGhost»), podría conducir a la ejecución remota de código.
Apodado «SMBleed» (CVE-2020-1206) por la empresa de seguridad cibernética ZecOps, el defecto reside en la función de descompresión de SMB. Se trata de la misma función que con el error SMBGhost o EternalDarkness (CVE-2020-0796), que salió a la luz hace tres meses, convierte a los sistemas de Windows en vulnerables a ataques de malware que pueden propagarse a través de redes.
La vulnerabilidad recién descubierta afecta las versiones de Windows 10 1903 y 1909, para las cuales Microsoft lanzó ya parches de seguridad como parte de sus actualizaciones mensuales del Patch Tuesday para junio.
La Agencia de Seguridad de Infraestructura y Ciberseguridad de EE. UU. (CISA) emitió un aviso la semana pasada advirtiendo a los usuarios de Windows 10 para que actualizasen sus máquinas después de que el código de explotación para SMBGhost fuera publicado la semana pasada.
«Aunque Microsoft reveló y proporcionó actualizaciones para esta vulnerabilidad en marzo de 2020, los atacantes están apuntando a sistemas aún no parcheados, usando la prueba de concepto pública, según informes recientes de código abierto», declaró la CISA.
Según los investigadores de ZecOps, el fallo se debe al modo en que la función de descompresión («Srv2DecompressData«) maneja las solicitudes de mensajes especialmente diseñados (por ejemplo, SMB2 WRITE) enviados a un servidor SMBv3 específico, lo que permite a un atacante leer la memoria del kernel no inicializada y realizar modificaciones a la función de compresión.
La función Srv2DecompressData recibe el mensaje comprimido que envía el cliente, asigna la cantidad de memoria requerida y descomprime los datos. Luego, si el offset no es cero, copia los datos que se colocan antes de los datos comprimidos al comienzo del buffer asignado.
Si se configura el tamaño original del segmento comprimido, reflejado en la variable OriginalCompressedSegmentSize, para que ocupe más bytes, gracias a la ausencia de comprobaciones, se puede escribir fuera de los límites del buffer. Es decir, si tomamos como ejemplo que el tamaño de nuestros datos comprimidos fuera X después de la descompresión y configuramos OriginalCompressedSegmentSize para que sea X + 0x1000, obtendremos lo siguiente:
Los datos del kernel no inicializados se tratarán como parte de nuestro mensaje.
Se utiliza el mensaje SMB2 WRITE porque nos permite controlar las cabeceras del mensaje al tiempo que permite que el buffer pueda contener datos no inicializados.
Mitigación
Pueden remediarse los riesgos asociados a SMBleed y SMBGhost de la siguiente manera:
- Actualización de Windows (recomendado)
- El bloqueo del puerto 445 en aras de impedir los movimientos laterales usando estas vulnerabilidades
- Aislamiento del host.
- Deshabilitar la compresión SMB 3.1.1 (no es una solución recomendada)
Via: unaaldia.hispasec.com