Las vulnerabilidades aprovechan la caché DNS del router para modificar la resolución a los dominios de actualización
RouterOS es un sistema operativo basado en Linux desarrollado para los routers MikroTik, aunque su instalación puede efectuarse en cualquier otro equipo como un PC. Este sistema cuenta con una serie de utilidades de código cerrado como es su propio comando ‘resolve’, el cual utiliza el protocolo de routerOS Winbox para la conexión con el router.
Es en esta utilidad que Jacob Baines de Tenable ha encontrado una vulnerabilidad por la cual no se valida la autenticación para ejecutar ‘resolve’, por lo que cualquier usuario sin autenticar puede utilizarlo, tal y como demuestra en una Prueba de Concepto (PoC). Esto en un principio no supone un gran problema, aunque sí lo es que las resoluciones DNS del comando se guarden en la caché DNS del router, ya que es posible elegir el servidor DNS que se usará para la resolución.
Aprovechando que se puede elegir el DNS que se usará para resolver la petición, y que ésta se cacheará en la tabla DNS del router, un atacante podría tomar el control del servidor DNS si estuviese en uso por los clientes. Pero esto no se queda aquí, ya que dicha caché se utiliza (sin necesidad de estar activado el modo servidor DNS) para la resolución de los servidores de actualización del router.
Aunque toda la comunicación con los servidores de RouterOS para actualizarse se realiza mediante HTTP sin cifrar, los paquetes que descarga sí están firmados, por lo que no es posible actualizar a una versión modificada sin que valide la firma. No obstante, un bug permite hacer downgrade a una versión vulnerable, teniendo la 6.45.6 la particularidad de que resetea las contraseñas al hacer downgrade, sólo teniendo que esperar el atacante a que el router se desactualice para acceder con las credenciales por defecto.
De momento no hay un parche que solucione las vulnerabilidades, aunque no es suficiente con parchear la autenticación en ‘resolve’: es necesario que las peticiones que realice no se cacheen. La única solución de momento es desactivar el protocolo Winbox de routerOS para evitar ser víctimas de este ataque, al menos hasta que se publique un parche.
Actualización:
La versión 6.45.7 de RouterOS soluciona las vulnerabilidades aquí descritas, identificadas como CVE-2019-3976, CVE-2019-3977, CVE-2019-3978 y CVE-2019-3979.