Cross Site Scripting en jQuery 1.6

Iniciado por wolfbcn, 11 Septiembre 2011, 02:16 AM

0 Miembros y 1 Visitante están viendo este tema.

wolfbcn

Se ha arreglado una vulnerabilidad que permitía realizar ataques cross site scripting (XSS ) en jQuery 1.6. La vulnerabilidad podía ser explotada en ciertos sitios que utilizaran la variable 'location.hash' en un contexto que no fuera el de Cascading Style Sheets (CSS).

jQuery es una biblioteca o framework javascript de software libre y código abierto. Es compatible con la mayoría de navegadores actuales y ofrece una serie de funcionalidades basadas en javascript que de otra manera requerirían muchas líneas de código. Así, permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web.

El error se produce cuando se introduce el símbolo '#' en la URL seguido del código que se desee inyectar, puesto que jQuery espera (erróneamente) que la cadena que se va a encontrar a continuación sea código CSS. Debido a esto no realizan las comprobaciones necesarias para limpiar el contenido de la variable 'location.hash'. Al parecer es una costumbre bastante extendida en algunas webs, utilizar el contenido de esta variable para fines diferentes a los originales (para ser insertada en código CSS). Es el caso de evernote.com o skype.com, entre otras. Por esto, se ha optado en la solución por que sea el propio jQuery el que filtra el código HTML que pueda ser incrustado a través de esta variable, y no delegar esta responsabilidad a todos los programadores que vayan a utilizarla.

La vulnerabilidad, que era funcional en Internet Explorer, Firefox, Chrome y Opera, se ha arreglado en la versión 1.6.3 de jQuery. Los usuarios del navegador Safari no se veían afectados porque este navegador se encargaba de codificar el contenido de esta variable mediante el símbolo de porcentaje '%'.

Javier Rascón
jrascon@hispasec.com
Twiter: @jvrrascon

FUENTE :http://www.hispasec.com/unaaldia/4704
La mayoria pedimos consejo cuando sabemos la respuesta, pero queremos que nos den otra.