https: usted, úselo bien

Post on 17-Jul-2015

137 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Cristián Rojas, CSSLPCLCERT Universidad de Chile

About: Cristián Rojas

● Consultor independiente en Seguridad de la Información

● Profesional Certificado en Ciclo de vida de desarrollo de software seguro (CSSLP)

● Profesor de Seguridad de la Información,UCHILE-PUC

● Investigador asociado, CLCERT UCHILE

StarTechConf, octubre 2013.

2014

SSL/TLS

¿Qué es SSL/TLS?

● Es un protocolo criptográfico que permite hacer valer la confidencialidad y la integridad de transmisiones por la red

● Generalmente se monta sobre protocolos como HTTP, FTP, XMPP...

● También se utiliza en aplicaciones como VPN's

Criptografía en una slide

Criptografía simétrica hs2&gstehdytse

Criptografía asimétrica f23hh328rf2q8eodst6t46gw7qasf

Cliente

Servidor

Algoritmo de intercambio de

llave

Algoritmo de encriptación

Algoritmo MAC

RSA-RC4-SHA

Negociación (Handshake)

Llave de sesión

Handshake (continuación)

La Autoridad Certificadora (CA)

CA Raíz (root)

CA EuropaCA Américas CA Asia

CA PerúCA Brasil CA Chile

Root CA

CA Americas

CA Chile

www.misitio.cl

● Dominio (DV)– Automatizado, sólo requiere un mail

– No es mejor que un certificado autofirmado

● Organización (OV)– Mayor chequeo: NIC, registros de marcas...

● Extendida (EV - “Barra verde”)– Se valida:

● Existencia de la empresa● Identidad oficialmente registrada y derecho de uso de dominio● Pago de seguro

– Validación anual

Validación para certificados

www.misitio.clmail.misitio.clrest.misitio.cl

www.misitio.clwww.misitio.com.pewww.misitio.comwww.misitio.edu

Wildcard SAN

¿Y para múltiples sitios?

Vulnerabilidades en SSL/TLS

EXP-RC2-CBC-MD5

EDH-RSA-DES-CBC-SHA

AECDH-NULL-SHA

Algoritmos débiles

Ataques a protocolos

2011 2012 2013 2014

BEAST(Browser Exploit Against

SSL/TLS)Permite desencriptar

cookies seguras en minutos

CRIME(Compression Ratio Info-leak Made Easy)

Ataque de canal lateral contra la compresión en HTTPS

BREACH(Browser Reconnaissance and

Exfiltration via Adaptive Compression of Hypertext)

Ataque de canal lateral contra la compresión en HTTP bajo

SSL/TLS

POODLE(Padding Oracle On Downgraded

Legacy Encryption)Ataque de rollback de protocolo

2015

FREAK(Factoring Attack on RSA-

EXPORT Keys)Ataque de rollback de

protocolo

FREAK

Usemos RSA-2048 OK

¿Y por qué no EXP-512? Es más rápido ;)

Vamos conEXP-512 entonces

EXP-512. ¡Genial!

Supieran que EXP-512 es crackeable desde

1999...

AutoridadCertificadora

Ataques a CA's

Compromiso futuro de llave

Transmisiones anteriores de la sesiónincluyendo negociación de llave

Errores (horrores) de implementación

● “goto fail” en MacOSX y iOS (febrero 2014)

● Error de validación CA en GnuTLS (marzo 2014)

● Heartbleed (abril 2014)

Heartbleed

● Error de programación que causa filtración de contenido de memoria del servidor

● Ocurre por no validación de largo de entradas

● Implementado en OpenSSL versiones 1.0.1a hasta 1.0.1f

OpenSSL y sus "yayas"

● OpenSSL es mantenido por 4 personas (uno de ellos full-time)

● Los desarrolladores sólo están interesados en agregar features

● Los bugs y correcciones “se pudren” (hasta 4 años)

● Este “código horrible” causa una enorme barrera de entrada para nuevos desarrolladores

Recomendacionespara el servidor

Eligiendo una CA

● Ver qué tipo de validación se requiere y los costos– Los certificados se

compran por 1, 2, 3... años, por lo tanto tienen fecha de vencimiento.

● Si pierdo o se filtra la llave privada ¿podré reemplazar el certificado sin costo?

Ojo con la cadena de certificados

CA-1 Root CA

Cadena de confianza incompleta

Certificado Raíz CA

Certificado CA intermedia

Certificado servidor

Root CA

Ojo con la cadena de certificados

CA-1 Root CA

Cadena de confianza verificada

Certificado Raíz CA

Certificado CA intermedia

Certificado servidor

CA-1

Root CA

MUERTE A SHA1!!!

6F:73:43:78:02:42:9D:D3:FB:91:6F:3B:26:2F:CD:73:97:C1:A8:3F:43:7F:5F:E2:54:08:BB:F8:80:9A:17:92

23:A9:50:DA:64:E8:B1:93:DB:E3:A5:45:D9:EF:31:BF:96:5F:2F:3FSHA1:

SHA256:

● Recomendaciones:– Solicitar a la CA certificados con fingerprints SHA256

– Si ya se tiene un certificado con SHA1, solicitar uno nuevo con SHA256 incorporado

SSLv2

SSLv3

TLSv1.0

TLSv1.1

TLSv1.2

Usar protocolos de TLSv1.0 hacia arriba

DHE

DHE

???

Implementar Forward Secrecy

Proveer una buena lista de suites de cifrado

● Usar algoritmos de encriptación fuertes (pero no tanto)– 2048 bits para RSA

– 256 bits para ECDHE

● No usar EXPORT ni algoritmos obsoletos

● Dar preferencia a la lista de suites de cifrado del servidor

Controles de ataques a protocolos

● BEAST: Hoy en día es muy dificil de explotar● CRIME: ¿Deshabilitar compresión TLS? La

mayoría de los browsers modernos ya no la usan● BREACH: Deshabilitar compresión HTTP o

randomizar tokens CSRF● POODLE: No incluir SSLv3 en la lista de

protocolos soportados● FREAK: No usar cifradores tipo EXPORT

Ejemplo

admin@secureserver ~$ openssl ciphers -v \'AES !EXP !RC2 !MD5 !DES !aNULL !eNULL'

String de configuración

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_ciphers "AES !EXP !RC2 !MD5 !DES !aNULL !eNULL";

Herramienta: Mozilla SSL Configuration

Generator

● Genera el código necesario para configurar servidores Apache, NginX, HAProxy

● Permite definir cifradores más seguros y configuraciones robustas

Herramienta: Qualys SSL Test

● Herramienta que comprueba en linea configuraciones SSL/TLS de un sitio

● Requiere que el sitio sea expuesto a la web

Recomendacionespara la aplicación

Encriptarlo todo

● Asegurarse de no usar contenido mezclado (ej. HTML encriptado, pero CSS y JS sin encriptar)

● Asegurar las cookies de sesión (mediante el flag Secure)

● Usar HTTP Strict Transport Security (HSTS) en lo posible

Asegurando cookies

Strict Transport Security (HSTS)

● Es un header que causa que:– Si el cliente va a hacer una llamada a http://, la

convierte automáticamente a https://– Si la seguridad de la conexión no es asegurada, la

conexión se corta (no hay downgrade) y aparece un mensaje de error.

● Ejemplo típico:Strict-Transport-Security: max-age=31536000

Deshabilitar cache de contenidos sensibles

● La cache queda en el disco duro sin encriptar● Por eso datos cacheados pueden ser fácilmente

accesibles● Ejemplo:

https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Web_Content_Caching

Cache-Control: no-cache, no-store, must-revalidatePragma: no-cacheExpires: 0

Recursos útiles

● Mozilla SSL Configuration Generatorhttps://mozilla.github.io/server-side-tls/ssl-config-generator/

● OWASP: "Transport Layer Protection Cheat Sheet"https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet

● Ivan Ristic: "OpenSSL Cookbook", y "Bulletproof SSL and TLS"

● Qualys SSL Testhttps://www.ssllabs.com/ssltest/

Muchas gracias por su atención.

Contacto:https://cl.linkedin.com/in/crirojas/es

Iconos cortesía de OSA (CC BY-SA 3.0):http://www.opensecurityarchitecture.org/cms/library/icon-library

top related