Logo Zéphyrnet

Sur la sécurité du clip de Booba et des NFT | registre

Date :

Le 3 novembre 2021, Booba (le rappeur français qui a créé le label La Piraterie Musique) mettre un lot de 5 NFT mise en vente, pour un total de 5000 de chacune de ces cartes animées. La totalité de ces NFT ont été vendus en quelques jours pour 150 ETH (0.006 ETH chacun), soit plus de 700.000 XNUMX$ à cette date. En bonus, les heureux propriétaires de l'un de ces NFT ont été autorisés à voir le clip exclusif TN depuis l' 8 Novembre 2021.

Les rappeurs m'envient, sont tous en galère.
Boulbi, Côté Ouest

Nous étions un peu curieux et nous nous demandions comment le clip était protégé et si nous pouvions en profiter même si nous n'en achetions pas. NFTs.

Comment fonctionne la protection des vidéos musicales ?

Pour voir la vidéo, les propriétaires de NFT doivent visiter la page /mon-nft et utilisez leur portefeuille crypto (tel que Metamask ou WalletConnect) pour signer le message Ethereum "Pour accéder à TN, merci de bien vouloir signer ce message" avec le même portefeuille que celui utilisé pour acheter les NFT. Une fois signée, une requête POST avec un corps JSON suivant ce format est envoyée par le navigateur web à un service web hébergé sur AWS :

Quelques tests montrent que les messages différents de celui par défaut ne sont pas rejetés tant qu'ils sont codés en JSON. Par exemple: [1337] ainsi que  "blah" sont considérés comme valides, cependant les messages qui ne sont pas en JSON déclenchent un internal error instantanément.

Si la signature associée à l'adresse Ethereum (wallet) et message sont valides, le serveur vérifie que le wallet a bien acheté un des NFT, sinon l'erreur Tu ne possèdes aucun des NFTs est retourné. Cette dernière étape prend un peu plus de temps, ce qui nous permet de formuler l'hypothèse suivante. Si l'on trouve sur Internet une clé publique qui remplit ces 2 conditions :

  • La clé publique a signé un message JSON et la signature associée est publique ;
  • Le portefeuille a acheté au moins un des NFT.

il pourrait être possible de relire le message et la signature sur le serveur AWS pour récupérer le clip vidéo.

La BOOBA TN NFT est également un jeton ERC-20 (B2O_TN) créé par le contrat intelligent 0x3b73…94dd. Nous avons d’abord commencé par lister tous les propriétaires de NFT grâce à etherscan.io. Au moment de la rédaction de cet article, il y avait 3484 1 propriétaires d’au moins 1516 de ces NFT. XNUMX portefeuilles possèdent plus d’un même NFT, probablement pour en revendre un plus tard.

Un jour de mon salaire, c'est leur assurance vie.
Boulbi, Côté Ouest

1ère tentative – etherscan.io

Les messages Ethereum sont codés à l'aide du personal_sign format ("x19Ethereum Signed Message:n" + length(message) + message) avant d'être signé à l'aide d'ECDSA. Étant donné que les transactions Ethereum sont codées dans un format différent (RLP), les signatures de transaction ne peuvent pas être reconnues comme des signatures de message valides. En d’autres termes, les signatures de messages sont introuvables sur la blockchain Ethereum.

Le premier endroit où nous avons trouvé des messages Ethereum hors chaîne est etherscan.io, qui fournit une interface Web pour vérifier une signature de message Ethereum et éventuellement l'enregistrer pour la rendre accessible via une URL publique. Nous avons d’abord récupéré tous les messages Ethereum enregistrés via ce service : etherscan.io/verifiedSignatures.

Par exemple vérifierSig/2642 montre que le propriétaire NFT de Singe ennuyeux #6743 a prouvé qu'il est également le propriétaire du compte Twitter ape6743:

Il est également propriétaire des NFT Booba TN comme le montre ce transaction. Cependant, même si la signature est valide, le message n'est pas au format JSON et ne peut pas être reconnu par le serveur AWS.

Tu n'peux que gagner quand t'as rien à perdre.
Magnifique, Trône

2ème tentative – snapshot.org

Le site Web instantané.org permet aux individus de voter pour des propositions en utilisant leur portefeuille Ethereum : Snapshot est un client multi-gouvernance sans gaz hors chaîne avec des résultats faciles à vérifier et difficiles à contester. Les votes se font par coïncidence au format JSON.

GraphQL L'interface peut être utilisée pour interroger la base de données des votes. Par exemple, la requête GraphQL minimale suivante renvoie les identifiants de vote où l'adresse de l'électeur est 0x668248dF4595e09Aa253B31478312748078F7a20:

Le résultat de la requête montre que cette adresse a été utilisée pour 2 votes :

Les votes signés par chaque wallet possédant des NFT Booba TN peuvent être récupérés dans leur intégralité avec une seule requête GraphQL. Il y a 689 résultats pour 140 votants uniques.

L'adresse 0x668248dF4595e09Aa253B31478312748078F7a20 acheté 5 NFT Booba TN. Comme indiqué précédemment, cette adresse a également voté pour les propositions suivantes :

Les votes associés sont stockés sur l'InterPlanetary File System (IPFS) : QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM ainsi que  QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. Le contenu du premier vote est le suivant :

capture d'écran vidéo

Veuillez noter que l'URL expire après un certain temps et n'est plus valide.

Conclusion

Cet article de blog montre que même si la cryptographie qui alimente cet événement NFT est solide, un principe de base attaque de rejeu était suffisant pour briser la protection du vidéoclip. La solution est simple : le message envoyé au serveur AWS doit être rejeté s'il ne correspond pas au message envoyé au portefeuille crypto.

La piraterie n'est jamais finie !
Walabok, Néron Némésis

Une fois contactés (trouver le bon contact était en fait la partie la plus difficile), les développeurs de RenaissanceNFT étaient super coopératifs et réactifs. Le problème a été résolu en moins d'une heure et l'accès à la protection ne peut plus être contourné.

spot_img

Dernières informations

spot_img