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


Top Related