OpenSea a remboursé 750 Ethereum, soit environ 1,8 million de dollars, aux utilisateurs qui ont accidentellement vendu des NFT de valeur à un prix bien inférieur à celui du marché grâce à un exploit impliquant des « listes inactives ».

Récemment, plusieurs utilisateurs de la principale place de marché de NFT se sont plaints que leurs NFT de premier ordre, tels que ceux appartenant à la collection Bored Ape Yacht Club (BAYC), avaient été achetés à d’anciens prix d’inscription bon marché. Ces inscriptions n’ont jamais été annulées sur la blockchain, même si l’interface utilisateur d’OpenSea laissait entendre qu’elles l’avaient été.

Comment cela s’est-il produit ?

Des acheteurs avisés ont utilisé des services comme Tornado Cash pour transférer de l’argent dans des portefeuilles de cryptomonnaies sans en révéler la source et utiliser ces fonds pour acheter des NFT à d’anciens prix d’inscription.

Cet exploit n’est pas nouveau. La blockchain Ethereum exige que les utilisateurs paient des frais de gaz pour exécuter des transactions, y compris pour annuler une inscription sur OpenSea qui n’a pas encore expiré. Mais avant qu’OpenSea ne mette en place des dates d’expiration sélectionnables pour les annonces, de nombreux détenteurs de NFT avaient des annonces inactives qui n’avaient pas de date d’expiration et devaient donc être annulées manuellement en payant des frais de gaz. Les annonces expirées sont bien, mais les annonces inactives présentent un risque.

Dans un effort pour éviter de payer les frais de gaz Ethereum, qui peuvent souvent atteindre des centaines de dollars pour une seule transaction, certains propriétaires de NFT ont trouvé une faille. S’ils transféraient le NFT vers un portefeuille secondaire, puis de nouveau vers le premier portefeuille, la liste disparaissait sur l’interface utilisateur d’OpenSea.

Mais en réalité, la liste était simplement passée de « active » à « inactive« . Et les annonces inactives peuvent toujours être achetées par des utilisateurs qui interagissent directement avec les contrats intelligents eux-mêmes, et non avec l’interface utilisateur d’OpenSea.

Opensea rembourse les utilisateurs lésés

Certains détenteurs de BAYC ont été informés par OpenSea en début de semaine qu’ils seraient remboursés en Ethereum pour leur perte. Tballer, qui a perdu Ape #9991 pour 0,77 ETH (environ 1 700 $), a déclaré le 25 janvier qu’il avait l’impression d’avoir reçu une « réponse plutôt lente » de la part d’OpenSea, mais qu’il était « heureux davoir été rappelé ».

Le singe de Tballer semble maintenant appartenir à Juan Fdez, qui a acheté deux des singes qui ont été vendus par inadvertance. Fdez détient également le BAYC #8924, qui avait été échangé pour 6,66 ETH (environ 17 000 $).

Si Tballer veut récupérer son Ape, il devra dorénavant payer 130 ETH (330 000 $).

Le 26 janvier, OpenSea a envoyé un e-mail aux propriétaires de NFT dont les listes sont inactives, leur demandant de « procéder d’urgence à l’annulation de toute liste inactive.« 

Ces instructions ont suscité quelques inquiétudes, car le collectionneur NFT Dingaling a fait valoir dans un long fil de discussion sur Twitter que l’e-mail était « incroyablement irresponsable de leur part et rendait les choses 100x pires. Cela rend en fait l’exploit beaucoup plus facile à exécuter ».

Maladresse d’Opensea

En demandant simplement aux utilisateurs d’annuler les listes inactives une par une sur le site Web d’OpenSea, il a en fait permis aux pirates d’effectuer des achats sur d’autres listes inactives. Par exemple, le détenteur du Mutant Ape Yacht Club, Swolfchan, a conservé son Ape dans son portefeuille principal et a annulé une liste inactive de 15 ETH. Ensuite, il a prévu d’annuler un listing de 6 ETH.

Mais entre le temps qu’il a fallu à Swolfchan pour annuler la première liste inactive et passer à la seconde, un pirate a acheté son Ape au prix de 6 ETH.

M. Dingaling a expliqué que si Swolfchan avait transféré l’Ape vers un autre porte-monnaie, puis annulé toutes les inscriptions, avant de déplacer à nouveau l’Ape vers le porte-monnaie principal, ils auraient été en sécurité. Mais OpenSea ne semble pas avoir fourni ces instructions dans son premier courriel.

Le cofondateur d’OpenSea, Alex Atallah, a déclaré à Dingaling le 27 janvier que « la résolution de ce problème est la première priorité de notre entreprise. Nous avons une équipe qui y travaille et qui met en place une contre-mesure dès maintenant« .

Quant à ce que ces solutions pourraient être, le directeur technique de Ledger, Charles Guillemet, a quelques idées : « Une conception différente aurait pu éviter un tel problème« , a-t-il déclaré. Guillemet soutient que l’interface utilisateur sur OpenSea aurait dû être plus claire pour les utilisateurs. « Transférer le NFT ne devrait pas supprimer l’ordre de vente de l’interface utilisateur« , a-t-il déclaré.