¿Cuáles son las limitaciones de la Política de seguridad de contenido?

5

Me pregunto contra qué no nos protegerá esta nueva técnica.

Tal como lo veo, ya que los scripts en línea están deshabilitados (y supongo que incluyen javascript: enlaces), entonces resuelve el problema del robo encubierto de datos confidenciales a través de JavaScript ejecutado automáticamente.

Sin embargo, aún sería posible alterar los datos en la pantalla de manera inesperada, y es posible crear una estafa de Phishing convincente al proporcionar un enlace a otro sitio web.

¿Esto es correcto o los enlaces externos también son prohibibles?

También puede haber formas difíciles de capturar datos confidenciales en una llamada de recursos externos, ya que no estoy familiarizado con el alcance de la CSP.

¿Cuál es el alcance de un posible ataque XSS con la presencia de un CSP estricto?

Editar: supuestos actualizados a los fines de esta publicación:

  • Los usuarios tienen un navegador compatible con CSP 2.
  • Inline style= todavía será permitido por la política. %código%
  • Solo permitiremos que los recursos se carguen desde los dominios que controlamos. (no hay imágenes externas)
  • Ejecutamos nuestro propio CDN, por lo que el dominio no tiene contenido de terceros y se ajusta a los mismos estándares de seguridad que el dominio principal.
pregunta George Bailey 27.07.2016 - 14:27
fuente

3 respuestas

6
  

Sin embargo, todavía sería posible alterar los datos en la pantalla en   formas inesperadas, y posible crear una estafa de Phishing convincente por   proporcionando un enlace a otro sitio web.

     

¿Esto es correcto o los enlaces externos también son prohibibles?

Sí, es preciso con una advertencia: la gente en su sitio ejecuta navegadores modernos. Por este motivo exacto, mi equipo considera que XSS sin inyección de contenido real (por ejemplo, la inyección en un contexto de atributo de etiqueta no citado) tiene una prioridad más baja que un error de inyección de contenido en sí debido a la CSP. Tenemos la suerte de no tener prácticamente usuarios en los navegadores que no admitan algún tipo de CSP fuerte .

  

¿Cuál es el alcance de un posible ataque XSS con la presencia de un   ¿CSP apretado?

Perdóneme aquí si esto suena a jabón, pero su pregunta no define "CSP estricto", así que permítame explicarme algunas cosas que muchos pasan por alto.

En aras del argumento, digamos que esta es una política propuesta (se agregan saltos de línea para mayor claridad, esto no es un encabezado válido):

Content-Security-Policy: default-src 'self'; img-src https: data:; connect-src paypal.com api.example.com; script-src 'self' ajax.googleapis.com; style-src 'self' 'unsafe-inline'

Nota : eliminar unsafe-inline de style-src no es práctico hoy.

Esa es una política bastante buena con algunos defectos obvios y no tan obvios, pero no está permitido el script en línea. Hay muchas más advertencias a considerar con CSP, no se trata solo de deshabilitar el script eval y inline (sí se incluyen los controladores de eventos javascript: y on* ).

El bloqueo de terceros para limitar XSS en realidad

Tantos otros vectores aún existen

El viaje de CSP de GitHub contiene muchos puntos sobre cómo se ajustó la política para evitar ciertos ataques.

Todo lo de abajo se puede abusar con la política propuesta.

  • Eliminando 'self' de script-src para evitar XSS a través de JSONP
  • Extracción de tokens CSRF a través de las etiquetas img y form
  • Mover los archivos flash alojados a un origen diferente en lugar de 'self' porque flash arruina todo.
  • Usar políticas dinámicas para evitar el uso inesperado de API que solo deben usarse desde un conjunto específico de páginas.
  • Uso limitado de 'self' para frame-src / child-src
  • Abusando de la etiqueta base .

A veces, el CSP simplemente no se aplica.

Es posible eludir la CSP por completo. Consulte rastreo del tipo de contenido PDF para ver un ejemplo donde los datos controlados por el usuario en una página realmente pueden desordenar las cosas.

Literalmente, no hay nada que podamos hacer al respecto desde la perspectiva de CSP.

Y a veces, internet te hace llorar.

Consulte Robando el pastel sin tocar el alféizar donde CSS se puede usar para robar Y exfiltrar datos en una página sin javascript.

Como eliminar 'unsafe-inline' no es práctico, este ataque es posible. Sin embargo, este ataque es difícil de ejecutar.

    
respondido por el oreoshake 27.07.2016 - 21:31
fuente
1

Necesitamos considerar exactamente qué es una política estricta. He identificado tres niveles:

Nivel 1 - Detener XSS

En este nivel, una política estricta detendrá a todos los XSS. Si el sitio tiene fallas XSS, estas no serán explotables (suponiendo que el navegador del usuario sea compatible con CSP).

Un atacante XSS aún podría hacer referencia a recursos en su propio servidor, lo que crea una baliza web . Pueden ver las direcciones IP de los usuarios y entregar contenido malicioso (por ejemplo, explotar errores de representación de imágenes). También pueden redirigir formularios, lo que podría crear un formulario de phishing altamente realista.

Nivel 2 - Detener balizas

En este nivel, todos los recursos incrustados solo se pueden cargar desde fuentes confiables, por lo que las balizas web no son posibles. Las acciones de formulario también están restringidas, por lo que no es posible la redirección directa de formulario.

Un atacante XSS todavía puede cambiar el contenido y el diseño de la página. Esto incluye incrustar enlaces maliciosos. Sin embargo, no estoy convencido de que este sea un gran riesgo de phishing: los usuarios con conocimientos comprobarán la barra de direcciones antes de ingresar las credenciales, y los usuarios que no lo sean podrán caer en trucos mucho más simples.

Nivel 3 - Detener CSS en línea

Esto reduce la capacidad del atacante para cambiar el diseño de la página, aunque pueden controlar el contenido e inyectar enlaces.

CSP Auditor

Creé la herramienta CSP Auditor para ayudar a evaluar las políticas. Solo evalúa si las políticas cumplen con el nivel 1. Resulta que la mayoría de los sitios importantes con CSP tienen una política que no cumple con el nivel 1. Los niveles 2 y 3 serán aún más difíciles de lograr; tanto, no lo estoy poniendo. Verificaciones en el auditor (por ahora al menos).

    
respondido por el paj28 27.07.2016 - 22:24
fuente
0

CSP te protege contra muchos ataques guiados por script. Su creencia de que "resuelve el problema del robo encubierto de datos confidenciales" no es exacta. Puede resolver el problema de la amenaza encubierta mediante scripts en esa página, pero no resuelve, por ejemplo, los problemas de tablas de referencias cruzadas o la manipulación de proxy.

Más ampliamente, no hay una lista completa de ataques, y por lo tanto, tratar de enumerar "Me pregunto contra qué no nos protegerá esta nueva técnica" es un conjunto infinito.

    
respondido por el Adam Shostack 27.07.2016 - 22:35
fuente

Lea otras preguntas en las etiquetas