Generador de N´umeros Pseudo-Aleatorios Predecible en Debian El Qu´e y El C´omo
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)
EKOPARTY 2008 Buenos Aires, Argentina 2 y 3 de Octubre de 2008
´ Introduccion
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
2 / 37
´ Introduccion
´ A DSA-1571 I NTRODUCCI ON 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) ´ ´ vulnerable es 0.9.8c-1 (publicada el La primera version ´ estable actual (Etch) 17/09/2006). Inclu´ıda en la version 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
ekoparty 2008
3 / 37
´ Introduccion
E N 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.) ´ ´ (predecible por ataque de fuerza Todo el material criptografico es debil bruta en un espacio de 215 ): ´ de cliente / servidor Autenticacion 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
ekoparty 2008
4 / 37
´ Introduccion
PAQUETES A FECTADOS
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
5 / 37
´ Las Cronicas de Debian OpenSSL
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
6 / 37
´ Las Cronicas de Debian OpenSSL
U N M AL C OMIENZO “U NA 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
ekoparty 2008
7 / 37
´ Las Cronicas de Debian OpenSSL
L AS “S OLUCIONES ” P ROPUESTAS 1
Marcar como “wontfix”
2
Usar el mecanismo de Valgrind para que lo ignore
Produce gran cantidad de advertencias en Valgrind ´ espec´ıfica para Valgrind Es una solucion ˜ Cambia el binario en forma extrana 3
No agregar el buffer al pool La entrop´ıa extra es despreciable Preguntemos en openssl-dev (http://www.mail-archive.com/
[email protected]/msg21156.html)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
8 / 37
´ Las Cronicas de Debian OpenSSL
E L M ALENTENDIDO (http://www.mail-archive.com/
[email protected]/msg21156.html)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
9 / 37
´ Las Cronicas de Debian OpenSSL
E L M ALENTENDIDO (http://www.mail-archive.com/
[email protected]/msg21157.html)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
10 / 37
´ Las Cronicas de Debian OpenSSL
E L FAMOSO PARCHE
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
11 / 37
´ Analisis de OpenSSL
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
12 / 37
´ Analisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
´ Analisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
´ Analisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
´ Analisis de OpenSSL
E JEMPLO E XAMPLE
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
14 / 37
´ Explotacion
´ Autenticacion
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON ´ Autenticacion Man in the middle DH DSA Summary
5
R EPERCUSIONES
6
C ONCLUSIONES (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
15 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
´ Explotacion
´ Autenticacion
´ POR DESAF´I O AUTENTICACI ON ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
´ Explotacion
Man in the middle
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON ´ Autenticacion Man in the middle DH DSA Summary
5
R EPERCUSIONES
6
C ONCLUSIONES (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
18 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
Man in the middle
´ POR CERTIFICADOS AUTENTICACI ON ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
´ Explotacion
DH
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON ´ Autenticacion Man in the middle DH DSA Summary
5
R EPERCUSIONES
6
C ONCLUSIONES (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
20 / 37
´ Explotacion
DH
ACUERDO DE L LAVE D IFFIE -H ELLMAN
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
21 / 37
´ Explotacion
DH
ACUERDO DE L LAVE D IFFIE -H ELLMAN
p, g, X s
Xc
Xs
Xc
g mod p = Ys
g mod p = Yc
Xs
Xc
K = Yc mod p
(Debian, Si6-CITEFA)
Ys mod p = K
Debian OpenSSL
ekoparty 2008
21 / 37
´ Explotacion
DH
ACUERDO DE L LAVE D IFFIE -H ELLMAN ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
22 / 37
´ Explotacion
DH
DEMO: W IRESHARK SSL D ISSECTOR Gracias Paolo Abeni
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
23 / 37
´ Explotacion
DSA
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON ´ Autenticacion Man in the middle DH DSA Summary
5
R EPERCUSIONES
6
C ONCLUSIONES (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
24 / 37
´ Explotacion
DSA
F IRMADO DSA Los datos publicos son: p, q, g, y = g x mod p ´ Los datos privados son: x Para firmar un mensaje m: 1 2
Alicia genera un numero al azar, k, menor a q. ´ Alicia calcula: r = (g k mod p) mod q s = (k −1 (H(m) + xr )) mod q
3
´ Los parametros r y s son la firma de Alicia para el mensaje m
Oscar puede obtener x si tiene un espacio explorable de todos los k posibles: 1
Genera ri para cada ki hasta que ri = r
2
Con el ki encontrado calcula: (ski − H(m)r −1 ) mod q = x
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
25 / 37
´ Explotacion
Summary
M ANUAL PARA LA CONQUISTA DEL U NIVERSO 1 2 3 4
´ Elegir una aplicacion Seleccionar o averiguar el algoritmo que utiliza Generar el espacio de (215 − 1) × 3 claves A bruteforcear!: ´ 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 ´ y un escenario donde sea clonado (requiere un certificado debil 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 ´ de dicha clave) momento de generacion Obtener la clave privada de un firmante DSA (requiere un mensaje firmado en un sistema vulnerable)
5
Muejeje!!! (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
26 / 37
´ Explotacion
Summary
T RABAJOS 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)
¨ Rigo SSH tools de Yoann Guillot and Raphael (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
ekoparty 2008
27 / 37
´ Explotacion
Summary
C ONTRAMEDIDAS 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 ´ PermitBlacklistedKeys=no en el OpenSSH Utilizar la opcion de Debian No hay nada que puedas hacer por el pasado, la leche ya esta´ derramada
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
28 / 37
Repercusiones
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
29 / 37
Repercusiones
C ERTIFICADOS A FECTADOS ´ del advisory). Gracias a Juergen Schmidt, Editor-in-Chief Heise Security [www.heisec.de] 30 de Mayo (2 semanas despues
´ Extrapolando, ≈ 24.000 certificados debiles firmados por una CA ´ confiable, sobre 809.000 sitios con certificados SSL validos (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
30 / 37
Repercusiones
OTRAS RAREZAS SOBRE CERTIFICADOS SSL ´ alrededor del 20 % de los certificados debiles ´ Solo 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 ´ cifras y analisis ´ investigacion, (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
31 / 37
Repercusiones
R EPERCURSIONES EN D EBIAN ´ de otros desarrolladores de Debian o la del Este es mi (Luciano Bello) punto de vista. No necesariamente representa la opinion 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 ´ con Algunas veces es dif´ıcil tener una buena comunicacion upstream ´ del problema no resulta taaaan obvia (estuvo 2 anos ˜ La deteccion sin ser descubierto) ´ Es humanamente imposible auditar todo el codigo ´ aquellos que no hacen nada no cometen errores. El punto es tratar de “Solo evitar errores, no de encontrar la forma de culpar a alguien.” Alguien en la lista de correo debian-devel (Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
32 / 37
Repercusiones
R EPERCUSIONES EN D EBIAN 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? ´ de todo, es un problema tecnico, ´ Despues de pol´ıticas o social?
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
33 / 37
Conclusiones
1
´ I NTRODUCCI ON
2
´ L AS C R ONICAS DE D EBIAN O PEN SSL
3
´ A N ALISIS DE O PEN SSL
4
´ E XPLOTACI ON
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
34 / 37
Conclusiones
C ONCLUSIONES ( 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! ´ es mejor que “solo ´ lo suficiente” Pregunta con detalles. “Mas” 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
ekoparty 2008
35 / 37
Conclusiones
AGRADECIMIENTOS Paolo Abeni por su ayuda en ´ a Wireshark la modificacion ¨ Bodo Moller por su ayuda para entender mejor el PRNG de OpenSSL ´ en las etapas iniciales ´ y Florian Weimer por su atencion trabajo durante el anuncio del advisory Kragen Javier Sitaker 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
ekoparty 2008
36 / 37
Conclusiones
¿P REGUNTAS ?
¡Gracias! Luciano Bello
Maximiliano Bertacchini
P OWERED BY LATEX+ BEAMER
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
37 / 37