mercredi 7 octobre 2009

Certificats et \0

Lors de la blackhat, Moxie Marlinspike et Dan Kaminsky ont proposé un nouveau moyen pour abuser les clients effectuant des vérifications sur des certificats.

En effet, un client comme un navigateur web vérifie que le nom de domaine sur lequel il est connecté correspond bien au CN du certificat.

Il a été montré à la blackhat qu'il est possible de faire signer par des autorités des certificats s'appelant:
victime.com\x00un.autre.nom

Le client peut alors lire le CN comme "victime.com".
A l'époque, à peu près tous les navigateurs webs étaient victimes de cette attaque.
Firefox a depuis été patché.

Sur une mailing list a été posté un certificat (et sa clé privée, non protégée par mot de passe) particulièrement percutant puisque son sujet est
Subject: C=US, CN=*\x00thoughtcrime.noisebridge.net, ST=California, L=San Francisco, O=Noisebridge, OU=Moxie Marlinspike Fan Club

C'est à dire qu'il est wildcard donc valide pour tous les domaines! Ainsi, n'importe quel phisheur peut utiliser ce certificat pour faire passer son site web pour n'importe qui.

Sa mise en oeuvre est très simple (j'ai construit la maquette avec un serveur web apache sous linux en moins de 10mn) et je confirme qu'avec un Firefox 2.0.0 (non patché) la connexion se fait sans warning, sans aucun message:
Et les informations sont les suivantes:
Et les détails:


La connexion avec un firefox 3.5 signale bien l'erreur, tout comme firefox 3.0.14 présenté ici (le CN est affiché complet, avec le \00):
La sortie de ce certificat "wildcard" n'a pas fait tellement de vague.

Sur ces entrefaits, Moxie Marlinspike décide à son tour de produire un certificat contenant un caractère NUL contrefaisant un unique site, paypal:
www.paypal.com\x00unsite

De manière étrange, on lit des commentaires offusqués, par exemple de la part de Paypal (le compte Paypal de Moxie a d'ailleurs été suspendu :) ), et d'autres journaux en ligne, en voici un parmi tant d'autres http://www.theregister.co.uk/2009/10/06/paypal_banishes_ssl_hacker/.

Le traitement et la digestion de l'information par le web me surprendront toujours. Comment se fait il qu'une bombe comme ce certificat wildcard ne fasse pas parler de lui, alors que le certificat de paypal soit présenté comme une crise majeure? Un élément de réponse concerne l'utilisation des wildcards par IE et la microsoft API je pense, cf le papier de Marlinspike . Pour faire bref, seule la lib NSS utilisée par la suite Mozilla se fait abuser par un wildcard *. Internet Explorer lève une alerte tout de même.

EDIT:
A la réflexion, je pense que le point est précisément celui-ci. D'un côté, nous disposons d'un arme de phishing massive (la wildcard) mais qui ne touche qu'une famille de navigateur web qui est patchée depuis longtemps. J'ai d'ailleurs eu du mal à retrouver une ancienne version de firefox.
D'un autre côté, on a une faille massivement disponible (tout ce qui touche la crypto API de microsoft) mais dont la mise en oeuvre est compliquée, et coûte cher: il faut créer le certificat, générer la demande, payer pour se faire certifier par une autorité, etc.. Un certificat avec NUL devient subitement d'une grande valeur, même s'il ne vise au final que peu de monde

Aucun commentaire:

Enregistrer un commentaire