О безопасности музыкального клипа Бубы и NFT | Леджер

О безопасности музыкального клипа Бубы и NFT | Леджер

Исходный узел: 2657383

3 ноября 2021 г., Booba (французский рэпер, создавший лейбл Ла Пиратская музыка) поставить комплект из 5 НФЦ выставлен на продажу, всего 5000 каждой из этих анимированных карт. Все эти NFT были проданы за несколько дней за 150 ETH (по 0.006 ETH каждый), что на сегодняшний день составляет более 700.000 XNUMX долларов США. В качестве бонуса счастливые обладатели одного из этих NFT получили возможность посмотреть эксклюзивное музыкальное видео. TN С 8 ноября 2021.

Les rappeurs m'envient, sont tous en galère.
– Бульби, Западная сторона

Нам было немного любопытно, и мы задавались вопросом, как музыкальное видео защищено и можем ли мы наслаждаться им, даже если мы ничего не купили. NFTs.

Как работает защита музыкального видео?

Чтобы посмотреть видео, владельцы NFT должны посетить страницу / мес-нфт и использовать свой крипто-кошелек (например, Metamask или WalletConnect) для подписи сообщения Ethereum. "Pour accéder à TN, merci de bien vouloir signer ce message" с тем же кошельком, что и тот, который использовался для покупки NFT. После подписания запрос POST с телом JSON в этом формате отправляется веб-браузером в веб-сервис размещен на AWS:

Несколько тестов показывают, что сообщения, отличные от сообщения по умолчанию, не отклоняются, если они закодированы в формате JSON. Например: [1337] и "blah" считаются действительными, однако сообщения не в формате JSON вызывают internal error мгновенно.

Если подпись, связанная с адресом Ethereum (wallet) и расширение message действительны, сервер проверяет, что кошелек действительно купил один из NFT, в противном случае ошибка Tu ne possèdes aucun des NFTs возвращается. Этот последний шаг занимает немного больше времени, что позволяет сформулировать следующую гипотезу. Если мы найдем в Интернете публичный ключ, отвечающий этим 2 условиям:

  • Открытый ключ подписал сообщение JSON, и соответствующая подпись является общедоступной;
  • Кошелек купил хотя бы один из NFT.

возможно, удастся воспроизвести сообщение и подпись на сервере AWS, чтобы получить музыкальное видео.

Ассоциация BOOBA TN NFT также является токеном ERC-20 (B2O_TN) отчеканено смарт-контрактом 0x3b73…94дд. Мы начали с перечисления всех владельцев NFT благодаря etherscan.io. На момент написания было 3484 владельца по крайней мере 1 из этих NFT. 1516 кошельков владеют более чем одним одним и тем же NFT, вероятно, чтобы перепродать один из них позже.

Un jour de mon salaire c'est leur Assurance Vie.
– Бульби, Западная сторона

1-я попытка – etherscan.io

Сообщения Ethereum кодируются с использованием personal_sign формат ("x19Ethereum Signed Message:n" + length(message) + message) перед подписанием с помощью ECDSA. Поскольку транзакции Ethereum кодируются в другом формате (RLP), подписи транзакций не могут быть распознаны как действительные подписи сообщений. Иными словами, подписи сообщений не могут быть найдены в блокчейне Ethereum.

Первое место, где мы нашли сообщения Ethereum вне сети, — это etherscan.io, который предоставляет веб-интерфейс для проверить подпись сообщения Ethereum и, в конечном итоге, сохраните ее, чтобы сделать доступной через общедоступный URL-адрес. Сначала мы получили все сообщения Ethereum, сохраненные через этот сервис: etherscan.io/verifiedSignatures.

Например проверитьSig/2642 показывает, что владелец NFT Скучная обезьяна #6743 доказал, что он также является владельцем аккаунта в Твиттере ape6743:

Он также является владельцем NFT. Буба ТН как показано в этом сделка. Однако даже если подпись действительна, сообщение не имеет формата JSON и не может быть распознано сервером AWS.

Tu n'peux que gagner quand t'as rien à perdre.
– Magnifique, Трон

2-я попытка – snapshot.org

Веб-сайт snapshot.org позволяет отдельным лицам голосовать за предложения, используя свой кошелек Ethereum: Snapshot — это автономный многофункциональный клиент без газа, результаты которого легко проверить и трудно оспорить.. Голоса по совпадению в формате JSON.

GraphQL Интерфейс может использоваться для запроса базы данных голосов. Например, следующий минимальный запрос GraphQL возвращает идентификаторы голосования, где адрес избирателя 0x668248dF4595e09Aa253B31478312748078F7a20:

Результат запроса показывает, что этот адрес был использован для 2 голосов:

Голоса, подписанные каждым кошельком, владеющим Booba TN NFT, могут быть полностью получены с помощью одного запроса GraphQL. Есть 689 результатов для 140 уникальных избирателей.

Адрес 0x668248dF4595e09Aa253B31478312748078F7a20 купил 5 NFT Booba TN. Как показано ранее, этот адрес также проголосовал за следующие предложения:

Связанные голоса хранятся в межпланетной файловой системе (IPFS): QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM и QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. Содержание первого голосования:

скриншот видео

Обратите внимание, что срок действия URL-адреса истекает через определенный период времени и больше недействителен.

Заключение

Этот пост в блоге показывает, что даже если криптография, обеспечивающая это событие NFT, надежна, базовая переиграть атаку было достаточно, чтобы сломать защиту музыкального видео. Решение простое: сообщение, отправленное на сервер AWS, должно быть отклонено, если оно не соответствует сообщению, отправленному на криптокошелек.

La пиратство n'est jamais finie!
– Валабок, Неро Немезида

После того, как связались (самой сложной частью было найти нужный контакт), разработчики из Ренессанс НФТ были супер кооперативными и отзывчивыми. Проблема была устранена менее чем за час, и обход защиты больше невозможен.

Отметка времени:

Больше от Ledger