
CVE-2020-11881: DoS remoto no autenticado para el servicio SMB de MikroTik.
Este informe describe CVE-2020-11881, una denegación de servicio (DoS) remota no autenticada para el servicio SMB de MikroTik que se ejecuta en RouterOs. La vulnerabilidad permite a un atacante bloquear el servicio SMB en ejecución y fue divulgada de forma responsable a security<@>mikrotik.com el 06.04.2020.
El protocolo Server Message Block (SMB) fue introducido por Microsoft y reimplementado por múltiples proveedores para mantener la compatibilidad del intercambio de archivos con los sistemas y servicios de Windows. En general, el protocolo se utiliza para el intercambio de archivos entre sistemas Windows.
6.41.3 (versión de soporte a largo plazo)
6.45.8 (versión de soporte a largo plazo)
6.45.9 (versión de soporte a largo plazo)
6.46.4 (versión estable)
6.47.2 (estable)
6.47.3 (estable)
7.0beta5 (beta)
7.1beta2 y anteriores
Probablemente se vean afectadas más versiones publicadas antes del 12.09.2020. Con la excepción de la versión 6.47.0, que parece haber sido corregida durante un ciclo de lanzamiento como respuesta al proceso inicial de divulgación responsable.
El servidor SMB se bloquea al recibir un paquete negotiation-request seguido de un paquete setup-request modificado.
Para desencadenar la vulnerabilidad, el paquete setup-request debe tener el campo MessageID establecido en 1 y el
campo SessionID en 0. El servicio se bloquea porque aparentemente no puede manejar el campo SessionID.
Para reproducir el fallo de forma fiable, reconstruya el entorno de prueba proporcionado en este repositorio.
Descargue e inicie el entorno RouterOs.
Ejecute el siguiente script en una versión recién instalada de Ubuntu 18.04, ya que el script instalará todo el software necesario. El script finaliza proporcionando la IP de la máquina virtual RouterOs.
sudo ./setupMikroTikEnvironment.sh
Habilite SMB en RouterOs
Ejecute los siguientes comandos para activar el servicio SMB.
telnet <RouterOs IP>
(user: admin, <no password>)
ip smb set enabled=yes
ip smb print
El servicio se puede comprobar manualmente desde el sistema anfitrión con el siguiente comando y debería responder
con Anonymous login successful mientras el servicio esté en ejecución.
smbclient -N -L \\\\<RouterOs IP>
El ataque de denegación de servicio
El script de python3 cve-2020-11881.py valida la disponibilidad del servicio SMB antes y después del
proceso de explotación. Una ejecución exitosa terminará con la indisponibilidad del servicio SMB.
Ejecute el script como se muestra a continuación.
python3 cve-2020-11881.py --ip <RouterOs Ip>
Probar el servicio SMB con el siguiente comando fallará.
smbclient -N -L \\\\<RouterOs IP>
Eliminar la VM
Para eliminar la VM, simplemente ejecute el script de nuevo.
El fallo se reportó el 06.04.2020 y el 12.09.2020 seguía sin corregirse, incluso después de múltiples solicitudes.
Discusión sobre el CVE: https://forum.mikrotik.com/viewtopic.php?f=2&t=166137
Currently only the long-term version channel (v6.46.7) has all the necessary fixes for this CVE. We are working on getting them published in stable and testing channels as well. Sorry for any inconvenience.
sudo ./setupMikroTikEnvironment.sh