Avatar de admin

por

Cross Site Scripting en jQuery 1.6

el 10/09/2011 en Desarrollo, Seguridad, Software Libre

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).
Fuente:  http://www.hispasec.com/unaaldia/4704/

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 ‘%’.

Más información:

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
http://ma.la/jquery_xss/

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usuarios Twitter
Ingrese los datos para comentar o inicia sesión con tu cuenta de Twitter haciendo clic en el botón de abajo.

-
-