Blog de AuditOne
CASO PRÁCTICO. DARK MYTHOS PROTEGIDO: SOLUCIÓN DE LOS RIESGOS DE REENTRADA

Los juegos de cartas coleccionables de fantasía y la tecnología blockchain se unen en Dark Mythos para ofrecer una experiencia de juego única a través de los NFT. Dark Mythos atrae a los entusiastas de las cartas coleccionables y a los aficionados a la fantasía al incorporar una rica historia al juego. Dark Mythos ofrece una experiencia de juego inmersiva, que incluye historias muy bien elaboradas por reconocidos escritores de fantasía y una construcción del mundo muy atractiva. La integración de estas historias con las cartas NFT permite a los jugadores desbloquear nuevos capítulos y arcos narrativos a medida que crecen sus colecciones, lo que ofrece una experiencia de juego dinámica y en constante evolución. La auditoría de AuditOne sobre Dark Mythos destacó la perfecta integración de los componentes NFT en el ecosistema del juego, lo que garantiza a los jugadores una experiencia segura y atractiva.

Retos a los que nos enfrentamos

Al igual que muchos juegos de Web3, Dark Mythos se basa en contratos inteligentes para hacer funcionar su ecosistema basado en NFT. Los contratos inteligentes garantizan que las cartas se puedan acuñar, transferir e intercambiar sin problemas. Sin embargo, ni siquiera los proyectos más prometedores están a salvo de riesgos: se pueden aprovechar las lagunas legales y se pueden perder millones.

Durante nuestra auditoría, los expertos de AuditOne detectaron varias vulnerabilidades críticas, entre las que se incluyen:

  • El parámetro «data» de la función «batchTransferFrom» se repite innecesariamente en todas las transferencias.
  • La ausencia del patrón «Comprobaciones-Efectos-Interacciones» (CEI) puede provocar reentrada.
  • _royaltyFraction se puede establecer en el 100 %, lo que podría suponer un problema.
  • El destinatario puede bloquear la acuñación volviendo a la función «onERC721Received».
  • Utiliza «!= 0» en lugar de «> 0» para comparar números enteros sin signo.

Por qué es importante: comprender la amenaza

Los ataques de reentrada siguen siendo una de las vulnerabilidades más peligrosas de los contratos inteligentes en Web3. Aprovechan una laguna en el contrato de la víctima para realizar retiradas repetidas hasta que dicho contrato quiebra. Esta vulnerabilidad se produce cuando el contrato de la víctima no verifica con la debida rapidez el nuevo saldo del atacante. A su vez, esto puede utilizarse indebidamente para agotar su liquidez, lo que merma la confianza de los usuarios en dicha plataforma de intercambio.

La reentrada sigue siendo una vulnerabilidad muy extendida en los contratos inteligentes y siempre debe solucionarse antes de que un contrato inteligente entre en funcionamiento; algunos ejemplos recientes de ataques de reentrada son: 

  1. Curve Finance: una vulnerabilidad en el compilador Vyper provocó un ataque de reentrada contra Curve Finance, lo que supuso una pérdida de aproximadamente 70 millones de dólares.
  2. En 2023, KyberSwap sufrió un ataque de reentrada que provocó unas pérdidas de 47 millones de dólares.
  3. A causa de un ataque de reentrada, la plataforma de «leveraged farming» de DeltaPrime fue objeto de un ataque por parte de hackers, que se llevaron aproximadamente 4,8 millones de dólares en las redes Arbitrum y Avalanche.

En Dark Mythos, el riesgo era evidente: la función de acuñación se basaba en interacciones externas poco seguras. Sin las correcciones oportunas, un atacante podría haber manipulado el flujo del contrato, poniendo en peligro los activos —y el futuro del proyecto—.

Nuestra solución

AuditOne colaboró estrechamente con el equipo de Dark Mythos para solucionar estas vulnerabilidades, en especial el riesgo de reentrada.

Recomendamos adoptar el patrón «Checks-Effects-Interactions» (CEI), un enfoque estándar del sector que garantiza:

  1. Primero se realizan todas las comprobaciones (verificaciones).
  2. A continuación se muestran las actualizaciones del estado del contrato.
  3. Las interacciones externas tienen lugar en último lugar, lo que reduce el riesgo de explotación.

Gracias a la implementación de esta corrección y a la resolución de otros problemas, Dark Mythos cuenta ahora con una seguridad a toda prueba, lo que garantiza que los jugadores puedan centrarse en lo que realmente importa: disfrutar del juego.

Resultados de la auditoría y repercusiones

Gracias a las exhaustivas auditorías y soluciones de AuditOne:

  • Los contratos inteligentes de Dark Mythos son ahora seguros y fiables.
  • La experiencia del jugador sigue siendo fluida y fiable.
  • El equipo se ha asegurado de que su creciente comunidad de seguidores pueda intercambiar, acuñar y jugar sin preocupaciones.

Entremos en detalles técnicos:

En el contrato ERC721DarkMythosCalyndor.sol, la función `mint()` es vulnerable a ataques de reentrada debido a que se desvía del patrón «Checks-Effects-Interactions». La vulnerabilidad se debe a que el estado de `totalMintedTokens` y `edition.mintedSupply` se actualiza tras la llamada a la función `_safemint()`, lo que cede el control del flujo al contrato receptor al basarse en la función `onERC721Received()`. Esto puede transferir efectivamente el control a un contrato externo antes de actualizar el estado. Dicha transferencia de control puede ser aprovechada por contratos maliciosos para realizar llamadas reentrantes, lo que podría dar lugar a comportamientos no deseados o a brechas de seguridad.

Recomendación de AuditOne:

Considera la posibilidad de utilizar el patrón «Checks-Effects-Interactions» en la función `mint()`, que consiste en realizar primero todas las comprobaciones necesarias, a continuación actualizar el estado del contrato y, por último, interactuar con contratos externos actualizando `totalMintedTokens` y `edition.mintedSupply` antes de llamar a `_safemint()`; de este modo, te aseguras de que el estado del contrato refleje la operación de acuñación antes de cualquier interacción externa. Este enfoque minimiza el riesgo de ataques de reentrada al limitar la posibilidad de que los contratos externos vuelvan a entrar en la función durante su ejecución.

En un ámbito en el que hay miles de millones en juego y la confianza lo es todo, AuditOne proporciona a proyectos como Dark Mythos la seguridad necesaria para desarrollarse, crecer y prosperar.

Tu proyecto merece la misma protección

La seguridad no solo protege el código, sino también a tus jugadores, tu reputación y tu futuro. Tanto si estás desarrollando un juego, un DEX o una aplicación DeFi, AuditOne está aquí para garantizar que tus contratos inteligentes sean a toda prueba.

Vamos a proteger tu proyecto Web3 para que puedas centrarte en crear la magia.

Reserva tu consulta gratuita sobre seguridad:

Google Calendar:
https://calendar.app.google/Ai15eyQhiV5c1pBXA
Telegram:
https://t.me/m_ndr

En este artículo
Autor
Daniel Francis
Responsable sénior de producto
¡Comparte esto con tu comunidad!
xtelegramlinkedin
Artículos recientes

¿Buscas más contenido interesante?

Descubre nuestra comunidad
Discord
x
Twitter
Medium
LinkedIn
YouTube