La charla está dividida en dos partes:
- SSL/TLS: buenas prácticas. Aspectos a tener en cuenta a la hora de configurar los servicios bajo SSL/TLS, protocolos que debemos usar, tamaños de clave recomendables, algoritmos, herramientas que nos pueden ayudar. (Orientada a gente que configure sistemas)
- Recientes avances en la seguridad de aplicaciones web. Ataques como XSS y el ClickJacking. Nuevas técnicas que están siendo implementadas en los navegadores más recientes para minimizar estos riesgos pero que se configuran desde las aplicaciones o desde el servidor. (Orientada tanto a desarrolladores como a administradores de Sistemas).
3. SSL: buenas prácticas y recientes avances en la seguridad de
aplicaciones web.
• Agenda
• Buenas prácticas en la configuración SSL/TLS (~
2/3 )
– Protocolos SSL
– Certificados y claves
– Suites criptográficas
– Herramientas de interés
– Informes internos
• Nuevos avances en la seguridad web (~ 1/3)
– CSP- Content Security Policy
– HSST - HTTP Strict Transport Security
– X-Frame-Options
3/25
4. SSL/TLS: Introducción
• SSL (Secure Sockets Layer)
– es el protocolo original desarrollado en
1995 por Netscape.
• Es fácil de implantar, pero lo que no suele ser
tan común es hacerlo correctamente.
• En SSL/TLS hay varios elementos que
debemos tener en cuenta:
• certificado
• protocolos
• algoritmos de intercambio de clave
• algoritmos de autenticación
• algoritmos de cifrado
• algoritmos para la creación de MAC
4/25
5. SSL/TLS: Certificados
• Sospechosos habituales:
– Que no haya errores en el nombre/dominio
– Certificado aún no válido
– Certificado caducado
– Uso de certificados autofirmados
– CA no conocidas
– Certificado revocado
5/25
6. SSL/TLS: Certificados (II)
• Tamaños de clave:
– Usar ya claves de 2048 bits de clave
pública*
• Protección
– Renovación a ser posible anual
– Protección de las claves en el servidor
– Y allí donde vayan a parar como:
• Copias de seguridad
6/25
7. SSL/TLS: Certificados (IV)
• Nombres de DNS:
– El certificado ha de contener TODOS los
nombres que permitan acceder al servicio
– Es posible usar certificados tipo:
• *.blogs.um.es
7/25
9. SSL/TLS: Entidades Raíz y jerarquía (V)
• El servidor debe entregar su certificado y los
intermedios
• Han de entregarse en orden: primero la que
firma el certificado del servidor y subiendo
hasta la entidad raíz
• La entidad raíz puede no entregarse, ya que
el cliente ha de tenerla en su propio almacén
• Los certificados intermedios aunque suelen
tener periodos de validez mayores también
expiran
• Cada navegador reacciona de una manera
ante un fallo de jerarquía; mejor probar
9/25
10. SSL/TLS: Protocolos
• SSLv2
– tiene graves fallos de seguridad no debería
usarse nunca
• SSLv3 y TLSv1
– TLSv1 es la versión del IETF de SSLv3
• Mayoritáriamente soportado
– TLSv1.1
• Algunas mejoras
• Bastante soportado
– TLSv1.2
• Más mejoras
• Pero aún poco soportado 10/25
11. SSL/TLS: Renegociación
• El canal SSL puede pararse
momentáneamente y permitir que los
extremos renegocien la sesión
• No hay una buena razón para que el cliente
deba reiniciarla; sólo el servidor debería
poder hacerlo, pues puede ser una vía de DoS
• Esto depende del código del servidor
11/25
12. SSL/TLS: Ataque BEAST
• El 2004 se descubrió un ataque teórico a SSL
v3/TLS v.1 conocido como BEAST
• Desde 2011 es un ataque practicable
• Desde 2006 TLS v1.1 resuelve este problema,
aunque hay todavía muchos clientes que no
soportan TLS v1.1
• La solución es priorizar RC4 que no se ve
afectado por este ataque cuando los
servidores hablen sólo TLS v1.0 or SSL v3
12/25
14. SSL/TLS: Alguna herramienta
• SSLLABS Server Test
• https://www.ssllabs.com/ssltest/index.html
– Herramienta gráfica y sencilla
– Nos ayuda a corregir errores
– Sólo para servicios web
– No podemos ampliar las entidades raíz
• OpenSSL
14/25
16. SSL/TLS: Otras recomendaciones
• Usa SSL en aquellos sitios que lo necesiten
• Y evita que se acceda sin SSL
• Cuidado con el contenido mixto, pues el
usuario es vulnerable a un ataque MITM
• Marca las cookies como:
– Secure
– Httponly
16/25
17. SSL/TLS: Resumen
• Usar claves públicas de un mínimo de 2048 bits
• No ofrecer cifrados de clave privada de menos de 128 bits
• No permitir SSLv2; ofrecer TLS1.0 y posteriores
• No permitir Anonymous Diffie Hellman (ADH)
• Todos los nombres DNS que llevan al servicio deben estar
incluidos en el certificado
• Protege la clave privada correctamente en todo momento
• Si el protocolo es SSL 3.0/TLS 1.0 utiliza RC4
• Renegociación: siempre segura e iniciada por el servidor
• Sitio web: todas las páginas y elementos por HTTPS
• cookies: márcalas como seguras y HTTPonly
17/25
19. HSTS- HTTP Strict Transport Security
• HSTS (HTTP Strict Transport Security)
– permite forzar el uso de HTTPS
– se trata de una cabecera HTTP
– Chrome viene con lista precargada
• El propio navegador se encargaría de utilizar siempre
HTTPS, a partir de la primera visita durante el tiempo
de validez definido
• No está soportado por el IE
• Pero aún así es conveniente implementarlo: no tiene
apenas coste y puede proteger a algunos usuarios
• Ejemplo
– StrictTransportSecurity: max
age=16070400; includeSubDomains
19/25
20. X-Frame-Options
• Esta cabecera indica si un navegador puede
renderizar una página dentro de <frame> o <iframe>
• Orientado a evitar el clickjacking
• Esta opción sí la soportan la mayoría de los
navegadores: IE, FF, Opera, Safari, Chrome,...
• Ejemplos:
– X-frame-options: DENY
– X-frame-options: SAMEORIGIN
– X-frame-options: ALLOW-FROM origen
20/25
21. Content-Security-Policy (CSP)
• Fue desarrollada para minimizar y 'eliminar' el riesgo
de XSS, Clickjacking y navegación no segura.
• El fundamento es que el navegador sólo considere
válidos determinadas fuentes de las que previamente
le hemos informado por política, ignorando el resto
• Necesita de ninguna o poca modificación en la
aplicación
• Se notifica al navegador bien
– las cabeceras HTTP
– y etiquetas Meta en el HTML
• Tiene 3 partes:
– Definición de políticas
– Forzado de políticas
– Informes de violación de políticas 21/25
22. Content-Security-Policy (CSP)- II
• Ejemplo : “Limita el contenido a este servidor”
– XContentSecurityPolicy: defaultsrc
‘self’
• Elemplo: “Permite imágenes de cualquier sitio,
cotenido de plugins de esta lista de proveedores y
scripts de un dominio específico”
– XContentSecurityPolicy: defaultsrc
'self'; imgsrc *; objectsrc tv1.um.es
tv2.um.es; scriptsrc fundewebscripts.um.es
• Ensure all content is loaded over TLS:
– XContentSecurityPolicy: defaultsrc
https://*:443
22/25
23. Content-Security-Policy (CSP)- III
• Definida cabecera para testeo:
– X-Content-Security-Policy-Report-Only: policy
• Navegadores que lo implementan:
– Firefox 4+
– Chrome 13+
– Safari 6+
• Navegadores que aún no lo implementan o el soporte
es parcial
– IE 10*
– Opera
23/25