Charla impartida por Luciano Bello el día 27 de Octubre de 2008 en Getafe (Madrid) en la conferencia Asegúr@IT IV sobre el fallo del módulo OpenSSL en la distribución Debian.
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
DEBIAN OPENSSL PRNG
1. Generador de N´ meros Pseudo-Aleatorios
u
Predecible en Debian
el qu´ , el c´ mo y las consecuencias
e o
Luciano Bello1,2 Maximiliano Bertacchini2
luciano at debian.org mbertacchini at citefa.gov.ar
1 Debian Project
2 Si6 Labs - CITEFA
´
(Instituto de Investigaciones Cient´ficas y Tecnicas para la Defensa, Argentina)
ı
Asegur@IT IV
˜
Madrid, Espana
27 de Octubre de 2008
2. ´
Introduccion
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 2 / 37
3. ´
Introduccion
´
INTRODUCCI ON A DSA-1571
H T T P://W W W.D E B I A N.O R G/S E C U R I T Y/2008/D S A-1571
El generador de numeros pseudoaleatorios (PRNG) del paquete
´
˜
OpenSSL de Debian ha sido predecible por 2 anos
Causado por un parche espec´fico de Debian
ı
´
En consecuencia, se puede deducir material clave criptografico
Afecta a otros paquetes enlazados con libssl
Afecta a otros sistemas operativos basados en Debian
´
Otros sistemas se ven afectados si contienen claves debiles
importadas (incluso las publicas)
´
´
La primera version vulnerable es 0.9.8c-1 (publicada el
´
17/09/2006). Inclu´da en la version estable actual (Etch)
ı
El advisory y el parche fueron publicados el 13/05/2008
¡No afecta a las claves generadas por GnuPG o GNUTLS!
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 3 / 37
4. ´
Introduccion
EN OTRAS PALABRAS
En consecuencia, el espacio de claves de un criptosistema depende
de:
PID MAX (t´picamente 215 )
ı
La arquitectura / endianness del equipo
Estado del generador (bytes pedidos anteriormente, etc.)
´ ´
Todo el material criptografico es debil (predecible por ataque de fuerza
15 ):
bruta en un espacio de 2
´
Autenticacion de cliente / servidor
Firmas DSA
Key agreement
´
Claves de sesion
Datos publicos aleatorios (Salt, IV)
´
´
Passwords/passphrases automaticas (OTP, generadas por
pwsafe, etc)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 4 / 37
6. ´
Las Cronicas de Debian OpenSSL
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 6 / 37
7. ´
Las Cronicas de Debian OpenSSL
UN MAL COMIENZO
“UNA SERIE DE HECHOS DESAFORTUNADOS”
Richard Kettlewell registra el bug “Valgrind-Clean the RNG” el
19/04/2006 15:18:15 UTC
(http://bugs.debian.org/363516)
´
Kurt (Debian OpenSSL maintainer) identifico dos l´neas
ı
´
“problematicas” (http://bugs.debian.org/363516#10)
“What it’s doing is adding uninitialised numbers to the pool to
create random numbers. I’ve been thinking about commenting
those out.”
C R Y P T O/R A N D/M D R A N D.C
274:
MD_Update(&m,buf,j);
467:
#ifndef PURIFY
MD_Update(&m,buf,j); /* purify complains */
#endif
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 7 / 37
8. ´
Las Cronicas de Debian OpenSSL
LAS “SOLUCIONES” PROPUESTAS
Marcar como “wontfix”
1
Produce gran cantidad de advertencias en Valgrind
Usar el mecanismo de Valgrind para que lo ignore
2
´
Es una solucion espec´fica para Valgrind
ı
˜
Cambia el binario en forma extrana
No agregar el buffer al pool
3
La entrop´a extra es despreciable
ı
Preguntemos en openssl-dev
(http://www.mail-archive.com/openssl-dev@openssl.org/msg21156.html)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 8 / 37
9. ´
Las Cronicas de Debian OpenSSL
EL MALENTENDIDO
(http://www.mail-archive.com/openssl-dev@openssl.org/msg21156.html)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 9 / 37
10. ´
Las Cronicas de Debian OpenSSL
EL MALENTENDIDO
(http://www.mail-archive.com/openssl-dev@openssl.org/msg21157.html)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 10 / 37
11. ´
Las Cronicas de Debian OpenSSL
EL FAMOSO PARCHE
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 11 / 37
12. ´
Analisis de OpenSSL
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 12 / 37
13. ´
Analisis de OpenSSL
EL PRNG DE OPENSSL
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 13 / 37
14. ´
Analisis de OpenSSL
EL PRNG DE OPENSSL
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 13 / 37
15. ´
Analisis de OpenSSL
EL PRNG DE OPENSSL
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 13 / 37
16. ´
Analisis de OpenSSL
EJEMPLO
EXAMPLE
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 14 / 37
17. ´ ´
Explotacion Autenticacion
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
´
Autenticacion
Man in the middle
DH
DSA
Summary
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 15 / 37
18. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
19. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
20. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
21. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
22. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
23. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
24. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
25. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 16 / 37
26. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 17 / 37
27. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 17 / 37
28. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 17 / 37
29. ´ ´
Explotacion Autenticacion
AUTENTICACI ON POR DESAF´O
´ I
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 17 / 37
30. ´
Explotacion Man in the middle
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
´
Autenticacion
Man in the middle
DH
DSA
Summary
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 18 / 37
31. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
32. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
33. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
34. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
35. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
36. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
37. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
38. ´
Explotacion Man in the middle
´
AUTENTICACI ON POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 19 / 37
39. ´
Explotacion DH
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
´
Autenticacion
Man in the middle
DH
DSA
Summary
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 20 / 37
40. ´
Explotacion DH
ACUERDO DE LLAVE DIFFIE-HELLMAN
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 21 / 37
41. ´
Explotacion DH
ACUERDO DE LLAVE DIFFIE-HELLMAN
44. ´
Explotacion DH
ACUERDO DE LLAVE DIFFIE-HELLMAN
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 22 / 37
45. ´
Explotacion DH
DEMO: WIRESHARK SSL DISSECTOR
Gracias Paolo Abeni
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 23 / 37
46. ´
Explotacion DSA
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
´
Autenticacion
Man in the middle
DH
DSA
Summary
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 24 / 37
47. ´
Explotacion DSA
FIRMADO DSA
Los datos publicos son: p, q, g, y = g x mod p
´
Los datos privados son: x
Para firmar un mensaje m:
Alicia genera un numero al azar, k, menor a q.
´
1
Alicia calcula:
2
r = (g k mod p) mod q
s = (k −1 (H(m) + xr )) mod q
´
Los parametros r y s son la firma de Alicia para el mensaje m
3
Oscar puede obtener x si tiene un espacio explorable de todos los k
posibles:
Genera ri para cada ki hasta que ri = r
1
Con el ki encontrado calcula: (ski − H(m)r −1 ) mod q = x
2
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 25 / 37
48. ´
Explotacion Summary
MANUAL PARA LA CONQUISTA DEL UNIVERSO
´
Elegir una aplicacion
1
Seleccionar o averiguar el algoritmo que utiliza
2
Generar el espacio de (215 − 1) × 3 claves
3
A bruteforcear!:
4
´
Autenticarte a un servidor utilizando llaves asimetricas (requiere
que el servidor tenga algun usuario que se autentique v´a ı
´
´
passwordless y que alguna de esas llaves sea debil)
Realizar un ataque MitM utilizando un certificado de servidor
´
clonado (requiere un certificado debil y un escenario donde sea
posible un MitM)
Descifrar sesiones donde alguna de las partes sea un Debian
vulnerable
´
Atacar criptograf´a simetrica conexiones/storage/etc donde la clave
ı
´
este generada al azar (requiere un sistema vulnerable en el
´
momento de generacion de dicha clave)
Obtener la clave privada de un firmante DSA (requiere un mensaje
firmado en un sistema vulnerable)
Muejeje!!!
5
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 26 / 37
49. ´
Explotacion Summary
TRABAJOS RELACIONADOS
H. D. Moore toys
(http://metasploit.com/users/hdm/tools/debian-openssl/)
Wireshark parche para atacar PFS en SSL/TLS
(https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2725)
SSH Snort plugin de Ben Feinstein
(http://www.secureworks.com/research/tools)
¨
SSH tools de Yoann Guillot and Raphael Rigo
(http://www.cr0.org/progs/sshfun/)
Firefox SSL Blacklist Add-on de Marton Anka
(http://codefromthe70s.org/sslblacklist.asp)
OpenID/Debian PRNG/DNS Cache poisoning advisory,
08-AUG-2008 (CVE-2008-3280)
(http://www.securityfocus.com/archive/1/495258)
´ ´
Debian wiki. Que hacer y como afecta a cada paquete
(http://wiki.debian.org/SSLkeys)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 27 / 37
50. ´
Explotacion Summary
CONTRAMEDIDAS
Actualizar libssl, openssl y openssh (¿Todav´a no lo hiciste?)
ı
´
Buscar y regenerar todas las llaves debiles.
Eliminiar todas las llaves blacklisteadas. Las blacklists pueden
obtenerse en los paquetes openvpn-blacklist,
openssh-blacklist and openssl-blacklist.
Conciderar comprometidas todas las llaves DSA que hayan sido
utilizadas en sistemas vulnerables
Utilizar Firefox SSL-Blacklist add-on
´
Utilizar la opcion PermitBlacklistedKeys=no en el OpenSSH
de Debian
No hay nada que puedas hacer por el pasado, la leche ya
´
esta derramada
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 28 / 37
51. Repercusiones
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 29 / 37
52. Repercusiones
CERTIFICADOS AFECTADOS
´
30 de Mayo (2 semanas despues del advisory). Gracias a Juergen Schmidt, Editor-in-Chief Heise Security [www.heisec.de]
´
Extrapolando, ≈ 24.000 certificados debiles firmados por una CA
´
confiable, sobre 809.000 sitios con certificados SSL validos
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 30 / 37
53. Repercusiones
OTRAS RAREZAS SOBRE CERTIFICADOS SSL
´ ´
Solo alrededor del 20 % de los certificados debiles especifican
una URI OCSP
≈ 90 % de los usuarios utilizan browsers que no chequean CRLs
por defecto
Hay unos 10 certificados EV vulnerables en la muestra tomada.
´
Extrapolando, cerca de 120 certificados EV son debiles en el
mundo? (segun Netcraft, 0.5 % de los certificados son EV)
´
La herramienta http://www.heise-online.co.uk/
´ ´
networks/tools/chksslkey encontro certificados debiles en
4577 hosts unicos (la mayor´a self-signed) a mediados de Julio
ı
´
Para mitigar el impacto se puede utilizar Firefox SSL Blacklist
Add-on junto a “that 30-meg sister extension”
www.codefromthe70s.org/files/sslblacklist-3.0.22.xpi
www.codefromthe70s.org/files/sslblacklist-localdb-1.0.3.xpi
Gracias a Juergen Schmidt, Editor-in-Chief heise Security (www.heisec.de) por la
´ ´
investigacion, cifras y analisis
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 31 / 37
54. Repercusiones
REPERCURSIONES EN DEBIAN
´
Este es mi (Luciano Bello) punto de vista. No necesariamente representa la opinion de otros desarrolladores de Debian o la del
´
Proyecto Debian. Mucho de este trabajo esta en progreso.
Debian, sus usuarios y otras distribuciones se benefician
much´simo de los custom patches
ı
Algunas veces upstream y Debian difieren en sus objetivos y sus
´
estandares de calidad
´
Algunas veces es dif´cil tener una buena comunicacion con
ı
upstream
´ ˜
La deteccion del problema no resulta taaaan obvia (estuvo 2 anos
sin ser descubierto)
´
Es humanamente imposible auditar todo el codigo
´
“Solo aquellos que no hacen nada no cometen errores. El punto es tratar de
evitar errores, no de encontrar la forma de culpar a alguien.”
Alguien en la lista de correo debian-devel
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 32 / 37
55. Repercusiones
REPERCUSIONES EN DEBIAN
Estamos trabajando en mejorar la visibilidad, mostrar parches,
haciedo que la Ley de Linus ocurra:
Publicar todas las fuentes en VCSs publicos
´
Nuevo formato v3 de paquete de paquete
´
Encabezados estandares en los parches para administrarlos
´
automaticamente?
patches.debian.org?
Seguir las divergencias como bugs en el BTS?
´ ´
Despues de todo, es un problema tecnico, de pol´ticas o social?
ı
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 33 / 37
56. Conclusiones
´
INTRODUCCI ON
1
´
LAS CR ONICAS DE DEBIAN OPENSSL
2
´
AN ALISIS DE OPENSSL
3
´
EXPLOTACI ON
4
REPERCUSIONES
5
CONCLUSIONES
6
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 34 / 37
57. Conclusiones
CONCLUSIONES (AKA. LECCIONES APRENDIDAS)
Mirar dos veces, parchear una. Parches simples pueden tener
consecuencias profundas
´
No escribir codigo fancy, especialmente cuando lo que aporta es
m´nimo
ı
´
El codigo seguro tiene que estar bien organizado
´
¡Comenta tu codigo como si otros (incluso tu) fueran a leerlo!
´
´ ´
Pregunta con detalles. “Mas” es mejor que “solo lo suficiente”
Si muchas personas preguntan siempre lo mismo, tal vez se trate
´
de algo que requiera atencion
Involucrate en los parches de tu down/upstream: puede que
´
obtengas mejoras
´
“Dejar tu codigo en un FTP server” no es lo mismo que “compartir
´
tu codigo”
¿Es el contraejemplo a la Ley de Linus? (o no... tal vez es que
sencillamente *no* hay suficiente cantidad de ojos mirando)
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 35 / 37
58. Conclusiones
AGRADECIMIENTOS
Paolo Abeni paolo.abeni at email.it por su ayuda en
´
la modificacion a Wireshark
¨
Bodo Moller bodo at openssl.org por su ayuda para
entender mejor el PRNG de OpenSSL
´
Ignacio “Nacho” Marambio Catan ignacio.marambio at
gmail.com en las etapas iniciales
´
Florian Weimer fw at deneb.enyo.de por su atencion y
trabajo durante el anuncio del advisory
Kragen Javier Sitaker kragen at pobox.com por la ayuda
´ ´
en el analisis del codigo y las correcciones de nuestro pobre
´
ingles
Juergen Schmidt, Editor-in-Chief heise Security
(www.heisec.de) por las estad´sticas
ı
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 36 / 37
59. Conclusiones
¿PREGUNTAS?
¡Gracias!
Luciano Bello Maximiliano Bertacchini
luciano at debian.org mbertacchini at citefa.gov.ar
POWERED BY L TEX+ BEAMER
A
(Debian, Si6-CITEFA) Debian OpenSSL Asegur@IT IV 37 / 37