Generador de Números Pseudo-Aleatorios Predecible en Debian

Anuncio
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
1 Debian
Project
2 Si6 Labs - CITEFA
(Instituto de Investigaciones Cientı́ficas y Técnicas para la Defensa, Argentina)
EKOPARTY 2008
Buenos Aires, Argentina
2 y 3 de Octubre de 2008
Introducción
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
2 / 37
Introducción
I NTRODUCCI ÓN 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 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
ekoparty 2008
3 / 37
Introducción
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.)
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
ekoparty 2008
4 / 37
Introducción
PAQUETES A FECTADOS
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
5 / 37
Las Crónicas de Debian OpenSSL
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
6 / 37
Las Crónicas 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) 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
ekoparty 2008
7 / 37
Las Crónicas 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
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
ekoparty 2008
8 / 37
Las Crónicas 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 Crónicas 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 Crónicas de Debian OpenSSL
E L FAMOSO PARCHE
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
11 / 37
Análisis de OpenSSL
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
12 / 37
Análisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
Análisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
Análisis de OpenSSL
E L PRNG DE O PEN SSL
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
13 / 37
Análisis de OpenSSL
E JEMPLO
E XAMPLE
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
14 / 37
Explotación
Autenticación
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
15 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
16 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
Explotación
Autenticación
AUTENTICACI ÓN POR DESAF ÍO
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
17 / 37
Explotación
Man in the middle
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
18 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
Man in the middle
AUTENTICACI ÓN POR CERTIFICADOS
ATAQUE A LOS CERTIFICADOS (M IT M)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
19 / 37
Explotación
DH
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
20 / 37
Explotación
DH
ACUERDO DE L LAVE D IFFIE -H ELLMAN
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
21 / 37
Explotación
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
Explotación
DH
ACUERDO DE L LAVE D IFFIE -H ELLMAN
ATAQUE POR FUERZA BRUTA
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
22 / 37
Explotación
DH
DEMO: W IRESHARK SSL D ISSECTOR
Gracias Paolo Abeni
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
23 / 37
Explotación
DSA
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
Autenticación
Man in the middle
DH
DSA
Summary
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
24 / 37
Explotación
DSA
F IRMADO DSA
Los datos públicos son: p, q, g, y = g x mod p
Los datos privados son: x
Para firmar un mensaje m:
1
2
Alicia genera un número 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 parámetros 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
Explotación
Summary
M ANUAL PARA LA CONQUISTA DEL U NIVERSO
1
2
3
4
Elegir una aplicación
Seleccionar o averiguar el algoritmo que utiliza
Generar el espacio de (215 − 1) × 3 claves
A bruteforcear!:
Autenticarte a un servidor utilizando llaves asimétricas (requiere
que el servidor tenga algún usuario que se autentique vı́a
passwordless y que alguna de esas llaves sea débil)
Realizar un ataque MitM utilizando un certificado de servidor
clonado (requiere un certificado débil y un escenario donde sea
posible un MitM)
Descifrar sesiones donde alguna de las partes sea un Debian
vulnerable
Atacar criptografı́a simétrica conexiones/storage/etc donde la clave
esté generada al azar (requiere un sistema vulnerable en el
momento de generación de dicha clave)
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
Explotación
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)
SSH tools de Yoann Guillot and Raphaël 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. Qué hacer y cómo afecta a cada paquete
(http://wiki.debian.org/SSLkeys)
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
27 / 37
Explotación
Summary
C ONTRAMEDIDAS
Actualizar libssl, openssl y openssh (¿Todavı́a no lo hiciste?)
Buscar y regenerar todas las llaves débiles.
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 opción PermitBlacklistedKeys=no en el OpenSSH
de Debian
No hay nada que puedas hacer por el pasado, la leche ya
está derramada
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
28 / 37
Repercusiones
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
5
R EPERCUSIONES
6
C ONCLUSIONES
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
29 / 37
Repercusiones
C ERTIFICADOS A FECTADOS
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
ekoparty 2008
30 / 37
Repercusiones
OTRAS RAREZAS SOBRE CERTIFICADOS SSL
Sólo alrededor del 20 % de los certificados débiles 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 débiles en el
mundo? (según Netcraft, 0.5 % de los certificados son EV)
La herramienta http://www.heise-online.co.uk/
networks/tools/chksslkey encontró certificados débiles en
4577 hosts únicos (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
investigación, cifras y análisis
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
31 / 37
Repercusiones
R EPERCURSIONES EN D EBIAN
Este es mi (Luciano Bello) punto de vista. No necesariamente representa la opinión de otros desarrolladores de Debian o la del
Proyecto Debian. Mucho de este trabajo está 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
estándares de calidad
Algunas veces es difı́cil tener una buena comunicación con
upstream
La detección del problema no resulta taaaan obvia (estuvo 2 años
sin ser descubierto)
Es humanamente imposible auditar todo el código
“Sólo 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
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 públicos
Nuevo formato v3 de paquete de paquete
Encabezados estándares en los parches para administrarlos
automáticamente?
patches.debian.org?
Seguir las divergencias como bugs en el BTS?
Después de todo, es un problema técnico, de polı́ticas o social?
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
33 / 37
Conclusiones
1
I NTRODUCCI ÓN
2
L AS C R ÓNICAS DE D EBIAN O PEN SSL
3
A N ÁLISIS DE O PEN SSL
4
E XPLOTACI ÓN
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 código fancy, especialmente cuando lo que aporta es
mı́nimo
El código seguro tiene que estar bien organizado
¡Comenta tu código como si otros (incluso tú) fueran a leerlo!
Pregunta con detalles. “Más” es mejor que “sólo lo suficiente”
Si muchas personas preguntan siempre lo mismo, tal vez se trate
de algo que requiera atención
Involúcrate en los parches de tu down/upstream: puede que
obtengas mejoras
“Dejar tu código en un FTP server” no es lo mismo que “compartir
tu código”
¿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 <paolo.abeni at email.it> por su ayuda en
la modificación a Wireshark
Bodo Möller <bodo at openssl.org> por su ayuda para
entender mejor el PRNG de OpenSSL
Ignacio “Nacho” Marambio Catán <ignacio.marambio at
gmail.com> en las etapas iniciales
Florian Weimer <fw at deneb.enyo.de> por su atención y
trabajo durante el anuncio del advisory
Kragen Javier Sitaker <kragen at pobox.com> por la ayuda
en el análisis del código y las correcciones de nuestro pobre
inglés
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
<luciano at debian.org>
Maximiliano Bertacchini
<mbertacchini at citefa.gov.ar>
P OWERED BY LATEX+ BEAMER
(Debian, Si6-CITEFA)
Debian OpenSSL
ekoparty 2008
37 / 37
Descargar