Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es
12/09/2011
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.
Sistemas Afectados:
jQuery
Referencias:None
Solución: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 '%'.
Notas:Changelog jQuery 1.6.3
http://blog.jquery.com/2011/09/01/jquery-1-6-3-released/
Bug XSS
http://bugs.jquery.com/ticket/9521
Ejemplo de XSS y explicación de cómo filtrar esta variable