
Vulnerabilità Denial of Service in MikroTik RouterOS
Una vulnerabilità in MikroTik RouterOS consente a un attaccante remoto non autenticato di forzare il riavvio di un router. Ciò viene effettuato inviando un pacchetto della dimensione di 1 byte all'indirizzo IPv6 di RouterOS utilizzando IP proto 97. Tutte le versioni di RouterOS con supporto EoIPv6 sono probabilmente vulnerabili a questo attacco. Questo attacco richiede che il sistema di destinazione abbia IPv6 abilitato e la presenza di almeno un'interfaccia tunnel.
INPUT di IP proto 97.EoIPv6 (Ethernet over IPv6) è il protocollo di tunneling Layer 2 di MikroTik RouterOS. Il protocollo EoIPv6 incapsula i frame Ethernet in pacchetti EtherIP modificati (IP proto 97).
L'implementazione di EoIPv6 di MikroTik utilizza 12 bit riservati di EtherIP per memorizzare l'ID del tunnel. MikroTik ha inoltre scambiato i primi 4 bit e i secondi 4 bit dell'intestazione EtherIP.
Per recuperare l'ID del tunnel e convalidare il pacchetto, RouterOS scambia i bit come descritto sopra sui pacchetti ricevuti su proto 97. Il processo avviene finché nel sistema sono presenti interfacce tunnel (anche se disabilitate). RouterOS non controlla la dimensione del payload durante il processo. Quindi un pacchetto di un byte su proto 97 lo interromperà (poiché mancano i bit rimanenti necessari per costruire l'ID del tunnel).
Su RouterOS, aggiungi un indirizzo IPv6:
/ipv6 address add interface=ether1 address=fd00::1/64 advertise=no
E un tunnel (di qualsiasi tipo):
/interface ipip add remote-address=127.0.0.1
Esegui l'exploit (exploit.c nel repository):
./exploit fd00::1
RouterOS si riavvierà da solo pochi secondi dopo l'exploit. Dopo il riavvio è possibile vedere i seguenti log:
jan/20/2018 10:28:36 system,error,critical router was rebooted without proper shutdown
Sono state testate le versioni RouterOS 6.39.3 (solo bugfix), 6.41 (corrente) e 6.42rc11 (candidato alla release), e tutte sono vulnerabili a questo attacco al momento della scrittura. Questa vulnerabilità è probabilmente presente anche nelle versioni precedenti di RouterOS con supporto EoIPv6.
Vedi questo thread sul forum di MikroTik.