Robert J. Hansen, mainteneur de la FAQ du projet GnuPG a tiré la sonnette d'alarme, OpenPGP et ses implémentations, subissent actuellement une attaque exploitant une vulnérabilité qu'il va être compliqué de colmater. A ce jour, même les conséquences sont mal mesurées et il pèse un sérieux risque de voir les systèmes de packages logiciels GNULinux et xBSD attaqués puisqu'ils utilisent largement OpenPGP et que des distributions, comme Debian ont leur serveur de clés faisant partie intégrante du réseau de serveur de clés SKS.
L'attaque aurait débuté fin juin, elle visait initialement deux contributeurs importants de la communauté OpenPGP et consistait en l'envoi massif d'informations liées à un certificat et exploitant un défaut du protocole afin d'empoisonner les certificats des cibles. L'import de ces certificats empoisonnés casse littéralement l'installation d'OpenPGP et surtout, les certificats empoisonnés se retrouvent sur le réseau de serveurs de clés SKS qui fonctionne comme un annuaire. La crainte de voir cette attaque se généraliser à de nombreuses autres cibles est donc fondée et doit être jugée comme une menace sérieuse.
Premier problème, une fois un certificat en place sur les serveurs de clés, le réseau qui les compose ne peut les révoquer dans un délai convenable. Et avant que la communauté OpenPGP ne puisse y remédier, Robert J. Hansen prévient que le mieux reste d'éviter d'interroger les serveurs de clés.
La question que tout le monde se pose est évidemment "comment en sommes nous arrivés là ?" Comment une brique si sensible du Net se retrouve avec une vulnérabilité si compliquée à colmater ?
Robert J. Hansen explique qu'au début des années 1990 des régimes répressifs tentaient de forcer des opérateurs de serveurs de clés à remplacer certains certificats par les leurs. Décision a alors été prise que plus aucun certificat ni les informations s'y rapportant ne seraient alors effacés. Ils pourraient être modifiés, mais jamais effacés. Cette persistance est une première vulnérabilité dans le design. Dés la fin des années 2000, la communauté OpenPGP était consciente que ce choix poserait tôt ou tard un problème.
Une brique logicielle du serveur de clés SKS permettant d'effectuer les rapprochements entre clés et informations associées et l'oeuvre de Yaron Minsky alors doctorant est un travail de thèse. Le hic, c'est que ce travail de thèse a été déployé en production, "dans le monde réel". Second hic, cette brique logicielle a été écrite en OCaml , un langage relativement exotique, ce qui pose de fait un problème supplémentaire de maintenabilité. Personne ne s'est à ce jour attaqué à une réécriture vu la complexité du code puisqu'il s'agit initialement d'un travail de recherche de doctorant, par définition complexe à appréhender.
Robert J. hansen avertit qu'il faut cesser d'utiliser le réseau de serveur de clés SKS pour le moment et la solution palliative proposée est d'éditer son fichier gpg.conf pour retirer toutes les lignes contenant un keyserver puis d'éditer le dirmngr.conf et ajouter une ligne correspondant à un nouveau serveur de clé expérimental résistant à cette attaque et hors du réseau de serveurs de clés :
keyserver hkps://keys.openpgp.org
Pour conclure, cette mésaventure et ses conséquences sont là pour nous rappeler que les choix de design applicatif et la maintenabilité d'un code sont des choses trop sérieuses pour laisser libre cours à de la complexité ou de l'exotisme.