Bitcoin : une vulnérabilité à la double dépense découverte dans plusieurs wallets
ZenGo, l’entreprise à l’origine du wallet éponyme, a découvert une faille dans plusieurs wallets Bitcoin. Celle-ci permet à un utilisateur malveillant de faire croire qu’une transaction a été reçue, alors que ce n’est pas le cas.
BigSpender : la faille de double dépense
ZenGo a publié le 2 juillet un rapport de recherche sur son blog, décrivant les différents aspects de la faille. Le rapport arrive 90 jours après la découverte effective de la faille. Cette période a permis aux équipes des wallets touchés de la résoudre avant qu’elle ne soit divulguée.
Ainsi, cette faille permet à un attaquant de faire croire à un utilisateur qu’il a reçu des BTC alors que la transaction a été annulée, comme l’explique le papier.
« Elle permet à un attaquant d’annuler une transaction Bitcoin, mais de la faire apparaître dans le portefeuille vulnérable d’une victime pour un coût d’exécution est assez faible. » explique Oded Leiba dans le rapport
Cette faille touche notamment les wallets Ledger Live, BRD wallet et Edge wallet. Heureusement, ces derniers ont directement réagi et rectifié la faille sur leurs wallets respectifs.
Les détails de BigSpender
Cette faille a été découverte par les équipes de ZenGo alors qu’elles expérimentaient la fonction Replace-by-Fee dans le cadre de la R&D de leur wallet.
Concrètement, la fonction Replace-by-Fee permet de remplacer une transaction en attente de confirmation, par la même transaction en augmentant les frais. Cette fonctionnalité a été imaginée pour pouvoir « forcer » une transaction bloquée dans le mempool.
Malheureusement, de nombreux wallets n’ont pas convenablement implémenté cette fonctionnalité et partent du principe que toute transaction sera éventuellement confirmée. Ceci peut entraîner des situations proches du double spending, où un utilisateur dépense deux fois les mêmes fonds.
En pratique, un attaquant peut exploiter cette faille en envoyant à une victime une transaction avec des frais minimums (pour forcer un temps de confirmation long) en échange d’un bien ou d’un service, puis d’annuler immédiatement la transaction. De son côté, le wallet de la victime de reflétera pas l’annulation et présentera un solde incorrect à la victime, qui croira à juste titre que la transaction a été complétée.
Bien que le résultat puisse ressembler à une attaque dite de double dépense, les wallets incriminés cherchent à relativiser. Du côté de BRD, pas question de parler de doubles dépenses : l’attaque est jugée comme un déni de service (Dos). Pour ce qui est de Ledger, même combat, selon eux, celle-ci relève d’un bug d’interface qualifié « d’astucieuse supercherie ».