| Artículos | 01 MAY 2009

Seguridad en la Web 2.0

Tags: Histórico
Nuevos ataques para nuevas vulnerabilidades en la Web 2.0
Gonzalo Alvarez.
"Aunque el término web 2.0 carece de una definición rigurosa, se le suelen asociar una serie de tecnologías y protocolos como AJAX, FLEX, SOAP, REST, RSS, XML-RPC, JSON, JS-ARRAY, RIA, etc. Entre todos abren las puertas a nuevas posibilidades para la creación de aplicaciones que interactúan ágilmente con los usuarios y posibilitan usar el navegador como si fuera el propio escritorio. Pero por desgracia, por la puerta abierta también se cuelan nuevos ataques y formas de fraude. En este artículo se repasan las últimas vulnerabilidades y amenazas en el reciente mundo de las aplicaciones Web 2.0.

En el principio Dios creó las páginas HTML de contenido estático y vio que eran buenas y carecían de incidentes de seguridad. Después creó los programas CGI para poder procesar parámetros de entrada procedentes del navegador y vio cómo comenzaron los problemas de seguridad y de programación. Con ánimo de arreglarlo, creó las herramientas para el desarrollo flexible de aplicaciones web, como ASP, PHP, JSP, etc., las cuales llegaron acompañadas de nuevos agujeros de seguridad. Creó entonces los entornos integrados (.NET Framework, WebLogic, WebSphere) y vio que la velocidad de servicio era buena, pero no así los ataques y brechas de seguridad que trajeron. Y por último, Dios creó la comunicación asíncrona para trascender la recarga de páginas en el navegador, junto con el acceso remoto a objetos y los clientes ricos, todo ello adobado con Ajax, SOA y RIA. Había nacido una nueva etapa en la evolución de la Web. El usuario ya no sólo era consumidor sino también productor de contenidos: de su costilla había brotado el prosumidor. Se había iniciado la era de la Web 2.0.
MySpace, Google, Yahoo, Flickr, Amazon, YouTube, todos los abanderados de la revolución 2.0 pasaron a utilizar estos bloques básicos de construcción en sus aplicaciones. En su estela llegaron ataques nunca antes vistos: fraudes, robos, gusanos, virus, posibilitados por las nuevas vulnerabilidades de la Web 2.0, muchos de las cuales no son sino viejos problemas con nuevo maquillaje.
Las aplicaciones Web 2.0 aglutinan una gran variedad de tecnologías y protocolos: Ajax, Flex, SOAP, REST, RSS, XML-RPC, JSON, JS-Array. Desgraciadamente, la fuerte presión del mercado por sacar nuevas aplicaciones y adelantar a los competidores, unido a la extraordinaria velocidad con la que aparecen nuevas tecnologías web y la dificultad de encontrar desarrolladores con una formación sólida y un conocimiento profundo de las mismas, están provocando la creación de aplicaciones con importantes carencias de seguridad. En este artículo se revisa de qué manera las nuevas tecnologías están abriendo la puerta a viejos y nuevos problemas de seguridad.

Ajax
Ajax (Asynchronous JavaScript + XML) permite la interacción del usuario con una página web sin necesidad de recargar toda la página cada vez. Esta característica, a primera vista irrelevante, ha posibilitado la creación en el navegador de aplicaciones con prestaciones de escritorio. Otras consecuencias derivadas del uso de Ajax han sido la creación de mashups: sitios o aplicaciones web que integran contenido o servicios dispares de más de una fuente en una experiencia de usuario única, como Google Maps o los widgets integrados en redes sociales o blogs. Las tecnologías fundamentales de las que se nutre Ajax son: JavaScript, junto con la función XMLHttpRequest(); el Modelo de Objetos para la representación y manipulación de Documentos (Document Object Model, DOM); las hojas de cascadas de estilos (Cascade Style Sheets, CSS) para dar formato a las páginas web, separando así forma de contenido; la Notación de Objetos Serializados de JavaScript (JavaScript Serialized Object Notation, JSON), que define un pequeño conjunto de reglas de formateo para crear una representación portable de datos estructurados basada en texto; y XML, para la representación estructurada de datos.

Directiva de Origen Común
La Directiva de Origen Común (Same Origin Policy) constituye la columna vertebral del modelo de seguridad de JavaScript. Exige que el código JavaScript de cualquier origen sólo pueda acceder o manipular datos de ese mismo origen. Por origen se entiende la tripleta formada por el protocolo, el dominio y el puerto, por ejemplo, (https://) (www.midominio.es) (:1848). Si bien la Directiva de Origen Común solamente se aplica a documentos HTML, existen no obstante muchas interacciones legítimas a través de dominios que en cierto modo violan la Directiva. Por ejemplo, los hiperenlaces:
<a href=”http://www.pcworld.es”>Esto es
un enlace</a>

Igualmente, los iFrames, los cuales permiten incluir sin costuras una página dentro de otra página. La página incluida puede pertenecer perfectamente a otro dominio, aunque el código de la página incluida no puede acceder al DOM de la página donde se incluye.
<iframe src
=”http://www.example.com/default.asp”
width=”100%”>
</iframe>
Las imágenes pueden cargarse en una página desde cualquier otro dominio:
<img
src=”http://www.otrodominio.es/imagen.jpg”>

Del mismo modo, el código JavaScript de una página puede importarse desde otros dominios, pero eso sí, ese código opera dentro del contexto del documento HTML anfitrión y se considera que comparten un origen común con el mismo.
<script
src=”http://www.otrodominio.es/script.js”>

Otros objetos, como applets de Java o vídeos en Flash pueden insertarse en una página desde cualquier otro dominio:
<object width=”480” height=”360”>
<param name=”FlashMovie” value=”MiVideo.swf”>
<embed src=”http://www.mitubo.com/MiVideo.swf”
width=”480”
height=”360”>
</embed>
</object>

En el contexto de Ajax, la Directiva de Origen Común también impide que el método XMLHttpRequest() de JavaScript pueda realizar peticiones a un servidor distinto que el que está visitando el usuario. Sin embargo, en Ajax puede sortearse la directiva de varias formas, como se verá más adelante.

Más allá del XSS
Los ataques de Cross-Site Scripting (XSS) son viejos conocidos de los profesionales de la seguridad web. Se producen cuando un atacante se las ingenia para insertar código JavaScript arbitrario dentro de la página de un sitio web que está siendo visitada por la víctima. Una vez que el código se ejecuta, lo hace dentro del contexto de seguridad de la página web visitada y tiene acceso completo a su DOM. Explotando las vulnerabilidades de XSS se puede perpetrar un amplio rango de ataques, desde los meramente molestos a los verdaderamente peligrosos.
Se pueden realizar desfiguraciones virtuales (virtual defacement), alterando elementos arbitrarios del DOM de una página web, de manera que la víctima vea un sitio modificado aunque no se haya cambiado ningún elemento en el sitio web real.
Se puede inyectar funcionalidad de Troyano, ya que mediante XSS pueden robarse de forma transparente las credenciales de las víctimas para acceso a un servicio web que exija autenticación u otra información financiera sensible, como números de tarjeta de crédito.
Se puede inducir a los usuarios a realizar acciones para ellos indeseadas, incluyendo no sólo acciones relaci

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información