Comment j’ai fini par tomber sur la vulnérabilité des clés faibles de Debian
- En mars 2008, l’auteur travaillait chez Engine Yard (EY)
- À l’époque, EY aidait GitHub en lui fournissant gratuitement de l’infrastructure
- Avec la croissance de GitHub, un problème est apparu : les connexions SSH devenaient lentes
- GitHub gérait alors les clés SSH avec la méthode standard, via le fichier
~/.ssh/authorized_keys
- Lorsqu’un utilisateur se connecte, SSH ouvre ce fichier et recherche linéairement une clé correspondant à celle présentée par l’utilisateur
- En général, cela ne pose pas de problème car il n’y a que quelques clés, mais avec beaucoup d’utilisateurs comme sur GitHub, cela devient lent
Décision d’utiliser une base MySQL à la place du fichier authorized_keys
- Après avoir examiné plusieurs solutions, il a été décidé de modifier OpenSSH afin que la recherche de clés se fasse dans une base MySQL
- Cette décision a été prise avec prudence, et beaucoup d’efforts ont été fournis pour ne pas nuire à la sécurité
- Le changement a été déployé début avril 2008, ce qui a résolu le problème de lenteur des connexions SSH
Quelque chose d’étrange se produit
- Un mois plus tard, début mai, un problème survient : certains utilisateurs peuvent accéder en SSH aux dépôts d’autres utilisateurs
- L’enquête révèle que des utilisateurs différents utilisent des clés ayant la même empreinte
- Cela ne devrait pas pouvoir arriver, sauf si les clés sont partagées
- Les utilisateurs disent ne pas se connaître et ne savent pas comment leurs clés auraient pu fuiter
- Le même problème est découvert chez d’autres paires d’utilisateurs
- Le seul point commun est qu’ils utilisent tous des systèmes Debian ou Ubuntu
Identification de la cause
- Le 13 mai 2008, la publication de DSA-1571-1 rend tout clair
- En nettoyant le code de génération aléatoire d’OpenSSL, un mainteneur Debian a réduit par erreur le nombre de clés possibles à environ 32 000
- Comme beaucoup de personnes s’inscrivaient sur GitHub et généraient de nouvelles clés en suivant les bonnes pratiques, des collisions se sont produites
- Par la suite, l’auteur s’est encore davantage impliqué dans ce problème, notamment en utilisant les clés faibles connues pour identifier des autorités de certification affectées
L’avis de GN⁺
- Pour découvrir une vulnérabilité aussi importante, il faut pouvoir se dire « c’est étrange » puis avoir le temps et l’énergie d’enquêter avec ténacité. En général, on n’a pas cette marge, donc il faut aussi de la chance.
- La plupart des gens sont pris par leur quotidien et ont du mal à remonter jusqu’à la cause profonde d’un problème. Redonner cette marge à notre secteur est un enjeu important.
- OpenSSL est l’une des bibliothèques de chiffrement les plus utilisées au monde, donc l’impact d’une telle vulnérabilité est immense. Cela montre bien à la fois les forces et les faiblesses de l’open source.
- Pour prévenir ce type de vulnérabilité, il faut renforcer la revue de code et les audits de sécurité, et examiner avec encore plus de prudence les modifications touchant aux parties critiques. Mais il n’existe pas de méthode parfaite.
- Malgré tout, l’open source garde un avantage : des experts peuvent examiner directement le code et y trouver des problèmes. Avec des logiciels fermés, ce n’est même pas possible.
1 commentaires
Avis Hacker News
~/.ssh/authorized_keys, un type de situation où MySQL pouvait justement excellerpouqà l’aide du PGCD était aussi un épisode intéressant