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. ¡Gracias a los
comentarios por avisar!
Más información:
RouterOS, chain to Root: https://medium.com/tenable-techblog/routeros-chain-to-root-f4e0b07c0b21
Fuente: Hispasec