Le portefeuille Bitcoin Electrum corrige une faille critique qui détournait les fonds vers des attaquants
Electrum a publié le 24 octobre la version 4.8.3 de son portefeuille Bitcoin, qui corrige une faille critique. Des serveurs malveillants pouvaient y injecter des transactions falsifiées et convaincre les utilisateurs d'envoyer des fonds à des adresses contrôlées par les attaquants. Un utilisateur au moins a confirmé une perte le 18 octobre, après avoir acquitté des frais supplémentaires sur une transaction modifiée par le serveur. Toutes les versions antérieures à la 4.8.3 sont concernées ; la mise à jour est désormais téléchargeable.
Le correctif vérifie la signature des entrées du portefeuille avant d'afficher les transactions non confirmées. Les transactions entrantes envoyées par des tiers restent, elles, non vérifiées.
Electrum figure parmi les plus anciens portefeuilles logiciels Bitcoin. L'attaque exploitait son modèle de confiance appliqué aux transactions non confirmées. Lorsqu'un utilisateur diffuse un paiement via un serveur compromis, celui-ci peut bloquer la transaction légitime et injecter une transaction conflictuelle falsifiée — affichant l'adresse de sortie de l'attaquant et des frais nuls — pour faire croire que le paiement est bloqué. Electrum ne vérifiant pas les signatures des transactions non confirmées reçues du serveur, cette transaction falsifiée apparaît dans l'historique du portefeuille comme légitime. Quand l'utilisateur relève les frais sur ce paiement apparemment en panne, il signe et diffuse une nouvelle transaction valide dont l'adresse de sortie appartient à l'attaquant. Le paiement d'origine n'a jamais été envoyé : la transaction aux frais relevés est la première à atteindre le réseau, et elle paie l'attaquant.
Selon l'annonce du développeur d'Electrum SomberNight, les attaquants peuvent modifier l'adresse de sortie d'une transaction falsifiée pour qu'elle corresponde aux quatre derniers caractères de l'adresse visée par l'utilisateur. Quiconque ne vérifie que la fin d'une longue adresse Bitcoin y verra une correspondance apparente. « Certains serveurs mènent activement cette attaque », indique l'annonce, un point étayé par deux signalements d'utilisateurs.
L'utilisateur dannydeezy a été le premier à signaler un comportement suspect d'un serveur, le 11 octobre ; aucun fonds n'a été perdu, les transactions altérées ne s'étant pas propagées au-delà du serveur local. Le second, RajuK12, a fait état d'une perte confirmée le 18 octobre, après avoir payé des frais supplémentaires pour corriger une transaction altérée.
Le correctif de la version 4.8.3 ferme un vecteur d'attaque majeur en vérifiant les signatures cryptographiques des entrées du portefeuille avant d'ajouter une transaction non confirmée à l'historique local. Le serveur ne peut plus injecter de transactions falsifiées impliquant l'adresse de l'utilisateur sans fournir de signatures valides, impossibles à contrefaire. Le correctif a été consigné dans le dépôt de code le 23 octobre et le binaire publié le lendemain. Les transactions entrantes de tiers — celles dont aucune entrée n'appartient au portefeuille de l'utilisateur — sont toujours acceptées sans vérification de signature. SomberNight a reconnu cette lacune dans son annonce et indiqué qu'un travail supplémentaire reste nécessaire pour la combler.
Electrum a déjà été confronté à ce type d'incident. En 2018, une attaque malveillante s'appuyait sur des serveurs falsifiés pour diffuser de fausses notifications de mise à jour ; en 2020, ces attaques auraient dérobé 25 millions de dollars aux utilisateurs d'Electrum. Le modèle de serveur ouvert d'Electrum — chacun peut exploiter un nœud — rend ces attaques possibles. Les utilisateurs connectés uniquement à leur propre serveur ne sont pas affectés. Ceux qui ne peuvent pas mettre à jour immédiatement doivent vérifier manuellement l'adresse de sortie et le montant avant de signer toute transaction. Electrum 4.8.3 est disponible sur electrum.org et sur le GitHub du projet.