Flash ignora el encabezado Content-Type, permitiendo XSS?

4

Hace poco leí que el complemento Flash ignora el encabezado Content-Type en ciertas circunstancias. En particular, puede asignar a Flash una URL, y el complemento Flash buscará felizmente el contenido en esa URL y cargará todo lo que reciba como un archivo SWF, con los permisos del sitio desde donde se cargó el contenido, incluso si la respuesta proviene de con un encabezado Content-Type: text/plain (o cualquier otro Content-Type en absoluto). El encabezado Content-Type puede indicar que esto no es un archivo SWF, y Flash todavía lo cargará como un archivo Flash. El contenido que se carga ni siquiera tiene que ser un archivo SWF válido; solo tiene que comenzar con un archivo SWF válido, y el complemento Flash ignorará cualquier crucero adicional que siga.

La fuente de esta reclamación: enlace

Si esto es cierto, esto no es bueno. Significa que mi sitio es vulnerable a XSS, si hay alguna página donde el atacante pueda controlar el inicio de la página. Significa que mi sitio puede ser vulnerable incluso si configuro cuidadosamente el encabezado Content-Type correctamente en todas partes. Significa que las defensas estándar contra XSS cuando se sirve contenido cargado por el usuario no son suficientes.

Por ejemplo, si desea permitir que el usuario cargue un archivo de texto arbitrario y lo sirva a cualquiera que lo solicite, un enfoque estándar es asegurarse de establecer Content-Type: text/plain en la respuesta. Se cree ampliamente que esto es suficiente para estar seguro. Si comprendo esta vulnerabilidad correctamente, esta práctica no es segura: un usuario malintencionado puede cargar un archivo de texto malintencionado que contenga el contenido de un archivo SWF y luego ejecutarlo con el complemento Flash, creando el equivalente moral de una vulnerabilidad XSS. en el sitio.

Esto me tiene un poco aplastado. ¿Es realmente cierto? ¿Flash tiene realmente esta vulnerabilidad? ¿Se ha parcheado Flash para arreglar esto? ¿Hay algún factor atenuante? ¿Hay alguna defensa limpia del lado del servidor para evitar este tipo de ataque?

    
pregunta D.W. 25.09.2013 - 06:25
fuente

3 respuestas

3
  

Significa que las defensas estándar contra XSS cuando se entrega contenido cargado por el usuario no son suficientes.

La defensa estándar contra XSS cuando se sirve contenido subido por el usuario es servirlo desde una dirección diferente (idealmente, el dominio y la dirección IP son completamente diferentes, pero un subdominio detiene algunos ataques por lo menos). Es decir, permites que sea víctima de XSS, pero aíslala para que ese compromiso no afecte al sitio principal.

  

Por ejemplo, si desea permitir que el usuario cargue un archivo de texto arbitrario y lo sirva a cualquiera que lo solicite, un enfoque estándar es asegurarse de establecer Contenido-Tipo: texto / plano en la respuesta. Se cree que esto es suficiente para estar seguro

Muchas cosas que son completamente falsas son ampliamente creídas.

Content-Type / Content-Disposition nunca fue una defensa suficiente, en vista del tipo sniffing (tanto del navegador como de los complementos). text/plain es el peor de los casos: como se incluyó (inadvertidamente) como Content-Type por defecto en Apache, la mayoría de los navegadores ignorarán completamente ese tipo a favor de oler palabras mágicas desde el inicio del archivo.

  

¿Se ha actualizado Flash para solucionar este problema?

No. Aunque hay uno peor con la sintaxis crossdomain.xml enterrada dentro de otros tipos de archivos y cargada a través de getPolicy() que se ha mitigado un poco.

  

¿Hay algún factor atenuante?

El tipo de interacción permitida desde Flash bajo su propia variante de la Política del mismo origen no necesariamente le permite realizar un script completo en el origen JS. Pero sí, es bastante malo.

Java y Silverlight tienen problemas similares.

    
respondido por el bobince 25.09.2013 - 11:33
fuente
0

El tipo de contenido no está destinado a proporcionar seguridad; es simplemente una sugerencia para el navegador sobre cómo se debe interpretar una página web en ausencia de otra información.

No hay nada que impida que su página web (por ejemplo, como parte de un objeto flash) cargue el contenido de la página decorado con el tipo de contenido que desee y lo interprete como otra cosa. Esto puede suceder con un objeto flash, o mediante sistemas como XmlHttpRequest. (Si ejecuta una consulta XHR y eval el resultado, o si inserta ciegamente el resultado en la página, sería igual de tostado)

Dicho de otra manera, el tipo de contenido le dice al navegador qué comportamiento básico le da a un fragmento de contenido. Si el código de su cliente, ya sea JavaScript, Flash o lo que tenga, le dice que haga algo diferente, entonces ocurrirá algo diferente.

    
respondido por el Billy ONeal 25.09.2013 - 09:55
fuente
0

Opciones de tipo de contenido X: nosniff podría ser solo tu amigo. Le indica al navegador que no adivine el tipo de contenido, sino que se mantenga fiel a lo que dice el servidor.

    
respondido por el Erlend 25.09.2013 - 22:18
fuente

Lea otras preguntas en las etiquetas