Generador de Números Pseudo-Aleatorios
Predecible en Debian
El Qué y El Cómo
Luciano Bello1,2 Maximiliano Bertacchini2
luciano at debian.org
mbertacchini at citefa.gov.ar
1Debian Project
(Instituto de Investigaciones Científicas y Técnicas para la Defensa, Argentina)
2Si6 Labs - CITEFA
III Encuentro Internacional de Seguridad Informática
Manizales, Colombia
7, 8 y 9 de Octubre de 2009
Introducción
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
2 / 34
INTRODUCCI ÓN A DSA-1571
Introducción
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 números pseudoaleatorios (PRNG) del paquete
OpenSSL de Debian ha sido predecible por 2 años
Causado por un parche específico de Debian
En consecuencia, se puede deducir material clave criptográfico
Afecta a otros paquetes enlazados con libssl
Afecta a otros sistemas operativos basados en Debian
Otros sistemas se ven afectados si contienen claves débiles
importadas (incluso las públicas)
La primera versión vulnerable es 0.9.8c-1 (publicada el
17/09/2006). Incluída en la versión 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
EISI 2009
3 / 34
EN OTRAS PALABRAS
Introducción
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 criptográfico es débil (predecible por ataque de fuerza
bruta en un espacio de 215):
Autenticación de cliente / servidor
Firmas DSA
Key agreement
Claves de sesión
Datos públicos aleatorios (Salt, IV)
Passwords/passphrases automáticas (OTP, generadas por
pwsafe, etc)
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
4 / 34
PAQUETES AFECTADOS
Introducción
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
5 / 34
Las Crónicas de Debian OpenSSL
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
6 / 34
Las Crónicas 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) identificó dos líneas
“problemáticas” (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
EISI 2009
7 / 34
Las Crónicas de Debian OpenSSL
UN MAL COMIENZO
“UNA SERIE DE HECHOS DESAFORTUNADOS”
La memoria no inicializada puede producir un comportamiento
no-determinístico en un programa normal. Pero algunas veces se
quiere ese comportamiento, como en un PRNG (aunque no es una
buena fuente de entropía).
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
8 / 34
Las Crónicas de Debian OpenSSL
UN MAL COMIENZO
“UNA SERIE DE HECHOS DESAFORTUNADOS”
La memoria no inicializada puede producir un comportamiento
no-determinístico en un programa normal. Pero algunas veces se
quiere ese comportamiento, como en un PRNG (aunque no es una
buena fuente de entropía).
LAS “SOLUCIONES” PROPUESTAS
1 Marcar como “wontfix”
Produce gran cantidad de advertencias en Valgrind
2 Usar el mecanismo de Valgrind para que lo ignore
Es una solución específica para Valgrind
Cambia el binario en forma extraña
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
EISI 2009
8 / 34
Las Crónicas de Debian OpenSSL
EL MALENTENDIDO
(http://www.mail-archive.com/
[email protected]/msg21156.html)
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
9 / 34
Las Crónicas de Debian OpenSSL
EL MALENTENDIDO
(http://www.mail-archive.com/
[email protected]/msg21157.html)
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
10 / 34
Las Crónicas de Debian OpenSSL
EL FAMOSO PARCHE
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
11 / 34
Análisis de OpenSSL
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
12 / 34
EL PRNG DE OPENSSL
Análisis de OpenSSL
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
13 / 34
EL PRNG DE OPENSSL
Análisis de OpenSSL
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
13 / 34
EL PRNG DE OPENSSL
Análisis de OpenSSL
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
13 / 34
¿POR QU É 247 FUE COMENTADA?
Análisis de OpenSSL
EXAMPLE (OPENSSL API)
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
14 / 34
Explotación
Autenticación
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
15 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
16 / 34
AUTENTICACI ÓN POR DESAFÍO
ATAQUE POR FUERZA BRUTA
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
17 / 34
AUTENTICACI ÓN POR DESAFÍO
ATAQUE POR FUERZA BRUTA
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
17 / 34
AUTENTICACI ÓN POR DESAFÍO
ATAQUE POR FUERZA BRUTA
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
17 / 34
AUTENTICACI ÓN POR DESAFÍO
ATAQUE POR FUERZA BRUTA
Explotación
Autenticación
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
17 / 34
Explotación
Man in the middle
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
18 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (MITM)
Explotación
Man in the middle
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
19 / 34
CERTIFICADOS AFECTADOS
Explotación
Man in the middle
30 de Mayo (2 semanas después del advisory). Gracias a Juergen Schmidt, Editor-in-Chief Heise Security [www.heisec.de]
Extrapolando, ≈ 24.000 certificados débiles firmados por una CA
confiable, sobre 809.000 sitios con certificados SSL válidos
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
20 / 34
Explotación
DH
1
INTRODUCCI ÓN
2 LAS CR ÓNICAS DE DEBIAN OPENSSL
3 AN ÁLISIS DE OPENSSL
4 EXPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5 CONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
21 / 34
ACUERDO DE LLAVE DIFFIE-HELLMAN
Explotación
DH
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
22 / 34
ACUERDO DE LLAVE DIFFIE-HELLMAN
Explotación
DH
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
22 / 34
sg mod p = YXssp, g, XK = Y mod pXsccg mod p = YXccXY mod p = KXcs ACUERDO DE LLAVE DIFFIE-HELLMAN
ATAQUE POR FUERZA BRUTA
Explotación
DH
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
23 / 34
DEMO: WIRESHARK SSL DISSECTOR
Explotación
DH
(Debian, Si6-CITEFA)
Debian OpenSSL
EISI 2009
24 / 34
WIRESHARK SSL DISSECTOR/DECIPHERER
Explotación
DH
Hay que tener en cuenta que:
Distintas aplicaciones pueden utilizar diferentes exponentes
privados, dependiendo del estado del PRNG al momento de
llamar a RAND bytes()
Cuando no se utiliza DHE, no hay PFS, por lo que el ataque
podría ser aún más trivial
La mayoría de los navegadores (firefox, konqueror, etc.)
implementan su propia suite criptográfica
Apache forkquea después
Comentarios de: Generador de Números Pseudo-Aleatorios Predecible en Debian - El Qué y El Cómo (0)
No hay comentarios