Un générateur de nombres aléatoires défectueux dans la bibliothèque CryptoJS a rendu les phrases de récupération d'au moins cinq portefeuilles crypto suffisamment prévisibles pour être reconstituées par des attaquants, contribuant à au moins 5,69 millions de dollars de vols retracés depuis mai. La société de sécurité blockchain Coinspect a retracé trois vagues d'attaques sur les portefeuilles affectés, le plus gros vidage en une seule journée, de 3,14 millions de dollars, ayant eu lieu le 27 mai. La vulnérabilité, introduite en juin 2014, a réduit les espaces de recherche effectifs d'un théoriquement incassable 2^128 ou 2^256 à environ 2^39 et 2^47, rendant possible l'énumération des phrases affectées, leur dérivation en adresses blockchain et la vérification des fonds.
Pourquoi c'est important
La faille expose une catégorie de risque particulièrement difficile à annuler une fois déclenchée. Une phrase de récupération générée avec un aléa insuffisant emporte la faiblesse avec elle : patcher l'application ne régénère pas la phrase, et importer cette phrase dans un portefeuille matériel ne fait que déplacer le secret vulnérable. NanChat a déjà demandé aux utilisateurs ayant créé des portefeuilles avant la version 1.3.0 de les considérer comme compromis et de migrer vers une nouvelle phrase. RRWallet et Milo ont été purement et simplement interrompus, laissant les utilisateurs affectés sans voie de mise à jour directe sur l'application d'origine.
Impact sur le marché
Le chiffre de 5,69 millions de dollars est un seuil plancher plutôt qu'une mesure des pertes totales, puisque l'analyse de Coinspect a couvert plus de 2 000 seeds avec de l'activité sur Bitcoin, Ethereum, Tron, Rootstock et Polygon. L'attaque semble également se poursuivre : une troisième vague entre le 20 et le 21 juillet a vidé environ 40 000 dollars dans le sous-ensemble des mnémoniques chinoises. Coinspect a publié un outil appelé Unlukey qui permet aux utilisateurs de vérifier leurs adresses publiques par rapport aux jeux de données exposés connus, mais un résultat propre confirme seulement que l'adresse ne figure pas dans le set publié, et non que la phrase sous-jacente est sûre. Pour les portefeuilles dont la compromission est confirmée, le remède consiste à générer une nouvelle phrase de récupération à partir d'une source fiable et à transférer les fonds immédiatement.
Questions fréquemment posées
-
Quels portefeuilles crypto ont été affectés par la faille des phrases de récupération prévisibles ?
La société de sécurité blockchain Coinspect a identifié RRWallet, Bexo Wallet, NanChat, Bitcoin Libre et Milo comme utilisant la fonction vulnérable CryptoJS.lib.WordArray.random() pour générer certaines phrases de récupération.
-
Quel montant a été volé dans les attaques sur les phrases de récupération des portefeuilles ?
Coinspect a retracé au moins 5,69 millions de dollars de vols à travers trois vagues d'attaques depuis mai, avec le plus gros vidage en une seule journée, de 3,14 millions de dollars, le 27 mai. Ce chiffre est un seuil plancher, pas un total.
-
Pourquoi cette vulnérabilité de portefeuille est-elle difficile à corriger ?
Une phrase de récupération générée avec un aléa insuffisant emporte la faille avec elle. Patcher l'application du portefeuille ne régénère pas la phrase, et l'importer dans un portefeuille matériel ne fait que déplacer le secret vulnérable vers un nouvel emplacement.
-
De combien la faille a-t-elle réduit l'espace des clés ?
Coinspect a découvert que la fonction vulnérable de CryptoJS pouvait réduire les espaces de recherche effectifs, censés contenir 2^128 ou 2^256 possibilités, à environ 2^39 et 2^47, rendant possible l'énumération des phrases affectées.
-
Que peuvent faire les utilisateurs de portefeuilles affectés ?
Pour les portefeuilles dont la compromission est confirmée, le remède consiste à générer une nouvelle phrase de récupération à partir d'une source fiable et à transférer les fonds qu'elle contrôle. L'outil Unlukey de Coinspect peut vérifier les adresses publiques par rapport aux jeux de données exposés connus, mais un…