Hay dos problemas.
-
CSS puede contener Javascript. Los navegadores más antiguos ejecutarán el Javascript. El Javascript recibe todos los privilegios otorgados al sitio web, por lo que esto permitiría a cada inquilino obtener privilegios que no debería recibir (por ejemplo, privilegios para entrometerse con otros inquilinos, o para entrometerse con el sitio que lo rodea). Por ejemplo, el gusano Samy y una vulnerabilidad reciente de Facebook , ambas involucradas CSS maliciosas.
Los navegadores más nuevos no ejecutarán el Javascript, pero todavía hay muchos navegadores más antiguos. Las formas de incluir Javascript u otro contenido activo en CSS incluyen expresiones como url(javascript:alert())
, url("http://evil.com/evil.js")
, expression(alert())
, -moz-binding:
, behavior:
y posiblemente otros.
-
CSS de un inquilino puede intentar establecer estilos en el HTML para otros inquilinos o para el sitio que lo rodea. Esto podría causar impactos negativos.
En principio, podría escribir un desinfectante de CSS para defenderse de estos ataques y aún así permitir que los inquilinos especifiquen su propio CSS. Sin embargo, eso es bastante difícil de hacer bien y sería fácil introducir un error, por lo que no es algo que se pueda hacer a la ligera.