CVE-2015-0204 – Vulnérabilité FREAK SSL/TLS

mars 12, 2015

Découverte il y a quelques jours, (le 3 mars 2015 précisément) par des chercheurs français de l’INRIA, (cocorico) ainsi qu’une équipe de chez Microsoft,  une sérieuse faille SSL/TLS dénommée « Factoring RSA Export Key » vient de mettre à mal la sécurité de nombreux client openSSL (Android) et SSL/TLS (Apple Safari) et plein d’autres,  permettant a une attaque de type « Man In The Middle », de downgrader une connexion  RSA robuste vers un ‘export-grade’ RSA. Bordel ! Mais comment est ce possible un truc pareil ?

Avant de rentrer dans le vif du sujet, qu’est ce que SSL/TLS et qu’est ce qu’un ‘EXPORT cipher suites’ ?

Développé par Netscape dés 1994, SSL (Secure Sockets Layer) est un protocole de sécurisation d’échanges des données sur internet, situé sur la couche 4 du modèle OSI et comme le précise la RFC2246 son principe est de créer un canal de communication authentifié, protégé en confidentialité et en intégrité (crypté).  Ce n’est qu’en 2001 que l’ Internet Engineering Task Force (un groupe international participant à l’élaboration de standards Internet) a poursuivi le développement du projet en le rebaptisant TLS (Transport Layer Security). On parle souvent indifféremment de SSL ou TLS car ils ne sont que deux variantes d’un même protocole, c’est la raison pour laquelle il est souvent indiquer SSL/TLS. Même si de nombreux reproches en terme de sécurité sont fait au protocole (rappelez vous la merveilleuse faille heartbleed), en pratique SSL/TLS constitue aujourd’hui un moyen moderne de communication, et je préfère de loin utiliser TLS/SSL lors d’un achat en ligne, plutôt que rien.

La ou les choses se compliquent pour notre protocole, c’est qu’au début des années 90, (en 92 pour être précis), des le développement du protocol SSL par Nestcape, les Etats Unis ont imposé une loi sur l’export des systèmes d’encryption, a l’extérieur de leur territoire. En gros et pour résumé simplement : afin de distribuer de la cryptographie hors territoire américain, les entreprises américaines et canadiennes étaient contrainte à l’utilisation d’une encryption RSA maximum de 512bits au quel cas l’encryption serait considérée comme véritable arme de guerre. La cryptographie ayant pris un impact considérable depuis la 2eme guerre mondiale. Ces fameux 512 bits autorisés pour l’export devaient permettre d’assurer d’un coté un niveau d’encryption suffisant dans les échanges et d’un autre de permettre à la NSA d’accéder aux communications.

Aujourd’hui si cette histoire peux paraitre un peu dépassée, (les états unis ayant quelque peu élargis leurs restrictions sur l’export du chiffrement), de plus l’export ciphers est connu pour être cassé, et la plupart des clients web ressent n’offrent par la possibilité « d’export grade cipher » dans la négociation du protocole (même si le serveur support l’export-grade crypto)..

OK tout ça n’est que de la belle théorie et bien souvent la réalité est différente,  mais alors qu’on t ils verticalement découvert nos chercheurs Français de l’Inria ? Ils mettent en avant que certains navigateurs webs modernes TLS (incluant Safari) ainsi que les navigateurs Androids basés sur SSL, ont un bug, acceptant un export grade de clé RSA même si le client n’as pas demandé d’export grade. Ils ont démontré qu’un pirate, dans le cadre d’une attaque type Man In The Middle pouvez forcer le downgrade lors de la connexion.

Explications :

1. Un utilisateur se connecte sur un site, (phase de Hello); et demande une sécurisation RSA standard.
2. Le pirate modifie  la demande et interroge cette fois pour export RSA.
3. Le serveur envoie en reponse un export RSA 512bits, avec la clé
4. Le client accepte la connexion downgradée, (vu que pour lui tout est transparent (et il y a le petit cadenas))
5. le pirate factorise le RSA 512bits, dans le but de décrypter la clé
6. Lorsque le client encrypte la clé secrète vers le serveur , le pirate peux la décrypter et découvrir la clé secrete
7. Désormais c’est OpenBar tout passe en clair pour le pirate.

Oh merde! Mais alors combien de site sont ils FREAKable ? A l’heure ou j’écris ces quelques lignes prés de 36.7% des sites basé sur https, ce qui nous fait tout de même 14 millions de sites! et dans le lot il y a le tout le gratin (NSA.GOV, FBI, AKAMAI..),  ces stats sont régulièrement mis à jour sur le site https://freakattack.com/ ).

je vous avouerais qu’au premier abords, lorsque j’ai lu l’article de Mathew Green à ce sujet, j’étais perplexe notamment sur l’étape 5 de mon explication : « Factoriser une clé RSA 512bits ».

Explications :

– Factoriser une clé RSA doit prendre du temps et surement un peu de moyen (disons que ce n’est pas avec mon pc un peu vieillot que je vais réussir à factoriser une clé RSA en moins d’1 année)

Cependant, en fouillant un peu sur le net, j’ai trouvé que pour un peu plus de 100$, vous pouvez louer chez AMAZON EC2 un cloud vous permettant d’avoir les ressources nécessaires. Nadia Heninger propose même le service ‘factoring as a Service‘. 7h et 30 mins, ainsi que 104 $ ont suffit.

– Mais j’imagine que les serveurs modernes actualisent régulièrement cette clé ? Peut être même à chaque connexion ?

Régénérer des clés RSA à un cout en terme de puissance machine, les serveurs modernes ne change pas la clé a chaque connexion, et dans les faits, Apache mod_ssl par défaut, crée une clé RSA export au démarrage du serveur et la réutilise tout simplement.

Une petite Proof Of Concept par l’image vaux parfois mieux qu’un long baratin :), je vous invite à regarder cette vidéo :

freak3

 

Envie soudaine de savoir si votre serveur est vulnérable a la faille CVE-2015-0204 – FREAK SSL/TLS ? Facile, rendez vous tout simplement sur ce site :

freak1

Ou sinon directement en ligne de commande  :  % openssl s_client -connect reversing:443 -cipher EXPORT

freak2

 

Est ce patché ? semble t-il que oui, due moins dans la version la plus récente d’openssl (janvier 2105). Pour Apple et les autres, un correctif devrait bientôt voir le jour. Vous devez d’ailleurs peut être penser que cela n’est finalement qu’une faille basique comme il en existe tant d’autres, que sa mise en application est fastidieuse et que les patchs vont se succéder, c’est vrai. Mais la moralité est ici tout autre. Nous faisons face à une faille obscure datant d’un choix politique et militaire des années 90, et à l’heure ou Edward Snowden a tenté de réveiller nos consciences sur l’importance de notre liberté et de notre vie privée, cette histoire devrait servir de leçon aux futurs décisions politiques .. m’en j’en doute fortement. En tout cas merci de m’avoir suivi dans cette explication de la faille FREAK SSL/TLS, et à très bientôt pour de nouvelles aventures.