csp level 2: defensa en profundidad para aplicaciones web

52
Caridy Patiño @caridy github.com/caridy/csp

Upload: caridy-patino

Post on 25-Dec-2014

63 views

Category:

Technology


1 download

DESCRIPTION

XSS continúa siendo el vector de ataque más común, y no es un secreto que la mayoría de las aplicaciones web son susceptibles a algún tipo de injection, proveyendo una puerta de acceso para atacar a cada usuario de la aplicación. También no es un secreto que la mayoría de los desarrolladores Web presta poca, o ninguna, atención a este tema, y las herramientas disponibles en el mercado para analizar el código y detectar posibles vías de inyección están basadas en análisis heurístico, lo que implica que tienen una efectividad muy limitada. A finales del 2012, W3C aceptó una propuesta para estandarizar CSP 1.0, que describe un interruptor mecánico controlado desde un servidor a un cliente para definir las políticas a seguir por la aplicación web, y declarar un conjunto de restricciones de contenido. La falla principal de CSP 1.0 consiste en su falta de flexibilidad, como por ejemplo soportar scripts en línea, una práctica muy arraigada en los desarrolladores web, y mucho dicen es una funcionalidad esencial para cualquier aplicación web. Hoy por hoy, tenemos CSP Level 2 como parte de las nuevas normativas de W3C, ya incluso disponible en algunos de los navegadores, y este promete ser mucho más efectivo y flexible a la vez. En esta presentación vamos a cubrir detalles de CSP Level 2, y algunas de las prácticas recomendadas. A la vez, queremos proveer un espacio para demostrar la efectividad de esta tecnología a través de un ejercicio de hackeo.

TRANSCRIPT

Page 1: CSP Level 2: Defensa en profundidad para aplicaciones Web

Caridy Patiño@caridy

github.com/caridy/csp

Page 2: CSP Level 2: Defensa en profundidad para aplicaciones Web

Content Security Policy (CSP)

Page 3: CSP Level 2: Defensa en profundidad para aplicaciones Web

Agenda !

- XSS - inyecciones más comunes - Técnicas de prevención (historia) - CSP Level 1 - CSP Level 2 - Demo - Concurso

Page 4: CSP Level 2: Defensa en profundidad para aplicaciones Web

XSS

Page 5: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 6: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 7: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 8: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 9: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 10: CSP Level 2: Defensa en profundidad para aplicaciones Web

Técnicas de prevención de inyecciones

Page 11: CSP Level 2: Defensa en profundidad para aplicaciones Web

Heurística

Page 12: CSP Level 2: Defensa en profundidad para aplicaciones Web

Code Review

Page 13: CSP Level 2: Defensa en profundidad para aplicaciones Web

Commit Hooks

Page 14: CSP Level 2: Defensa en profundidad para aplicaciones Web

Análisis de caja negra

Page 15: CSP Level 2: Defensa en profundidad para aplicaciones Web

Escaping Libraries

Page 16: CSP Level 2: Defensa en profundidad para aplicaciones Web

Template Engines

Page 17: CSP Level 2: Defensa en profundidad para aplicaciones Web

{{this.userValue}} vs

{{{this.configValue}}}

Handlebars Template Engine

Page 18: CSP Level 2: Defensa en profundidad para aplicaciones Web

{{this.userValue}} vs

{{dangerOfInjection this.configValue}}

Handlebars Template Engine

Page 19: CSP Level 2: Defensa en profundidad para aplicaciones Web

App Middleware

Browser middleware (traffic layer)

app layer

request modified request

Page 20: CSP Level 2: Defensa en profundidad para aplicaciones Web

Una capa de seguridad no es suficiente

Page 21: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 22: CSP Level 2: Defensa en profundidad para aplicaciones Web

CSP

Page 23: CSP Level 2: Defensa en profundidad para aplicaciones Web

- Protección contra XSS !

- Protección mecánica (no heurística) !

- Defensa en profundidad (redundancia)

¿Qué es CPS?

Page 24: CSP Level 2: Defensa en profundidad para aplicaciones Web

Interruptor Mecánico

Page 25: CSP Level 2: Defensa en profundidad para aplicaciones Web

“Content-Security-Policy” Header

Page 26: CSP Level 2: Defensa en profundidad para aplicaciones Web
Page 27: CSP Level 2: Defensa en profundidad para aplicaciones Web

Reglas- script-src: para los javascript. - connect-src: para los pedidos de XHR, WebSockets, etc. - font-src: para los web fonts. - frame-src: para los frames/iframes. - img-src: para imágenes. - media-src: para video y audio streams. - object-src: para flash y otros plugins. - style-src: para los stylesheets/css. - default-src: reglas por defecto.

Page 28: CSP Level 2: Defensa en profundidad para aplicaciones Web

“Content-Security-Policy” Header

Page 29: CSP Level 2: Defensa en profundidad para aplicaciones Web

vs

vs

Page 30: CSP Level 2: Defensa en profundidad para aplicaciones Web

Requiere compromiso(todos se rigen por las mismas reglas)

Page 31: CSP Level 2: Defensa en profundidad para aplicaciones Web

No hay distinción

Page 32: CSP Level 2: Defensa en profundidad para aplicaciones Web

Inline scripts no son permitidos

Page 33: CSP Level 2: Defensa en profundidad para aplicaciones Web

Inline scripts con “nonce” o “hash” son permitidos

Page 34: CSP Level 2: Defensa en profundidad para aplicaciones Web

Reporte de Violaciones CSP

Page 35: CSP Level 2: Defensa en profundidad para aplicaciones Web

Header

Beacon

Page 36: CSP Level 2: Defensa en profundidad para aplicaciones Web

http://caniuse.com/#search=csp

Page 37: CSP Level 2: Defensa en profundidad para aplicaciones Web

Desafios de CSP

Page 38: CSP Level 2: Defensa en profundidad para aplicaciones Web

SSL

Page 39: CSP Level 2: Defensa en profundidad para aplicaciones Web

Crear y mantener el whitelist es difícil

Page 40: CSP Level 2: Defensa en profundidad para aplicaciones Web

Habilitar reglas por default de CSP no es suficiente

Page 41: CSP Level 2: Defensa en profundidad para aplicaciones Web

Inline scripts

Page 42: CSP Level 2: Defensa en profundidad para aplicaciones Web

Penalidades de Desempeño

Page 43: CSP Level 2: Defensa en profundidad para aplicaciones Web

embedding widgets

• twitter por ejemplo te deja activar directivas de CSP es sus widget a través de un meta tag:

• <meta name=“twitter:widgets:csp” content=“on">

• https://dev.twitter.com/web/overview/widgets-meta-elements

Page 44: CSP Level 2: Defensa en profundidad para aplicaciones Web

Browser Plugins / Addons

Page 45: CSP Level 2: Defensa en profundidad para aplicaciones Web

Report Only Mode

Page 46: CSP Level 2: Defensa en profundidad para aplicaciones Web

“Content-Security-Policy-Report-Only”

Page 47: CSP Level 2: Defensa en profundidad para aplicaciones Web

Herramientas

Page 48: CSP Level 2: Defensa en profundidad para aplicaciones Web

npmjs.org/package/content-security-policy

Page 49: CSP Level 2: Defensa en profundidad para aplicaciones Web

caspr.io + enforcer

Page 50: CSP Level 2: Defensa en profundidad para aplicaciones Web

http://c0nrad.io/blog/csp.html

Page 51: CSP Level 2: Defensa en profundidad para aplicaciones Web

DEMO

Page 52: CSP Level 2: Defensa en profundidad para aplicaciones Web

Gracias

@caridy