Sobre a segurança do videoclipe e NFTs de Booba | Razão

Sobre a segurança do videoclipe e NFTs de Booba | Razão

Nó Fonte: 2657383

3 de novembro de 2021, Booba (o rapper francês que criou o selo Música da pirataria) coloque um conjunto de 5 NFTs à venda, para um total de 5000 de cada um desses cartões animados. A totalidade desses NFTs foi vendida em poucos dias por 150 ETH (0.006 ETH cada), ou seja, mais de US$ 700.000 nesta data. Como bônus, os sortudos proprietários de um desses NFTs puderam ver o videoclipe exclusivo TN uma vez que o 8 Novembro de 2021.

Les rappeurs m'envient, sont tous en galère.
Boulbi, Lado Oeste

Ficamos um pouco curiosos e nos perguntamos como o videoclipe estava protegido e se poderíamos aproveitá-lo mesmo que não comprássemos nenhum NTF`s.

Como funciona a proteção de videoclipes?

Para ver o vídeo, os proprietários dos NFTs devem visitar a página /seg-nft e usar sua carteira criptografada (como Metamask ou WalletConnect) para assinar a mensagem Ethereum "Pour accéder à TN, merci de bien vouloir signer ce message" com a mesma carteira usada para comprar os NFTs. Uma vez assinada, uma solicitação POST com um corpo JSON seguindo este formato é enviada pelo navegador para um serviço de internet hospedado na AWS:

Alguns testes mostram que mensagens diferentes da padrão não são rejeitadas desde que sejam codificadas em JSON. Por exemplo: [1337] e "blah" são consideradas válidas, porém as mensagens que não estão em JSON acionam um internal error instantaneamente.

Se a assinatura associada ao endereço Ethereum (wallet) e message são válidos, o servidor verifica se a carteira realmente comprou um dos NFTs, caso contrário o erro Tu ne possèdes aucun des NFTs é retornado. Esta última etapa leva um pouco mais de tempo, o que nos permite formular a seguinte hipótese. Se encontrarmos na Internet uma chave pública que atenda a estas 2 condições:

  • A chave pública assinou uma mensagem JSON e a assinatura associada é pública;
  • A carteira comprou pelo menos um dos NFTs.

pode ser possível reproduzir a mensagem e a assinatura no servidor AWS para recuperar o videoclipe.

BOOBA TN NFT também é um token ERC-20 (B2O_TN) cunhado pelo contrato inteligente 0x3b73…94dd. Começamos listando todos os proprietários de NFT graças a etherscan.io. No momento em que este artigo foi escrito, havia 3484 proprietários de pelo menos 1 desses NFTs. 1516 carteiras possuem mais de um NFT igual, provavelmente para revender um deles mais tarde.

Um dia de meu salário é a sua vida segura.
Boulbi, Lado Oeste

1ª tentativa – etherscan.io

As mensagens Ethereum são codificadas usando o personal_sign formato ("x19Ethereum Signed Message:n" + length(message) + message) antes de ser assinado usando ECDSA. Como as transações Ethereum são codificadas em um formato diferente (RLP), as assinaturas das transações não podem ser reconhecidas como assinaturas de mensagens válidas. Em outras palavras, as assinaturas de mensagens não podem ser encontradas na blockchain Ethereum.

O primeiro lugar onde encontramos mensagens Ethereum fora da cadeia é etherscan.io, que fornece uma interface web para verificar uma assinatura de mensagem Ethereum e, eventualmente, salvá-la para torná-la acessível através de um URL público. Primeiro recuperamos todas as mensagens Ethereum salvas através deste serviço: etherscan.io/verifiedSignatures.

Por exemplo verificarSig/2642 mostra que o proprietário do NFT de Macaco chato #6743 provou que ele também é o dono da conta do Twitter ape6743:

Ele também é proprietário dos NFTs Boobá TN como mostrado neste transação. No entanto, mesmo que a assinatura seja válida, a mensagem não está no formato JSON e não pode ser reconhecida pelo servidor AWS.

Tu não há nada que ganhe quando você rien à perdre.
Magnífico, Trône

2ª tentativa – snapshot.org

O site snapshot.org permite que indivíduos votem em propostas usando sua carteira Ethereum: Snapshot é um cliente multigovernança sem gás fora da cadeia com resultados fáceis de verificar e difíceis de contestar. Os votos estão coincidentemente no formato JSON.

GraphQL interface pode ser usada para consultar o banco de dados de votos. Por exemplo, a seguinte solicitação GraphQL mínima retorna IDs de voto onde o endereço do eleitor é 0x668248dF4595e09Aa253B31478312748078F7a20:

O resultado da consulta mostra que este endereço foi usado por 2 votos:

Os votos assinados por cada carteira proprietária de NFTs Booba TN podem ser recuperados na íntegra com uma única solicitação GraphQL. Existem 689 resultados para 140 eleitores únicos.

O endereço 0x668248dF4595e09Aa253B31478312748078F7a20 comprou 5 NFTs Booba TN. Conforme mostrado anteriormente, este endereço também votou a favor das seguintes propostas:

Os votos associados são armazenados no InterPlanetary File System (IPFS): QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM e QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. O conteúdo da primeira votação é:

captura de tela do vídeo

Observe que o URL expira após um período de tempo e não é mais válido.

Conclusão

Esta postagem do blog mostra que mesmo que a criptografia que alimenta este evento NFT seja sólida, um básico ataque de repetição foi suficiente para quebrar a proteção do videoclipe. A solução é simples: a mensagem enviada ao servidor AWS deve ser rejeitada se não corresponder à mensagem enviada à carteira criptografada.

La piraterie n'est jamais finie!
Walabok, Nero Nêmesis

Uma vez contatados (encontrar o contato certo foi na verdade a parte mais difícil), os desenvolvedores do RenascençaNFT foram super cooperativos e receptivos. O problema foi corrigido em menos de uma hora e o acesso de proteção não pode mais ser ignorado.

Carimbo de hora:

Mais de Ledger