Vulnerabilidad crítica en OpenWRT permitiría la ejecución remota de código

OpenWRT es un firmware gratuito basado en Linux diseñado para el uso en dispositivos integrados en general y routers en particular. Este firmware se encuentra instalado en millones de dispositivos en todo el mundo. Para más información acerca de OpenWRT, puede visitar el siguiente enlace: https://openwrt.org/

¿Qué pasó?

Un investigador ha descubierto una vulnerabilidad crítica en OpenWRT identificada como CVE-2020-7982, el cual afecta a las versiones:

  • OpenWRT 18.06.0 a 18.06.6,
  • OpenWRT 19.07.0 y
  • OpenWRT LEDE 17.01.0 a 17.01.7.

La vulnerabilidad se da en el administrador de paquetes OPKG (administrador encargado de recuperar las listas de paquetes disponibles para la instalación desde downloads.openwrt.org) y la forma en que el mismo realiza la verificación de integridad de los paquetes descargados utilizando las sumas de verificación SHA-256 del índice del repositorio firmado, evitando la verificación de integridad de los paquetes .ipk descargados.

Según el investigador, cuando se invoca el comando “opkg install” en el sistema vulnerable, el fallo podría permitir a un atacante que se encuentre en medio de la red interceptar la comunicación de un dispositivo e inyectar código malicioso mediante paquetes .ipk falsificados, esto es posible debido a que opkg en OpenWrt se ejecuta como root y tiene acceso de escritura a todo el sistema de archivo.

A continuación se puede observar el código vulnerable:

La explotación remota de esta vulnerabilidad es posible y para que la misma sea exitosa, un atacante remoto debe hacerse pasar por downloads.openwrt.org y servir paquetes válido y firmados, por ejemplo, uno obtenido desde los repositorios oficiales, y uno o más paquetes .ipk que contengan el código malicioso y además tengan el mismo tamaño que el .ipk del repositorio. Con esto un atacante remoto lograría obtener el control total sobre el dispositivo de red de la víctima y, posteriormente, sobre el tráfico de red que este dispositivo administra.

Recomendaciones:

  • Actualizar el firmware OpenWrt a las últimas versiones disponibles, en este caso 18.06.7 y 19.07.1.
  • O de manera alternativa para actualizar el paquete sólo el opkg sin actualizar todo el firmware, se pueden usar los siguientes comandos una vez que se hayan actualizado todos los repositorios:
    • cd /tmp
    • opkg update
    • opkg download opkg
    • zcat ./opkg-lists/openwrt_base | grep -A10 «Package: opkg» | grep SHA256sum
    • sha256sum ./opkg_2020-01-25-c09fe209-1_*.ipk

Referencias:

Compartir: