lunes, febrero 16, 2009

Ataque al UPnP en Red (I)

Universal Plug-n-Play (UPnP) es un protocolo que permite a diversos dispositivos de red autoconfigurarse a sí mismos. Uno de los usos más comunes de este protocolo es permitir que los dispositivos o programas abran puertos en tu router para poder comunicarse correctamente con el mundo exterior (Xbox, por ejemplo, hace esto). El protocolo UPnP se construye encima de los protocolos y especificaciones pre-existentes, en particular, UDP, SSDP, SOAP y XML.

En este artículo se abordan algunas de las cuestiones de seguridad relacionadas con UPNP, se describe brevemente el funcionamiento interno del protocolo, y se muestra cómo identificar y analizar los dispositivos UPnP en una red utilizando herramientas de código abierto. Si bien se centra específicamente en IGDs (dispositivos de puerta de enlace a Internet, alias, routers), es importante recordar que hay muchos otros dispositivos y sistemas que también soportan UPNP, y pueden ser vulnerables a ataques similares.

El Problema de UPnP

Permitiendo que programas legítimos modifiquen la configuración de su router, como lo necesiten, hacen al usuario Pepito la vida mucho más fácil - por desgracia, también hace que la vida de Paquito hacker sea más fácil, también. Para que UPnP sea verdaderamente "plug-n-play", no hay autenticación incorporada en el protocolo, cualquier programa puede utilizar UPnP para modificar la configuración del router (o cualquier otro dispositivo UPnP).



A principios de este año, PDP (de los famosos GNUCITIZEN) publicó la investigación que había realizado en relación con la seguridad de UPnP. Si bien los problemas de seguridad con UPnP no es nada nuevo, es un protocolo que normalmente sólo se ejecuta dentro de una red local, obligando a un atacante infiltrarse en la red local antes de poder explotar cualquier vulnerabilidad de UPnP. Sin embargo, PDP demostró que era posible utilizar Flash para enviar solicitudes UPnP desde el navegador de un cliente local a un router con UPnP habilitado y cambiar la configuración del cortafuegos del router. Dado que el archivo Flash puede ser integrado dentro de una página preparada de manera maliciosa, o inyectado en una página de confianza a través de XSS o inyección de SQL, un atacante de forma remota podría aprovechar esto para alterar la configuración de un router. Lo peor de todo es que en la mayoría de los casos, estos cambios de configuración en el router no se reflejan en su interfaz administrativa, dejando a la víctima completamente ignorante de que haya ocurrido nada.

Por supuesto, para las redes inalámbricas UPnP es peligroso incluso sin el ataque de Flash al navegador, un atacante puede estar físicamente a distancia de la red al mismo tiempo que intenta introducirse en la red interna. Una vez dentro, puede comenzar a alterar la configuración del router a través de UPnP.

¿Cómo es Esto de Grave?

La gravedad de este ataque depende de la aplicación UPnP utilizada por el router, así como de su configuración. Por ejemplo, la alteración de la configuración mediante el ataque Flash descrito anteriormente tendría que adivinar la dirección IP del router algo bastante previsible, pero algunos routers también asignan sus propios nombres de host que toman una dirección IP cualquiera de trabajo. Sin embargo, incluso si un router no resuelve el nombre de host, la seguridad a través de la oscuridad no es buena práctica, y un simple cambio de la dirección IP por defecto de un router no debe considerarse suficiente defensa contra un ataque de este tipo.

Además, unas implementaciones de UPnP tienen más riesgo que otras; varios IGDs con UPnP habilitado permiten alterar la configuración de las DNS directamente a través de UPnP, simplemente con un ataque de phishing MITM (?). Otros, en particular los dispositivos que utilizan alguna forma de Linux embebido, actualmente usan los valores "no-sanitizados" que reciben a través del UPnP como parte de la ejecución de comandos de la shell, dejándolos abiertos a los ataques de inyección de comandos. Aqui se encuentra Una lista de algunos routers vulnerables.

Bien, digamos que ningún nombre de host resuelve la IP del router, y su aplicación UPnP no es vulnerable al secuestro de DNS o la inyección de comandos. Lamentablemente, no estamos fuera de peligro aún, recuerda que el uso más común de UPnP es abrir puertos al router. Debido a esto, casi todos los enrutadores que admiten UPnP tambien soportan AddPortMapping, lo que en esencia permite que un dispositivo o software le diga al router "el tráfico entrante desde internet al puerto X del router lo envias a un host interno que está escuchando en el puerto Z". Bueno, ¿y si nos reenvía el tráfico del puerto 8080 de la WAN a yahoo.com en el puerto 80? Lo sé, lo sé, yahoo.com no es un host de la red interna! Sin embargo, algunas implementaciones de UPnP no comprueban que están remitiendo a un host interno, lo que permite a un atacante mandar su tráfico a través del router. Además, si el atacante sabe la IP interna del router o el nombre del host, puede ser capaz de conectar cualquier puerto de la WAN del router al puerto 80 del la LAN del router, de manera efectiva abriéndo la interfaz de administración del router para todo el mundo.

Hasta aqui la Primera Parte.

No hay comentarios: