Les pirates ont utilisé la fonctionnalité de protocole OpenPGP, connue depuis plus de dix ans.
Nous vous disons quelle est l'essence et pourquoi ils ne peuvent pas la fermer.
/ Unsplash / Chunlea JuProblèmes de réseau
À la mi-juin, des inconnus ont
attaqué un réseau de
serveurs de clés cryptographiques
SKS Keyserver , construit sur la base du protocole OpenPGP. Il s'agit de la norme IETF (
RFC 4880 ), qui est utilisée pour crypter les e-mails et autres messages. Le réseau SKS a été créé il y a trente ans pour distribuer des certificats publics. Des outils tels que
GnuPG pour crypter les données et créer des signatures numériques électroniques y sont connectés.
Les pirates ont compromis les certificats de deux responsables de projet GnuPG - Robert Hansen et Daniel Gillmor. Le téléchargement d'un certificat corrompu depuis le serveur provoque le plantage de GnuPG - le système se bloque simplement. Il y a des raisons de croire que les attaquants ne s'arrêteront pas là et que le nombre de certificats compromis ne fera qu'augmenter. Actuellement, l'ampleur du problème reste inconnue.
Essence de l'attaque
Les pirates ont exploité une vulnérabilité dans le protocole OpenPGP. Il est connu de la communauté depuis des décennies. Même sur GitHub,
vous pouvez trouver les exploits appropriés. Mais jusqu'à présent, personne n'a revendiqué la responsabilité de fermer le «trou» (nous en parlerons plus en détail ci-dessous).
Quelques sélections de notre blog sur Habré:
Selon la spécification OpenPGP, n'importe qui peut ajouter des signatures numériques aux certificats pour confirmer leur propriété. De plus, le nombre maximum de signatures n'est en aucun cas réglementé. Et ici, un problème se pose - le réseau SKS vous permet de placer jusqu'à 150 000 signatures pour un certificat, mais GnuPG ne prend pas en charge un tel numéro. Ainsi, lors du chargement d'un certificat, GnuPG (comme, incidemment, d'autres implémentations OpenPGP) se bloque.
Un des utilisateurs a
mené une expérience - l'importation d'un certificat lui a pris environ 10 minutes. Le certificat comptait plus de 54 mille signatures et son poids était de 17 Mo:
$ gpg --homedir=$PWD --recv C4BC2DDB38CCE96485EBE9C2F20691179038E5C6 gpg: key F20691179038E5C6: 4 duplicate signatures removed gpg: key F20691179038E5C6: 54614 signatures not checked due to missing keys gpg: key F20691179038E5C6: 4 signatures reordered gpg: key F20691179038E5C6: public key "Daniel Kahn Gillmor <dkg@fifthhorseman.net>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 $ ls -lh pubring.gpg -rw-r--r-- 1 filippo staff 17M 2 Jul 16:30 pubring.gpg
La situation est aggravée par le fait que les serveurs de clés avec OpenPGP ne suppriment pas les informations de certificat. Cette opération permet de suivre la chaîne de toutes les actions avec des certificats et d'empêcher leur substitution. Par conséquent, il est impossible d'éliminer les éléments compromis.
En fait, le réseau SKS est un grand «serveur de fichiers» sur lequel n'importe qui peut écrire des données. Pour illustrer le problème, l'année dernière, un résident de GitHub a
créé un système de fichiers qui stocke des documents sur un réseau de serveurs de clés cryptographiques.
Pourquoi la vulnérabilité n'est pas corrigée
Il n'y avait aucune raison de supprimer la vulnérabilité. Auparavant, il n'était pas utilisé pour mener des attaques de pirates. Bien que la communauté informatique
demande depuis longtemps aux développeurs SKS et OpenPGP de prêter attention au problème.
Pour être honnête, il convient de noter qu'en juin, ils ont toujours
lancé le serveur de clés
experimental.openpgp.org . Il met en œuvre une protection contre ces types d'attaques. Cependant, sa base de données est entièrement remplie et le serveur lui-même ne fait pas partie de SKS. Par conséquent, le temps passera avant de pouvoir être utilisé.
/ Unsplash / Rubén BagüésQuant au bogue du système d'origine, le mécanisme de synchronisation compliqué empêche de le corriger. Le réseau de serveurs clés a été à l'origine écrit comme preuve de concept pour défendre une thèse de doctorat par Yaron Minsky. De plus, un langage OCaml assez spécifique a été choisi pour le travail. Selon
le responsable Robert Hansen, la compréhension du code est difficile, donc seules des corrections mineures y sont apportées. Pour modifier l'architecture SKS, vous devrez la réécrire à partir de zéro.
En tout cas, GnuPG ne pense pas que le réseau sera jamais réparé. Dans un article sur GitHub, les développeurs ont même écrit qu'ils ne recommandaient pas de travailler avec SKS Keyserver. En fait, c'est l'une des principales raisons pour lesquelles ils ont initié la transition vers le nouveau service keys.openpgp.org. Nous ne pouvons que suivre l'évolution des événements.
Quelques documents de notre blog d'entreprise: