Over de beveiliging van Booba's muziekvideo en NFT's | Grootboek

Over de beveiliging van Booba's muziekvideo en NFT's | Grootboek

Bronknooppunt: 2657383

3 november 2021, Booba (de franse rapper die het label heeft gemaakt La Piraterie-muziek) plaats een set van 5 NFT's te koop, voor in totaal 5000 van elk van deze geanimeerde kaarten. De totaliteit van deze NFT's werd binnen een paar dagen verkocht voor 150 ETH (elk 0.006 ETH), dat is meer dan $ 700.000 op deze datum. Als bonus mochten gelukkige bezitters van een van deze NFT's de exclusieve videoclip zien TN omdat de 8 november 2021.

Les rappeurs m'envient, sont tous en galère.
Boulbi, oostelijke kant

We waren een beetje nieuwsgierig en vroegen ons af hoe de videoclip werd beschermd en of we ervan konden genieten, zelfs als we er geen kochten NFT's.

Hoe werkt de muziekvideobeveiliging?

Om de video te zien, moeten eigenaren van de NFT's de pagina bezoeken /maand-nft en hun crypto-portemonnee (zoals Metamask of WalletConnect) gebruiken om het Ethereum-bericht te ondertekenen "Pour accéder à TN, merci de bien vouloir signer ce message" met dezelfde portemonnee als degene die is gebruikt om de NFT's te kopen. Eenmaal ondertekend, wordt een POST-verzoek met een JSON-body volgens dit formaat door de webbrowser verzonden naar een webservice gehost op AWS:

Een paar tests laten zien dat berichten die verschillen van de standaardberichten niet worden geweigerd zolang ze JSON-gecodeerd zijn. Bijvoorbeeld: [1337] en "blah" worden als geldig beschouwd, maar berichten die niet in JSON staan, activeren een internal error direct.

Als de handtekening die is gekoppeld aan het Ethereum-adres (wallet) en message geldig zijn, verifieert de server dat de portemonnee inderdaad een van de NFT's heeft gekocht, anders de fout Tu ne possèdes aucun des NFTs wordt geretourneerd. Deze laatste stap kost wat meer tijd, waardoor we de volgende hypothese kunnen formuleren. Als we op internet een openbare sleutel vinden die aan deze 2 voorwaarden voldoet:

  • De publieke sleutel heeft een JSON-bericht ondertekend en de bijbehorende handtekening is openbaar;
  • De portemonnee kocht ten minste één van de NFT's.

het is misschien mogelijk om het bericht en de handtekening opnieuw af te spelen op de AWS-server om de muziekvideo op te halen.

De BOOBA TN NFT is ook een ERC-20-token (B2O_TN) geslagen door het slimme contract 0x3b73…94dd. We zijn eerst begonnen met het opsommen van alle NFT-eigenaren dankzij etherscan.io. Op het moment van schrijven waren er 3484 eigenaren van ten minste 1 van deze NFT's. 1516 wallets bezitten meer dan één van dezelfde NFT, waarschijnlijk om er later een door te verkopen.

Un jour de mon salaire c'est leur assurance vie.
Boulbi, oostelijke kant

1e poging – etherscan.io

Ethereum-berichten worden gecodeerd met behulp van de personal_sign formaat ("x19Ethereum Signed Message:n" + length(message) + message) voordat ze worden ondertekend met ECDSA. Aangezien Ethereum-transacties zijn gecodeerd in een ander formaat (RLP), kunnen transactiehandtekeningen niet worden herkend als geldige berichthandtekeningen. Anders gezegd, berichthandtekeningen zijn niet te vinden op de Ethereum-blockchain.

De eerste plaats waar we off-chain Ethereum-berichten vonden, is etherscan.io, dat een webinterface biedt om controleren een Ethereum-berichthandtekening en sla deze uiteindelijk op om toegankelijk te maken via een openbare URL. We hebben eerst alle Ethereum-berichten opgehaald die via deze service zijn opgeslagen: etherscan.io/verifiedSignatures.

Bij  verifiSig/2642 laat zien dat de NFT-eigenaar van Saaie aap #6743 bewees dat hij ook de eigenaar is van het Twitter-account aap6743:

Hij is ook een eigenaar van de NFT's Booba TN zoals hierin weergegeven transactie. Maar zelfs als de handtekening geldig is, is het bericht niet JSON-geformatteerd en kan het niet worden herkend door de AWS-server.

Je moet weten wat je moet doen.
Prachtig, Troon

2e poging – snapshot.org

De website momentopname.org stelt individuen in staat om op voorstellen te stemmen door hun Ethereum-portemonnee te gebruiken: Snapshot is een off-chain gasloze multi-governance-client met gemakkelijk te verifiëren en moeilijk te betwisten resultaten. Stemmen zijn toevallig in JSON-formaat.

GraphQL interface kan worden gebruikt om de stemmendatabase te doorzoeken. Het volgende minimale GraphQL-verzoek retourneert bijvoorbeeld stem-ID's waar het adres van de kiezer is 0x668248dF4595e09Aa253B31478312748078F7a20:

Het zoekresultaat laat zien dat dit adres is gebruikt voor 2 stemmen:

De stemmen die zijn ondertekend door elke portemonnee die Booba TN NFT's bezit, kunnen in hun geheel worden opgehaald met een enkel GraphQL-verzoek. Er zijn 689 resultaten voor 140 unieke kiezers.

Het adres 0x668248dF4595e09Aa253B31478312748078F7a20 gekocht 5 Booba TN NFT's. Zoals eerder aangegeven, heeft dit adres ook voor de volgende voorstellen gestemd:

De bijbehorende stemmen worden opgeslagen op het InterPlanetary File System (IPFS): QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM en QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. De inhoud van de eerste stemming is:

video-screenshot

Houd er rekening mee dat de URL na een bepaalde tijd verloopt en niet meer geldig is.

Conclusie

Deze blogpost laat zien dat zelfs als de cryptografie die dit NFT-evenement aandrijft, degelijk is, een basis speel aanval opnieuw af was voldoende om de beveiliging van de muziekvideo te verbreken. De oplossing is eenvoudig: het bericht dat naar de AWS-server wordt verzonden, moet worden afgewezen als het niet overeenkomt met het bericht dat naar de crypto-portemonnee is verzonden.

La piraterie n'est jamais finie!
Walabok, Nero Nemesis

Eenmaal gecontacteerd (het vinden van het juiste contact was eigenlijk het moeilijkste deel), de ontwikkelaars van RenaissanceNFT waren super coöperatief en responsief. Het probleem was binnen minder dan een uur verholpen en de beveiligde toegang kan niet meer worden omzeild.

Tijdstempel:

Meer van Grootboek