Sobre la seguridad del video musical de Booba y las NFT | Libro mayor

Sobre la seguridad del video musical de Booba y las NFT | Libro mayor

Nodo de origen: 2657383

El 3 de noviembre de 2021, Booba (el rapero francés que creó la etiqueta La música pirata) poner un conjunto de 5 NFT a la venta, para un total de 5000 de cada una de estas tarjetas animadas. La totalidad de estos NFT se vendieron en pocos días por 150 ETH (0.006 ETH cada uno), es decir más de $700.000 a la fecha. Como beneficio adicional, los afortunados propietarios de uno de estos NFT pudieron ver el video musical exclusivo. TN ya que el 8 November 2021.

Les rappeurs m'envient, sont tous en galère.
– Boulbi, lado oeste

Teníamos un poco de curiosidad y nos preguntábamos cómo se protegía el video musical y si podíamos disfrutarlo aunque no compráramos ninguno. NFTs.

¿Cómo funciona la protección de videos musicales?

Para ver el video, los propietarios de los NFT deben visitar la página /mes-nft y use su billetera criptográfica (como Metamask o WalletConnect) para firmar el mensaje Ethereum "Pour accéder à TN, merci de bien vouloir signer ce message" con la misma billetera que la utilizada para comprar los NFT. Una vez firmado, el navegador web envía una solicitud POST con un cuerpo JSON siguiendo este formato a un servicio web alojado en AWS:

Algunas pruebas muestran que los mensajes diferentes al predeterminado no se rechazan siempre que estén codificados en JSON. Por ejemplo: [1337] y "blah" se consideran válidos, sin embargo, los mensajes que no están en JSON activan un internal error al instante.

Si la firma asociada a la dirección de Ethereum (wallet) y message son válidos, el servidor verifica que la billetera efectivamente compró uno de los NFT, de lo contrario el error Tu ne possèdes aucun des NFTs es regresado. Este último paso lleva un poco más de tiempo, lo que nos permite formular la siguiente hipótesis. Si encontramos en Internet una clave pública que cumpla estas 2 condiciones:

  • La clave pública firmó un mensaje JSON y la firma asociada es pública;
  • La billetera compró al menos uno de los NFT.

podría ser posible reproducir el mensaje y la firma en el servidor de AWS para recuperar el video musical.

El  BOOBA TN NFT también es un token ERC-20 (B2O_TN) acuñada por el contrato inteligente 0x3b73…94dd. Primero comenzamos enumerando a todos los propietarios de NFT gracias a etherscan.io. En el momento de redactar este informe, había 3484 propietarios de al menos 1 de estos NFT. 1516 monederos poseen más de uno del mismo NFT, probablemente para revender uno de estos más tarde.

Un jour de mon salaire c'est leur insurance vie.
– Boulbi, lado oeste

1er intento – etherscan.io

Los mensajes de Ethereum se codifican utilizando el personal_sign formato ("x19Ethereum Signed Message:n" + length(message) + message) antes de ser firmado usando ECDSA. Dado que las transacciones de Ethereum están codificadas en un formato diferente (RLP), las firmas de transacciones no se pueden reconocer como firmas de mensajes válidas. Dicho de otra manera, las firmas de mensajes no se pueden encontrar en la cadena de bloques de Ethereum.

El primer lugar donde encontramos mensajes de Ethereum fuera de la cadena es etherscan.io, que proporciona una interfaz web para verificar una firma de mensaje de Ethereum y eventualmente guardarla para que sea accesible a través de una URL pública. Primero recuperamos todos los mensajes de Ethereum guardados a través de este servicio: etherscan.io/firmas verificadas.

En el verificarSig/2642 muestra que el propietario de NFT de Mono aburrido #6743 demostró que él también es el dueño de la cuenta de Twitter simio6743:

También es propietario de los NFT. booba tn como se muestra en este transaccional. Sin embargo, incluso si la firma es válida, el mensaje no tiene formato JSON y el servidor de AWS no puede reconocerlo.

Tu n'peux que gagner quand t'as rien à perdre.
– Magnifique, Trono

2do intento – snapshot.org

La web instantánea.org permite a las personas votar por propuestas usando su billetera Ethereum: Snapshot es un cliente de gobernanza múltiple sin gas fuera de la cadena con resultados fáciles de verificar y difíciles de impugnar. Los votos están casualmente en formato JSON.

GraphQL La interfaz se puede utilizar para consultar la base de datos de votos. Por ejemplo, la siguiente solicitud mínima de GraphQL devuelve ID de voto donde la dirección del votante es 0x668248dF4595e09Aa253B31478312748078F7a20:

El resultado de la consulta muestra que esta dirección se ha utilizado para 2 votos:

Los votos firmados por cada monedero que posee Booba TN NFT se pueden recuperar en su totalidad con una sola solicitud de GraphQL. Hay 689 resultados para 140 votantes únicos.

La dirección 0x668248dF4595e09Aa253B31478312748078F7a20 compró 5 Booba TN NFT. Como se mostró anteriormente, esta dirección también votó a favor de las siguientes propuestas:

Los votos asociados se almacenan en el Sistema de archivos interplanetarios (IPFS): QmZL5toFBQrPgNDPTpQCukWtcjWeT5x6nou75wMMTm52zM y QmQLSv36j3GLdRjubqpXjpAgwYG77Mop5T9uLCi73r1SUT. El contenido de la primera votación es:

captura de pantalla de video

Tenga en cuenta que la URL caduca después de un período de tiempo y ya no es válida.

Conclusión

Esta publicación de blog muestra que incluso si la criptografía que impulsa este evento NFT es sólida, un básico ataque de repetición fue suficiente para romper la protección del video musical. La solución es simple: el mensaje enviado al servidor de AWS debe rechazarse si no coincide con el mensaje enviado a la billetera criptográfica.

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

Una vez contactados (encontrar el contacto adecuado fue en realidad la parte más difícil), los desarrolladores de RenacimientoNFT fueron súper cooperativos y receptivos. El problema se solucionó en menos de una hora y el acceso de protección ya no se puede omitir.

Sello de tiempo:

Mas de Libro mayor