
CVE-2020-11881: DoS remoto non autenticato per il servizio SMB di MikroTik.
Questo report descrive CVE-2020-11881, un DoS remoto non autenticato per il servizio SMB di MikroTik in esecuzione su RouterOs. La vulnerabilità permette a un attaccante di crashare il servizio SMB in esecuzione ed è stata divulgata responsabilmente a security<@>mikrotik.com il 06.04.2020.
Il protocollo Server Message Block (SMB) è stato introdotto da Microsoft e reimplementato da diversi produttori per mantenere la compatibilità dello scambio di file con sistemi e servizi Windows. Il protocollo in generale viene utilizzato per lo scambio di file tra sistemi 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 precedenti
Probabilmente sono affette più versioni rilasciate prima del 12.09.2020. Con l'eccezione della versione 6.47.0, che sembra essere corretta per un ciclo di rilascio in risposta al processo iniziale di divulgazione responsabile.
Il server SMB crasha dopo aver ricevuto un pacchetto negotiation-request seguito da un pacchetto setup-request modificato.
Per innescare la vulnerabilità, il pacchetto setup-request deve avere il campo MessageID impostato a 1 e il campo SessionID impostato a 0. Il servizio crasha perché apparentemente non è in grado di gestire il campo SessionID.
Per riprodurre il bug in modo affidabile, si prega di ricostruire l'ambiente di test fornito in questo repo.
Scarica e avvia l'ambiente RouterOs.
Eseguire il seguente script su una versione appena installata di Ubuntu 18.04, poiché lo script installerà tutto il software necessario. Lo script termina fornendo l'IP della VM RouterOs.
sudo ./setupMikroTikEnvironment.sh
Abilita SMB su RouterOs
Eseguire i seguenti comandi per attivare il servizio SMB.
telnet <RouterOs IP>
(user: admin, <no password>)
ip smb set enabled=yes
ip smb print
Il servizio può essere verificato manualmente dal sistema host con il seguente comando e dovrebbe rispondere
con Anonymous login successful finché il servizio è in esecuzione.
smbclient -N -L \\\\<RouterOs IP>
L'attacco di denial of service
Lo script python3 cve-2020-11881.py verifica la disponibilità del servizio SMB prima e dopo il
processo di sfruttamento. Un'esecuzione riuscita terminerà con la non disponibilità del servizio SMB.
Eseguire lo script come mostrato di seguito.
python3 cve-2020-11881.py --ip <RouterOs Ip>
Testare il servizio SMB con il seguente comando fallirà.
smbclient -N -L \\\\<RouterOs IP>
Rimuovere la VM
Per rimuovere la VM basta eseguire di nuovo lo script.
Il bug è stato segnalato il 06.04.2020 e non è stato risolto il 12.09.2020 nonostante molteplici richieste.
Discussione sul 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