Om säkerheten för Boobas musikvideo och NFTs | Huvudbok

Om säkerheten för Boobas musikvideo och NFTs | Huvudbok

Källnod: 2657383

Den 3 november 2021, Booba (den franska rapparen som skapade skivbolaget La Piraterie musik) sätt en uppsättning av 5 NFT till salu, för totalt 5000 av vart och ett av dessa animerade kort. Hela dessa NFT såldes på några dagar för 150 ETH (0.006 ETH styck), det vill säga mer än 700.000 XNUMX USD vid detta datum. Som en bonus fick lyckliga ägare av en av dessa NFT:s se den exklusiva musikvideon TN eftersom 8 November 2021.

Les rappers m'envient, sont tous en galère.
Boulbi, Ouest Side

Vi var lite nyfikna och undrade hur musikvideon skyddades och om vi kunde njuta av den även om vi inte köpte någon NFT.

Hur fungerar musikvideoskyddet?

För att se videon måste ägare av NFT:s besöka sidan /mon-nft och använda sin kryptoplånbok (som Metamask eller WalletConnect) för att signera Ethereum-meddelandet "Pour accéder à TN, merci de bien vouloir signer ce message" med samma plånbok som den som användes för att köpa NFT:erna. När den väl har undertecknats skickas en POST-begäran med en JSON-kropp som följer detta format av webbläsaren till en webb-service värd på AWS:

Några tester visar att meddelanden som skiljer sig från standardmeddelanden inte avvisas så länge de är JSON-kodade. Till exempel: [1337] och "blah" anses vara giltiga, men meddelanden som inte finns i JSON utlöser en internal error direkt.

Om signaturen som är kopplad till Ethereum-adressen (wallet) Och message är giltiga, verifierar servern att plånboken verkligen köpte en av NFT:erna, annars felet Tu ne possèdes aucun des NFTs returneras. Detta sista steg tar lite mer tid, vilket låter oss formulera följande hypotes. Om vi ​​hittar en offentlig nyckel på Internet som uppfyller dessa två villkor:

  • Den publika nyckeln signerade ett JSON-meddelande och den associerade signaturen är offentlig;
  • Plånboken köpte åtminstone en av NFT:erna.

det kan vara möjligt att spela upp meddelandet och signaturen på AWS-servern för att hämta musikvideon.

Smakämnen BOOBA TN NFT är också en ERC-20-token (B2O_TN) som präglas av det smarta kontraktet 0x3b73…94dd. Vi började först med att lista alla NFT-ägare tack vare etherscan.io. I skrivande stund fanns det 3484 ägare till minst 1 av dessa NFT. 1516 plånböcker äger mer än en av samma NFT, förmodligen för att sälja en av dessa senare.

Un jour de mon salaire c'est leur assurance vie.
Boulbi, Ouest Side

Första försöket – etherscan.io

Ethereum-meddelanden kodas med hjälp av personal_sign format ("x19Ethereum Signed Message:n" + length(message) + message) innan de signeras med ECDSA. Eftersom Ethereum-transaktioner är kodade i ett annat format (RLP), kan transaktionssignaturer inte kännas igen som giltiga meddelandesignaturer. Sätta det annorlunda, meddelandesignaturer kan inte hittas på Ethereum blockchain.

Det första stället där vi hittade Ethereum-meddelanden utanför kedjan är etherscan.io, som tillhandahåller ett webbgränssnitt för verifiera en Ethereum-meddelandesignatur och så småningom spara den för att göra den tillgänglig via en offentlig URL. Vi hämtade först alla Ethereum-meddelanden som sparats via denna tjänst: etherscan.io/verifiedSignatures.

Till exempel verifieraSig/2642 visar att NFT-ägaren av Tråkig apa #6743 bevisat att han också är ägaren till Twitter-kontot apa6743:

Han är också ägare till NFT Booba TN som visas i detta transaktion. Men även om signaturen är giltig är meddelandet inte JSON-formaterat och kan inte kännas igen av AWS-servern.

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

2:a försöket – snapshot.org

Hemsidan snapshot.org tillåter individer att rösta på förslag genom att använda sin Ethereum-plånbok: Snapshot är en gaslös multi-governance-klient utanför kedjan med lätta att verifiera och svåra att bestrida resultat. Rösterna är av en slump i JSON-format.

GraphQL gränssnittet kan användas för att fråga i röstdatabasen. Till exempel returnerar följande minimala GraphQL-begäran röst-ID där väljaradressen är 0x668248dF4595e09Aa253B31478312748078F7a20:

Frågeresultatet visar att denna adress har använts för 2 röster:

Rösterna undertecknade av varje plånbok som äger Booba TN NFTs kan hämtas i sin helhet med en enda GraphQL-förfrågan. Det finns 689 resultat för 140 unika väljare.

Adressen 0x668248dF4595e09Aa253B31478312748078F7a20 köpt 5 Booba TN NFT. Som visats tidigare röstade även denna adress för följande förslag:

De associerade rösterna lagras i InterPlanetary File System (IPFS): QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM och QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. Innehållet i den första omröstningen är:

video skärmdump

Observera att webbadressen upphör efter en viss tid och är inte giltig längre.

Slutsats

Det här blogginlägget visar att även om kryptografin som driver denna NFT-händelse är bra, en grundläggande omspelningsattack var tillräckligt för att bryta musikvideoskyddet. Fixningen är enkel: meddelandet som skickas till AWS-servern bör avvisas om det inte matchar meddelandet som skickas till kryptoplånboken.

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

Väl kontaktad (att hitta rätt kontakt var faktiskt den svåraste delen), utvecklarna från RenässansNFT var supersamarbetsvilliga och lyhörda. Problemet åtgärdades inom mindre än en timme och skyddsåtkomsten kan inte längre kringgås.

Tidsstämpel:

Mer från Ledger