¿Permitir que el script inseguro en línea anule el propósito de la CSP?

3

Estoy revisando los encabezados de Política de Seguridad de Contenido establecidos en uno de nuestros servidores web y veo cómo se configura (donde "example.com" es nuestro sitio web de confianza).

  

Política de seguridad del contenido: "default-src 'self'; script-src 'self' data:   'unsafe-inline' 'unsafe-eval'; img-src 'self' * .example.com; fuente-src   *; connect-src 'self' * example.com "

Mis preguntas son:

1) ¿La lista blanca unsafe-inline y unsafe-eval no derrotará a todo el CSP?

2) Si 'unsafe-inline' está permitido o incluido en la lista blanca arriba, ¿puede alguien llamar a JavaScript desde un sitio web externo, por ejemplo www.xxxxxx.com, que no está incluido en la directiva script-src y por lo tanto, derrotar a todo propósito de la CSP? Por ejemplo: <script src="www.xxxxxx.com/bad.js">

Pasé por esta pregunta aquí y siguiendo las respuestas, parece que el CSP anterior no es bueno.

    
pregunta Sree 20.11.2018 - 12:16
fuente

2 respuestas

6
  

¿La lista blanca no insegura en línea y no segura no puede derrotar a todo el CSP?

Sí. Un CSP ajustado hará que sea más difícil explotar XSS al restringir los scripts que se pueden ejecutar. El uso de unsafe-inline y unsafe-eval permite ejecutar cualquier script. Esta es la razón por la que están prefijados por unsafe- , para desalentarte de usarlos en el CSP.

Por supuesto, el protocolo data: también permite omitir el CSP, ya que puede codificar cualquier script como datos: URL.

  

Si 'unsafe-inline' está permitido o incluido en la lista blanca como arriba, ¿alguien puede llamar a JavaScript desde un sitio web externo?

Podrías recuperar el contenido del script y ejecutarlo desde JavaScript. Incluirlo con <script src="www.xxxxxx.com/bad.js"> no funciona, pero como puede ejecutar JavaScript de todas formas, hay otras formas de ejecutar un script externo.

    
respondido por el Sjoerd 20.11.2018 - 12:24
fuente
0

Sjoerd cubrió cuáles son (en mi opinión) los puntos principales sobre este tema, pero me gustaría agregar que permitir JavaScript en línea no hace que el CSP sea totalmente inútil aquí. Todavía hay un punto para usar una Política de Seguridad de Contenido bien escrita fuera de los límites de evitar XSS.

Como todos sabemos, la CSP es una herramienta profundamente poderosa. Si bien la mayor parte de su poder reside en facilitar la defensa contra XSS y sus amigos, también tiene una serie de funcionalidades que siguen siendo valiosas incluso una vez que deshabilitas las funciones específicas de XSS y abres ese vector. Estos incluyen:

  • Características tangenciales para prevenir XSS, como la directiva sandbox
  • Funciones independientes, como la directiva upgrade-insecure-requests
  • Funciones de soporte que se pueden aprovechar profundamente por sí mismas, como
    las capacidades de presentación de informes

En caso de que sea útil, Mozilla tiene una excelente reseña de las características de CSP aquí .

    
respondido por el securityOrange 26.11.2018 - 07:45
fuente

Lea otras preguntas en las etiquetas