CSIRTCV

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

Cross Site Scripting en jQuery 1.6

S'ha arreglat una vulnerabilitat que permetia realitzar atacs cross site scripting (XSS ) en jQuery 1.6. La vulnerabilitat podia ser explotada en certs llocs que utilitzaren la variable 'location.hash' en un context que no fóra el de Cascading Style Sheets (CSS).

Risc: Mitjà

jQuery és una biblioteca o framework JavaScript de programari lliure i codi obert. És compatible amb la majoria de navegadors actuals i ofereix una sèrie de funcionalitats basades en JavaScript que d'una altra manera requeririen moltes línies de codi. Així, permet simplificar la manera d'interactuar amb els documents HTML, manipular l'arbre DOM, manejar esdeveniments, desenrotllar animacions i agregar interacció amb la tècnica AJAX a pàgines web.

L'error es produeix quan s'introdueix el símbol '#' en la URL seguit del codi que es desitge injectar, ja que jQuery espera (erròniament) que la cadena que es va a trobar a continuació siga codi CSS. A causa d'açò no realitzen les comprovacions necessàries per a netejar el contingut de la variable 'location.hash'. Segons pareix és un costum prou estés en algunes webs, utilitzar el contingut d'aquesta variable per a fins diferents dels originals (per a ser inserida en codi CSS). És el cas d'evernote.com o skype.com, entre altres. Per açò, s'ha optat en la solució per que siga el propi jQuery el que filtra el codi HTML que puga ser incrustat a través d'aquesta variable, i no delegar aquesta responsabilitat a tots els programadors que vagen a utilitzar-la.

Sistemes Afectats:

jQuery

Referències:

None

Solució:

La vulnerabilitat, que era funcional en Internet Explorer, Firefox, Chrome i Opera, s'ha arreglat en la versió 1.6.3 de jQuery. Els usuaris del navegador Safari no es veien afectats perquè aquest navegador s'encarregava de codificar el contingut d'aquesta variable mitjançant el símbol de percentatge '%'.

Notes:

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/

Font: Hispasec una-al-día

CSIRT-CV