Una pregunta cuya respuesta varía a medida que pasa el tiempo en el ámbito de la seguridad informática, y siempre para peor. Ya no es suficiente que un desbordamiento de buffer nuestro navegador o aplicación se cuelgue y ejecute código malicioso en nuestro equipo, ya no alcanza con usar el navegador más seguro del mercado, en tanto nos veamos obligados a utilizar las tecnologías comúnmente aceptadas por todos en la Internet actual, con eso es suficiente para no estar seguros.
Ejemplos?
Alguno de ustedes usaría la web de hoy en día sin utilizar Flash?
Piensenlo un poco, hablamos de no poder ver absolutamente ningún video de YouTube y similares, y tampoco poder acceder a ningún contenido Flash. Incluso tendríamos que resignarnos a no acceder del todo a muchos sitios que están completamente hechos en Flash.
Pero… cuál es el problema con Flash? Paradójicamente existe una demostración en Flash Video para observarlo:
En el video puede verse como un archivo flv especialmente diseñado es capaz de colgar el reproductor de Flash, y por ende al navegador. En el caso de la consola Wii llega al extremo de dejarla “muerta”. Este problema con Flash es muy grande, y puede causar ejecución de código arbitrario en el equipo comprometido. Afortunadamente ya existe una actualización de Adobe para arreglarlo, pero… cuánto tiempo más pasará hasta que surja otra vulnerabilidad parecida?
Pero es que realmente la cosa no termina acá, el reproductor de Adobe Flash a partir de la versión 9 incorpora una librería d Sockets en el kit de desarrollo, con lo que se puede hacer que cualquier objeto flash, debajo de su disfraz de animación o video gracioso, se convierta en un scanner de recursos o una conexión VPN directa a la red local del equipo donde se ejecuta.
Ahora olvidémosnos de Flash. Pensemos en algo más intrínseco, más básico a la World Wide Web de hoy en día. Javascript, sí! Como casi siempre, todo empezó con la buena intención de darle más funcionalidad y dinamismo a las cosas. Y como casi siempre todo se fue de control. Hoy es posible, como puede verse con muchos sitios de la Web 2.0, que uno de estos sitios se comporte de la misma forma que una aplicación en nuestro sistema, con todas las ventajas y riesgos que eso conlleva.
Viviríamos sin javascript? En ese caso posiblemente deberíamos arrancar el cable de red/teléfono y listo, porque casi todo sitio web moderno depende de javascript para funcionar.
El punto es que en javascript es posible hacer lo mismo que con Flash, aunque sea algo más difícil. Utilizándolo, se puedo convertir a cualquier navegador en un servidor VPN o punto de acceso a la intranet donde el equipo se encuentre conectado.
La técnica que se aplica en ambos casos es la misma, y se conoce como DNS Rebinding. Por seguridad, un navegador restringe cualquier conexión a otra dirección que no sea la del sitio visitado. Esto se conoce como same origin policy (política del mismo origen). Básicamente, el javascript de un sitio no puede iniciar conexión a ningún otro lado salvo a su sitio, protegiendo así contra este tipo de ataques. Pero esta protección es saltada utilizando la técnica antes mencionada, que consiste en cambiar dinámicamente la dirección ip a la cual redirecciona el servidor DNS las peticiones.
Si por ejemplo, conectamos nuestro navegador al hipotético sitio xxx.sitiojodio.com, el servidor DNS en control de este le informará al navegador a que ip tiene que conectarse para cargar dicho sitio, en este caso supongamos que se la también hipotética dirección 1.2.3.4. Una vez cargado el sitio junto con su javascript, inmediatamente este servidor DNS cambia la ip ligada al sitio xxx.sitiojodio.com, a, por ejemplo, 192.168.5.20, que supongamos, es la ip de un servidor de la intranet corporativa desde la que estamos navegando. Luego de hecho esto, el javascript cargado puede realizar un escaneo completo o cargarse media docena de páginas del servidor web que corra en ese equipo de nuestra red local, para luego cuando el DNS se restituya a la dirección original, enviar toda esa info al sitio xxx.sitiojodio.com.
El problema no es un fallo en sí, el rebinding es algo intrínseco al protocolo DNS, el cual permite por ejemplo repartir cargas de visita entre varios servidores. Lo que debería existir es alguna clase de alarma cuando la ip de un sitio web automáticamente cambia de una pública a una privada, porque eso indicaría que ahí pasa algo raro.
El panorama no es nada alentador, no? Eso sí, no nos podemos quejar de que no sea divertido.
Links de referencia:
- Your browser is a tcp/ip relay
- Socket in FLASH
- DNS rebinding: how an attacker can use your web browser to bypass a firewall
- Flash Player SWF Vulnerability
Entradas Relacionadas
La peor pesadilla de un sysadmin



No hay comentarios aún
Comments feed for this article
Enlace al trackback
http://geekotic.com/2007/08/02/que-es-lo-peor-que-puede-pasar/trackback/