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