Un portefeuille matériel est censé être l'endroit le plus sûr pour une clé privée. Pendant sept ans, une application très utilisée au-dessus des appareils Ledger a discrètement sapé cette promesse.
La faille se logeait dans l'application Ledger pour Zilliqa, disponible depuis 2019 pour signer les transactions natives, non compatibles EVM. À chaque signature, le programme prenait les mauvais 32 octets de données : il conservait huit octets de remplissage technique au lieu de huit octets de véritable aléa. Cette valeur aléatoire s'appelle un nonce, censé être imprévisible à chaque fois. Quand ce n'est pas le cas, il suffit de comparer plusieurs signatures d'un même compte pour reconstruire mathématiquement la clé privée — sans malware, sans accès à l'appareil, juste avec des données publiques déjà présentes sur la blockchain. Selon Zilliqa, environ cinq signatures concernées suffisent, et le calcul prend quelques secondes sur un ordinateur ordinaire.
Le 19 juillet, la plateforme KuCoin a repéré une activité suspecte sur le réseau et lancé une enquête. La cause a été confirmée deux jours plus tard, et Zilliqa a rendu les détails publics le 22 juillet. Entre-temps, un portefeuille froid d'une bourse partenaire a été vidé d'un montant non divulgué de ZIL. Zilliqa a immédiatement suspendu toutes les transactions natives sur l'ensemble du réseau — les transferts compatibles EVM n'ont jamais été touchés — et Upbit a gelé les dépôts et retraits de ZIL. Le jeton a perdu environ 17 à 19% sur la semaine, autour de 0,0024 dollar.
Les appareils Ledger eux-mêmes n'ont jamais été compromis : le bug vivait dans le code d'une application tierce, pas dans la puce sécurisée. Maigre consolation pour qui a signé des transferts natifs de ZIL via Ledger depuis 2019 : une fois une signature inscrite sur la blockchain, elle y reste pour toujours, et une application corrigée ne peut pas annuler une clé déjà exposée. La seule vraie solution, selon Zilliqa, est de transférer les fonds vers une nouvelle adresse.
L'affaire rappelle une évidence : un portefeuille matériel ne protège que ce que le logiciel qui tourne dessus fait correctement, et si ce logiciel se trompe, une puce parfaite n'y change rien.



