La plataforma de comercio de NFT SuperRare sufrió el lunes un ataque que le supuso pérdidas por valor de USD 730.000 debido a un error básico en el contrato inteligente que, según los expertos, se podría haber evitado fácilmente con prácticas de prueba estándar.

El contrato de staking de SuperRare (RARE) fue explotado el lunes y se robaron tokens RARE por valor de unos USD 731.000, según la empresa de ciberseguridad cripto Cyvers.

La vulnerabilidad se debe a una función destinada a permitir que solo direcciones específicas modifiquen la raíz Merkle, una estructura de datos crítica que determina los saldos de staking de los usuarios. Sin embargo, la lógica se escribió erróneamente para permitir que cualquier dirección interactuara con la función.

0xAw, desarrollador principal del exchange descentralizado Alien Base, señaló que el error en cuestión era lo suficientemente obvio como para ser detectado por ChatGPT. Cointelegraph verificó de forma independiente que el modelo o3 de OpenAI identificó correctamente el fallo cuando se probó.

Security, Hackers, Cybersecurity, Hacks
Código relevante en el contrato de staking del token SuperRare. Fuente: Cointelegraph

"ChatGPT lo habría detectado, cualquier desarrollador de Solidity medianamente competente lo habría detectado. Básicamente cualquiera, si lo hubiera mirado. Lo más probable es que nadie lo hiciera", dijo 0xAw a Cointelegraph.

El cofundador de SuperRare, Jonathan Perkins, dijo a Cointelegraph que no se perdieron fondos del protocolo central y que los usuarios afectados serán indemnizados. Dijo que parece que hay 61 billeteras afectadas.

"Hemos aprendido de ello y ahora los cambios futuros pasarán por un proceso de revisión mucho más riguroso", afirmó.

Anatomía de una vulnerabilidad

Para determinar si se debía permitir el cambio de la raíz Merkle, el contrato inteligente comprobaba si la dirección con la que interactuaba no era una dirección específica o el propietario del contrato. Esta es la lógica opuesta a la que se pretendía aplicar, lo que permitía a cualquiera desviar el RARE puesto en stake del contrato.

Security, Hackers, Cybersecurity, Hacks
La línea que contiene la comprobación pertinente. Fuente: Cointelegraph

Un ingeniero sénior de la empresa de seguros cripto Nexus Mutual declaró a Cointelegraph que "las pruebas unitarias habrían detectado este error".

Mike Tiutin, arquitecto de blockchain y director tecnológico de la empresa AMLBot, afirmó: "Es un error tonto del desarrollador que no fue detectado por las pruebas (por eso es importante la cobertura completa)".

El CEO de AMLBot, Slava Demchuk, también llegó a la misma conclusión y señaló que "no se realizaron pruebas exhaustivas (ni se aplicó un programa de recompensa por errores) que pudieran haberlo detectado antes de la implementación". Destacó la importancia de las pruebas y señaló que se trata de un "ejemplo clásico de por qué la lógica de los contratos inteligentes debe ser auditada rigurosamente". Añadió:

“Esto es un duro recordatorio: en los sistemas descentralizados, incluso un error de un solo carácter puede tener graves consecuencias”.

Aunque Perkins insistió en que los contratos se habían auditado y sometido a pruebas unitarias, reconoció que el bug se introdujo en una fase avanzada del proceso y no se tuvo en cuenta en los escenarios de pruebas finales:

“Es un doloroso recordatorio de cómo incluso pequeños cambios en sistemas complejos pueden tener consecuencias no deseadas”.

La importancia de las pruebas unitarias

Las pruebas unitarias son pequeñas pruebas automatizadas que comprueban si las partes individuales ("unidades") de un programa —normalmente funciones o métodos— funcionan según lo esperado. Cada prueba se centra en un comportamiento o resultado específico basado en una entrada determinada, lo que ayuda a detectar bugs de forma temprana.

En este caso, las pruebas que verifican si las direcciones pueden o no llamar a la función para modificar la raíz Merkle habrían fallado.

"Por descuido o por pruebas inadecuadas, el efecto fue el mismo: una vulnerabilidad evitable que costó mucho", dijo Demchuk a Cointelegraph.

0xAw dijo de manera similar que "el problema era, por supuesto, la aparente falta total de pruebas". Dijo que "ni siquiera es un tipo de código que funcione bien en condiciones normales y que falle si se le presiona en los lugares adecuados".

"Este código hace justo lo contrario de lo que se espera", añadió.

Perkins declaró a Cointelegraph que, de cara al futuro, SuperRare ha introducido nuevos flujos de trabajo que exigen nuevas auditorías para cualquier cambio posterior a la auditoría, por pequeño que sea.

La mayoría de las vulnerabilidades son descuidos

0xAw dijo que el error es "un error humano normal". En cambio, lo que él considera un "error monumental" es que "llegó a la producción y se quedó allí".

0xAw destacó que la gran mayoría de las vulnerabilidades graves se originan en "errores realmente estúpidos y fácilmente evitables". Aun así, admitió que "por lo general son un poco más difíciles de detectar que este".

El jefe de respuesta a incidentes de Hacken, Yehor Rudytsia, coincidió en que una cobertura de pruebas exhaustiva habría detectado el fallo.

"Si se revisa esta función, es un bug bastante obvio", dijo.

Aclaración: La información y/u opiniones emitidas en este artículo no representan necesariamente los puntos de vista o la línea editorial de Cointelegraph. La información aquí expuesta no debe ser tomada como consejo financiero o recomendación de inversión. Toda inversión y movimiento comercial implican riesgos y es responsabilidad de cada persona hacer su debida investigación antes de tomar una decisión de inversión.