2011-05-08 5 views
16

De hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.html¿Este horrible vector XSS sigue siendo un problema en Internet Explorer?

Char 192 es <font face="xyz[0xC0]">not </font><font face=" onmouseover=alert(192) s=[0xC0]" >available</font>

0xC0 es uno de los 32 primeros bytes de secuencias de 2 bytes (0xC0-0xDF) en UTF-8. Entonces cuando IE analiza el código anterior, considerará 0xC0 y la siguiente cita como una secuencia, y por lo tanto estos dos pares de elementos FONT se convertirán en uno con "xyz[0xC0]">not </font><font face=" como el valor del parámetro FACE. El segundo 0xC0 iniciará otra secuencia de 2 bytes como un valor del parámetro NOTEXIST que no se cita. Debido a un carácter de espacio seguido por la cita, 0xE0-0xEF que son primeros bytes de secuencias de 3 bytes, junto con la siguiente cita y un carácter de espacio se considerarán como el valor del parámetro NOTEXIST.

Básicamente, ciertos bytes indican el inicio de un carácter de 3 bytes en una cadena UTF-8. Si esos bytes ingresan en una página web, IE consumirá los siguientes dos bytes , incluso si los tres bytes resultantes no forman un carácter UTF-8 válido. Esto puede hacer que IE comas citas finales en atributos HTML, causando estragos en XSS.

El artículo está sobre IE6, así que tengo dos preguntas acopladas herméticamente:

  1. Es ésta sigue siendo un problema en las versiones posteriores de Internet Explorer?
  2. Si es así, ¿existe un método puramente del lado del cliente para evitarlo? En otras palabras, suponiendo que se recibe una cadena "envenenada" del servidor, ¿hay algo que se pueda hacer desde el lado del cliente para evitar esta vulnerabilidad?
+0

@Karl Agradezco la edición, pero estaba tratando de evitar el enlace a ese sitio, ya que parecía ser un poco cutre. No estoy seguro acerca de las reglas relacionadas con los enlaces a los sitios aquí. ¿Crees que debería ser un enlace (pregunta honesta)? – ClosureCowboy

+0

La página es realmente cutre :) No sé si hay alguna regla, así que no la vinculemos. –

+0

Podría ser que no tengo idea de qué está pasando realmente. Pero probé esto en JSFiddle en IE9, y no hubo mouseover. – sdleihssirhc

Respuesta

6

Si entiendo la vulnerabilidad correctamente, se trató en 2006 en Microsoft Security Bulletin MS06-021.

Existe una vulnerabilidad de ejecución remota de código en la forma en que Internet Explorer decodifica el código HTML especialmente diseñado UTF-8. Un atacante podría aprovechar la vulnerabilidad mediante la construcción de una página web especialmente diseñada que podría permitir la ejecución remota de código si un usuario visita el sitio web especialmente diseñado.

+0

+1 Gracias por su respuesta. La fecha del boletín de seguridad es 2006/06/13; la fecha del artículo es 2006/08/7. Además, las publicaciones en [this] (http://www.mail-archive.com/[email protected]/msg38279.html) lista de correo -discutiendo la misma vulnerabilidad- son ** también ** desde agosto. Además, algunos chats recientes relacionados con XSS en blogs de tecnología han mencionado este tema, haciendo referencia al artículo originalmente citado. Esto me hace preguntarme si el problema realmente se ha resuelto. Lamentablemente, no tengo una máquina con Windows para probar esto (y no estoy seguro de cómo insertaría esos bytes inválidos). – ClosureCowboy

+0

El tiempo implica para mí que los artículos fueron escritos en respuesta al boletín. –