Hay dos tipos diferentes de problemas con los datos que no son de confianza:
- Puede contener código malicioso para ejecutarse directamente (malware)
- Puede diseñarse de tal manera que haga que sus aplicaciones legítimas se comporten de forma errática (exploten) y realicen algo malo (carga útil)
JavaScript realmente está en la primera categoría. Cuando los proveedores de navegadores o escritores de PDF (o cualquier otro proveedor de software que utiliza JS) no prestan suficiente atención a lo que su motor de JavaScript permite a los atacantes, se puede escribir código JavaScript para dañar su sistema. Por ejemplo, los ataques de entidad externa XML utilizan la especificación XML en el código JavaScript para llegar a archivos que no pueden tocar.
Los archivos CSS no contienen código de forma natural, pero como los pies en la nube señalaron, un archivo CSS falso puede hacer que su navegador cargue y ejecute archivos externos que contengan scripts. Esto significa que se podría usar un archivo CSS para desencadenar ejecuciones de JavaScript (pero si se instalara una extensión de navegador que bloquee los scripts, probablemente también bloquearía dichos scripts).
Además de esto, los archivos "estáticos" que no contienen código pueden dañar un navegador al contener datos falsos (cuidadosamente seleccionados) que explotan la existencia de un error o un error (llamado vulnerabilidad) en el navegador. La forma en que el navegador no podrá procesar estos datos falsos hará que realice las acciones que el atacante está buscando. Por ejemplo, podría redirigir la ejecución del código del navegador a algún segmento del archivo CSS que contiene instrucciones de la máquina, en lugar del código del navegador normal.
Esto suena poco probable pero en realidad muchos ataques pertenecen a esta categoría. Por ejemplo, las bibliotecas JPEG y PNG están dirigidas ocasionalmente, porque son códigos de bajo nivel que se usan mucho (por los navegadores y también otros programas como su sistema operativo). A menudo, los navegadores crearán procesos específicos con privilegios reducidos para analizar archivos y representar páginas web para reducir el riesgo asociado con la ejecución de dicho código.
La mala noticia es que no puedes hacer nada al respecto y estás constantemente expuesto al peligro en la Web. Su única ayuda es mantener todo su software actualizado para reducir la superficie de ataque.