csp level 2: defensa en profundidad para aplicaciones web
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](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/1.jpg)
Caridy Patiño@caridy
github.com/caridy/csp
![Page 2: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/2.jpg)
Content Security Policy (CSP)
![Page 3: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/3.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/4.jpg)
XSS
![Page 5: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/5.jpg)
![Page 6: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/6.jpg)
![Page 7: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/7.jpg)
![Page 8: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/8.jpg)
![Page 9: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/9.jpg)
![Page 10: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/10.jpg)
Técnicas de prevención de inyecciones
![Page 11: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/11.jpg)
Heurística
![Page 12: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/12.jpg)
Code Review
![Page 13: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/13.jpg)
Commit Hooks
![Page 14: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/14.jpg)
Análisis de caja negra
![Page 15: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/15.jpg)
Escaping Libraries
![Page 16: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/16.jpg)
Template Engines
![Page 17: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/17.jpg)
{{this.userValue}} vs
{{{this.configValue}}}
Handlebars Template Engine
![Page 18: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/18.jpg)
{{this.userValue}} vs
{{dangerOfInjection this.configValue}}
Handlebars Template Engine
![Page 19: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/19.jpg)
App Middleware
Browser middleware (traffic layer)
app layer
request modified request
![Page 20: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/20.jpg)
Una capa de seguridad no es suficiente
![Page 21: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/21.jpg)
![Page 22: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/22.jpg)
CSP
![Page 23: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/23.jpg)
- 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](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/24.jpg)
Interruptor Mecánico
![Page 25: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/25.jpg)
“Content-Security-Policy” Header
![Page 26: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/26.jpg)
![Page 27: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/27.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/28.jpg)
“Content-Security-Policy” Header
![Page 29: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/29.jpg)
vs
vs
![Page 30: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/30.jpg)
Requiere compromiso(todos se rigen por las mismas reglas)
![Page 31: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/31.jpg)
No hay distinción
![Page 32: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/32.jpg)
Inline scripts no son permitidos
![Page 33: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/33.jpg)
Inline scripts con “nonce” o “hash” son permitidos
![Page 34: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/34.jpg)
Reporte de Violaciones CSP
![Page 35: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/35.jpg)
Header
Beacon
![Page 37: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/37.jpg)
Desafios de CSP
![Page 38: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/38.jpg)
SSL
![Page 39: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/39.jpg)
Crear y mantener el whitelist es difícil
![Page 40: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/40.jpg)
Habilitar reglas por default de CSP no es suficiente
![Page 41: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/41.jpg)
Inline scripts
![Page 42: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/42.jpg)
Penalidades de Desempeño
![Page 43: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/43.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/44.jpg)
Browser Plugins / Addons
![Page 45: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/45.jpg)
Report Only Mode
![Page 46: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/46.jpg)
“Content-Security-Policy-Report-Only”
![Page 47: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/47.jpg)
Herramientas
![Page 49: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/49.jpg)
caspr.io + enforcer
![Page 51: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/51.jpg)
DEMO
![Page 52: CSP Level 2: Defensa en profundidad para aplicaciones Web](https://reader033.vdocument.in/reader033/viewer/2022051818/549c643ab47959aa318b4705/html5/thumbnails/52.jpg)
Gracias
@caridy