Pregunta ¿Es seguro incluir un archivo CSS externo o podría conducir a la inyección de código?


Estoy trabajando en un sitio que los clientes usarán incrustándolo en un iframe en su sitio. Quiero darles la posibilidad de personalizar el estilo de los contenidos para que puedan adaptarse a los estilos de su sitio.

La idea básica que tengo es dejar que me den la URL de un archivo CSS que debo incluir en la página que les sirvo para llenar el iframe. Por lo que sé, esto es seguro, pero no estoy particularmente familiarizado con CSS (especialmente las versiones más recientes), por lo que quiero verificar esto.

¿Hay alguna forma en que alguien pueda construir un archivo CSS que les permita inyectar código en mi sitio o tener acceso a cosas como las cookies de mi dominio? ¿Es esto realmente seguro, o tengo que encontrar una solución diferente?


5
2017-08-22 20:54


origen


Respuestas:


No es inseguro. expression y -moz-binding son formas conocidas de provocar la ejecución de guiones arbitrarios en ciertos navegadores a través de CSS. LiveJournal sufrió un ataque XSS muy público que se debió a JavaScript incrustado en el CSS proporcionado por el usuario.

Con Mozilla decidiendo permitir la ejecución de JavaScript arbitrario a través de CSS, no hay otra solución viable que la que hemos emprendido.

De El vector de ataque de Caja wiki:

Las hojas de estilo CSS creadas pueden ejecutar javascript no optimizado en el alcance global en algunos navegadores.

Fondo

CSS incluye varios mecanismos para cambiar el marcado circundante y ejecutar expresiones.

IE tiene una extensión que permite la ejecución de javascript arbitrario. los expression la propiedad se describe en http://msdn2.microsoft.com/en-us/library/ms537634.aspx

Usando el poder de las propiedades dinámicas, ahora es posible declarar valores de propiedad no solo como constantes, sino también como fórmulas. ... Para las secuencias de comandos, una propiedad dinámica puede ser cualquier declaración legal de JScript o Microsoft Visual Basic Scripting Edition (VBScript).    http://msdn2.microsoft.com/en-us/library/ms533503.aspx

binding permite enlazar a scripts especificados externamente    http://developer.mozilla.org/en/docs/CSS:-moz-binding & http://developer.mozilla.org/en/docs/XBL:XBL_1.0_Reference:Elements#binding

-moz-binding permite enlazar a través de la interfaz XML (también utilizando datos: URL)

Suposiciones

El código no confiable puede generar elementos de estilo o atributos de estilo o, de lo contrario, agregar reglas CSS arbitrarias y crear elementos DOM que activan esas reglas.

Versiones

IE 5 y posterior (pero no IE 8 o posterior en "modo estándar").

Mozilla / Firefox, versiones desconocidas.


12
2017-08-22 21:00