
Vulnérabilité de déni de service de MikroTik RouterOS
Une vulnérabilité dans MikroTik RouterOS permet à un attaquant distant non authentifié de forcer un routeur à redémarrer. Pour cela, il suffit d'envoyer un paquet d'une taille d'un octet à l'adresse IPv6 de RouterOS en utilisant le proto IP 97. Toutes les versions de RouterOS prenant en charge EoIPv6 sont probablement vulnérables à cette attaque. Cette attaque exige que le système cible ait IPv6 activé et possède au moins une interface tunnel.
INPUT du proto IP 97.EoIPv6 (Ethernet over IPv6) est le protocole de tunneling de couche 2 de MikroTik RouterOS. Le protocole EoIPv6 encapsule les trames Ethernet dans des paquets EtherIP modifiés (proto IP 97).
L'implémentation de l'EoIPv6 par MikroTik utilise 12 bits réservés d'EtherIP pour stocker l'identifiant de tunnel. MikroTik a également interverti les 4 premiers bits et les 4 bits suivants de l'en-tête EtherIP.
Pour récupérer l'identifiant de tunnel et valider le paquet, RouterOS intervertit les bits comme décrit ci-dessus sur les paquets reçus sur le proto 97. Ce processus se produit tant que des interfaces tunnel sont présentes dans le système (même si elles sont désactivées). RouterOS ne vérifie pas la taille de la charge utile au cours du processus. Ainsi, un paquet d'un octet sur le proto 97 le fera planter (car le reste des bits requis pour construire l'identifiant de tunnel manque).
Sur RouterOS, ajoutez une adresse IPv6 :
/ipv6 address add interface=ether1 address=fd00::1/64 advertise=no
Et un tunnel (de n'importe quel type) :
/interface ipip add remote-address=127.0.0.1
Exécutez l'exploit (exploit.c dans le dépôt) :
./exploit fd00::1
RouterOS redémarrera de lui-même quelques secondes après l'exploit. Les journaux suivants peuvent être observés après le redémarrage :
jan/20/2018 10:28:36 system,error,critical router was rebooted without proper shutdown
Les versions RouterOS 6.39.3 (uniquement correctifs), 6.41 (actuelle) et 6.42rc11 (candidate à la sortie) ont été testées, et toutes sont vulnérables à cette attaque au moment de la rédaction. Cette vulnérabilité est probablement également présente dans les versions plus anciennes de RouterOS prenant en charge EoIPv6.
Voir ce fil sur le forum MikroTik.