
CVE-2020-11881: negação de serviço remota não autenticada para o serviço SMB do MikroTik.
Este relatório descreve o CVE-2020-11881, uma negação de serviço remota não autenticada para o serviço SMB do MikroTik executado no RouterOs. A vulnerabilidade permite que um atacante derrube o serviço SMB em execução e foi divulgada de forma responsável para security<@>mikrotik.com em 06.04.2020.
O protocolo Server Message Block (SMB) foi introduzido pela Microsoft e reimplementado por vários fornecedores para manter a compatibilidade de troca de arquivos com sistemas e serviços Windows. O protocolo em geral é usado para troca de arquivos entre sistemas Windows.
6.41.3 (long term release)
6.45.8 (long term release)
6.45.9 (long term release)
6.46.4 (stable release)
6.47.2 (stable)
6.47.3 (stable)
7.0beta5 (beta)
7.1beta2 e anteriores
Provavelmente mais versões lançadas antes de 12.09.2020 são afetadas. Com exceção da versão 6.47.0, que parece ter sido corrigida por um ciclo de lançamento em resposta ao processo inicial de divulgação responsável.
O servidor SMB irá travar após receber um pacote negotiation-request seguido por um pacote setup-request modificado.
Para acionar a vulnerabilidade, o pacote setup-request precisa ter o campo MessageID definido como 1 e o campo SessionID definido como 0. O serviço trava porque aparentemente não consegue lidar com o campo SessionID.
Para reproduzir o bug de forma confiável, recrie o ambiente de teste fornecido neste repositório.
Baixe e inicie o ambiente RouterOs.
Execute o seguinte script em uma instalação nova do Ubuntu 18.04, pois o script instalará todo o software necessário. O script termina fornecendo o IP da VM RouterOs.
sudo ./setupMikroTikEnvironment.sh
Habilitar SMB no RouterOs
Execute os seguintes comandos para ativar o serviço SMB.
telnet <RouterOs IP>
(user: admin, <no password>)
ip smb set enabled=yes
ip smb print
O serviço pode ser verificado manualmente a partir do sistema host com o seguinte comando e deve responder com Anonymous login successful enquanto o serviço estiver em execução.
smbclient -N -L \\\\<RouterOs IP>
O ataque de negação de serviço
O script python3 cve-2020-11881.py valida a disponibilidade do serviço SMB antes e depois do processo de exploração. Uma execução bem-sucedida resultará na indisponibilidade do serviço SMB.
Execute o script como mostrado abaixo.
python3 cve-2020-11881.py --ip <RouterOs Ip>
Testar o serviço SMB com o seguinte comando falhará.
smbclient -N -L \\\\<RouterOs IP>
Remover VM
Para remover a VM, execute o script novamente.
sudo ./setupMikroTikEnvironment.sh
O bug foi relatado em 06.04.2020 e não foi corrigido em 12.09.2020 mesmo após múltiplos pedidos.
Discussão sobre o 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.