domingo, 27 de octubre de 2013

Salto de restricciones e inyección de comandos en router WNDR3700v4 de Netgear

En una serie de dos artículos, el investigador Zack Cutlip (@zcutlip) ha localizado varias vulnerabilidades en la versión 4 del router inalámbrico WNDR3700 de Netgear. Estas, entre otros impactos, permitirían acceder a la interfaz de administración sin necesidad de autenticación y la inyección de comandos al sistema operativo del dispositivo. Están confirmadas en las versiones 1.0.1.42 y 1.0.1.32 del firmware.

Router Netgear WNDR3700v4
Cutlip desgrana, a través del estudio del manejo de las peticiones, las diferentes vulnerabilidades descubiertas. Cuando se pide un recurso al router, se comprueba que su nombre coincida con el patrón asociado a uno de los manejadores MIME. Esto se hace buscando el patrón como subcadena del recurso. Si se encuentra, se le aplica su manejador de autenticación asociado.

Poniendo como ejemplo el mismo que se utiliza en el articulo, una de las entradas en la tabla de patrones MIME es "BRS_". La función de autenticación para estos recursos es un puntero nulo. Por tanto, cualquier recurso que contenga la cadena "BRS_" no necesita autenticación. Son muchas las páginas que cumplen esta condición en la interfaz. Como ejemplo, la que muestra la contraseña de la conexión WPA del dispositivo.

Otras páginas permiten el salto de las restricciones de autenticación con el mismo método. Para controlar qué páginas requieren autenticación, comprueban que el patrón (que no es más que el nombre de la página), sea subcadena *de la petición*, y no comparan con el nombre de recurso en si. Esto se permite que se sirvan páginas restringidas si la petición contiene el nombre de una de las páginas que no lo están. Por ejemplo, en una petición como http://router/pagina_protegida.htm?foo=unauth.cgi se podría acceder a la página protegida, ya que unauth.cgi, que salta las restricciones, se encuentra como subcadena.

Como colofón, Cutlip termina con un salto de restricciones persistente. En este dispositivo, el valor de la variable hijack_process controla si se debe aplicar la autenticación en todas las páginas de la interfaz. Esta funcionalidad se aplica durante el primer inicio del router. En vez de usar una contraseña por defecto, directamente se deshabilita la autenticación hasta que esté configurado. Cuando se configura, hijack_process toma el valor 3, con el que indica que la autenticación debe aplicarse.

Sin embargo, existe una página pública de la interfaz del dispositivo (BRS_02_genieHelp.html) que da a hijack_process un valor distinto de 3, con lo que una sola petición a esa página permitiría desactivar la autenticación en todo el dispositivo. Como la variable se guarda en RAM no volátil, este estado permanece aunque el dispositivo se reinicie.

Además, también se ha encontrado una vulnerabilidad que permite la inyección de comandos al sistema operativo subyacente del router a través de la página de ping a direcciones IPv6. El comando con la dirección dada por el usuario se le pasa a la función system, que llama a /bin/sh. Por tanto, si pasamos en lugar de la IP una cadena de la forma "; comando;", la ejecución del ping falla, pero podemos inyectar código. Ya se ha publicado una prueba de concepto que abre una conexión telnet y permite el acceso como administrador sin autenticación.

Las vulnerabilidades se han probado en la versión 4 del modelo WNDR3700 de Netgear, con los firmwares 1.0.1.42 y 1.0.1.32, y en el 4700. El autor acredita a Jacob Holocomb (que encontró la esta misma vulnerabilidad en el modelo WNDR4700) y Craig Young, que hizo este descubrimientos el pasado abril pero no lo publicó (https://twitter.com/zcutlip/status/393752865187328000).

Según el portal The Register, Netgear ha prometido un parche que solucione la vulnerabilidad en el plazo de un mes, aunque apunta que solo es explotable si el atacante se encuentra en la misma red que el dispositivo.

Más información:

Complete, Persistent Compromise of Netgear Wireless Routers

Netgear Root Compromise via Command Injection

Netgear router admin hole is WIDE OPEN, but DON'T you dare go in, warns infosec bod



Francisco López