Greffe de cœur pour OpenSSL

Transcription

Greffe de cœur pour OpenSSL
Greffe de cœur pour OpenSSL
JSSI
Ministère de la Défense
13 Novembre 2014
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
1 / 27
SSL/TLS
HTTP,SMTP,
FTP,SIP,...
SSL/TLS
Authentification
Confidentialité
TCP/UDP
Intégrité
IP
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
3 / 27
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
4 / 27
OpenSSL : petit rappel...
Création : 23/12/98
Bibliothèque cryptographique + implémentation SSL/TLS
Open source - communauté mondiale
Versions Unix/Linux, Microsoft Windows, OpenVMS
Certification : FIPS 140-2
Utilisation : Apache + Nginx = 66% du marché
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
5 / 27
La sécu dans tout ça
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
6 / 27
Heartbeat
DTLS : TLS sur UDP
RFC 6520 : TLS/DTLS Heartbeat Extension
Objectifs :
◮
◮
Éviter la renégociation : keep-alive
Path MTU discovery pour le DTLS
Type
(1 octet)
Taille du payload
(2 octets)
JSSI (Ministère de la Défense)
payload
Greffe de cœur pour OpenSSL
padding
13 Novembre 2014
9 / 27
Support Heartbeat
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
10 / 27
Heartbleed expliqué par xkcd
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
11 / 27
Heartbleed expliqué par xkcd
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
12 / 27
Le petit bug
/∗ Read t y p e and p a y l o a d l e n g t h f i r s t ∗/
h b t y p e = ∗p++;
n2s ( p , payload ) ;
pl = p ;
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
13 / 27
Le petit bug
/∗ Read t y p e and p a y l o a d l e n g t h f i r s t ∗/
i f ( 1 + 2 + 16 > s−>s3−>r r e c . l e n g t h )
r e t u r n 0 ; /∗ s i l e n t l y d i s c a r d ∗/
h b t y p e = ∗p++;
n2s ( p , payload ) ;
i f ( 1 + 2 + payload + 16 > s−>s3−>r r e c . l e n g t h )
r e t u r n 0 ; /∗ s i l e n t l y d i s c a r d p e r RFC 6520 ∗/
pl = p ;
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
13 / 27
Découverte
Codenomicon et Google
Fuzzing : Codenomicon’s Defensic SafeGuard
openssl-1.0.1[a-f]
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
14 / 27
Chronologie des événements
18 Juin 2010
31 Décembre 2011
Draft RFC 6520
Rajout du code pour Heartbeat
14 Mars 2012
OpenSSL 1.0.1
3 Décembre 2013
Réservation du CVE
5 Avril 2014
7 Avril 2014
8 Avril 2014
11 Avril 2014
17 Juin 2014
JSSI (Ministère de la Défense)
Heartbleed.com enregistré
Annonce de la faille, nouvelle version d’OpenSSL
RHEL, CentOS, Ubuntu, Debian, etc
Vol de la clé privée de Cloudflare
Sites populaires encore exposés > 104
Greffe de cœur pour OpenSSL
13 Novembre 2014
15 / 27
Ré-émission de certificats début Avril
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
16 / 27
Exploitation : envoi de fichier
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
19 / 27
Exploitation : identifiants
r e g e x p = ”e m a i l =([ˆ&/]+)& p a s s w o r d =([ˆ&/]+)/ ”
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
21 / 27
Exploitation : mails (SMTPS)
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
23 / 27
Exploitation : clé privée du serveur
RSA :
◮
◮
On récupère le certificat et donc N = pq
Pour chaque bloc P de |N|/2 octets consécutifs, on regarde si P|N
ECDSA :
◮
◮
On récupère le certificat et donc Ds = [ds ].G
Pour chaque bloc d de |ds | octets consécutifs, on regarde si [d].G = Ds
Grand nombre de réponses nécessaires (plusieurs Go)
”Stresser” le serveur
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
24 / 27
Impact
Quoi ?
Serveurs (HTTP, FTP, SMTP, ...)
VPN
TOR : 380 noeuds bloqués (12%)
Applications mobiles
Set top boxes
Qui ?
∼ 17% des 10000 plus gros sites web
∼ 500000 sites en tout
Facebook, Google, Yahoo, Wikipedia, etc
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
25 / 27
Que faire ?
Utilisateur d’un site affecté
1 Une fois le site sûr : changer de mot de passe
2
Mettre à jour sa liste de révocation de certificats
Entreprise
1
Mise à jour
2
Ré-émission du certificat
3
Imposer le changement de mot de passe pour tous les utilisateurs
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
26 / 27
À l’avenir
Analyse de code : clint, valgrind
Tests :
◮
◮
Unitaires
Fuzzing
Plus de relecteurs
Aider la communauté OpenSSL : 1300 bugs ouverts, 500000 lignes
Réduire la surface d’attaque, enlever des fonctionnalités
LibreSSL, BoringSSL, polarSSL
JSSI (Ministère de la Défense)
Greffe de cœur pour OpenSSL
13 Novembre 2014
27 / 27

Documents pareils