Mil millones de wones de la nada: un desconocido se proclamó jefe de la blockchain WEMIX y vació la caja

Mil millones de wones de la nada: un desconocido se proclamó jefe de la blockchain WEMIX y vació la caja

Una vieja falla de software permitió a un hacker tomar el control absoluto de activos ajenos.

image

Los proyectos de criptomonedas con frecuencia confían el control de funciones clave de los contratos inteligentes a un grupo reducido de administradores, y este modelo falló en el caso del token WEMIX. El equipo de WEMIX explicó las causas del ataque informático ocurrido el 26 de julio a las 18:17, hora de Corea. El atacante encontró una vulnerabilidad en el código de los contratos inteligentes y usurpó los derechos de propietario sobre dos de ellos, tras lo cual emitió ilegalmente alrededor de 5 225 525 tokens WEMIX Dollar por un valor aproximado de 7,7 mil millones de won.

Según el equipo del proyecto, la intrusión no estuvo relacionada con la compromisión de sistemas internos de la empresa ni con la filtración de claves privadas de los administradores. La causa residía en dos contratos inteligentes: DIOS, que responde por la estabilidad del WEMIX Dollar, y AMA, que intercambia activos colaterales en proporción uno a uno. Un contrato inteligente es un programa que ejecuta automáticamente acciones predeterminadas cuando se cumplen ciertas condiciones. Ambos contratos prácticamente no se usaban en el momento del ataque: se planeaba retirarlos de servicio.

Los contratos contenían una función de inicialización que registraba la dirección del propietario; debía ejecutarse solo una vez, inmediatamente después del despliegue. En una actualización de noviembre de 2022 se cambió la restricción sobre su invocación y se permitió ejecutar la función dos veces, pero la propia función no se volvió a ejecutar en ese momento. Debido a ello, el contador de llamadas quedó en uno y una nueva ejecución quedó disponible sin ninguna verificación de acceso.

Aprovechando esto, el atacante desplegó su propio contrato malicioso, llamó a la función de inicialización por segunda vez y reemplazó las direcciones de los propietarios de ambos contratos por la suya. Eso le otorgó el derecho de invocar funciones de emisión e intercambio de tokens, así como de redirigir comisiones e ingresos de las operaciones a su cuenta. Para acuñar los tokens, realizó nueve ciclos de préstamos flash y swaps entre los dos contratos.

Como resultado, el atacante emitió WEMIX Dollar por un valor aproximado de 7,7 mil millones de won y retiró del sistema 723 244 USDC.e —el stablecoin que sirve como activo colateral para WEMIX Dollar— por un valor estimado en 1 mil millones de won. Además, se transfirieron 34 752 monedas WEMIX ordinarias. El equipo de WEMIX también informó que detectó indicios de que parte de los tokens de juego estaban vinculados al WEMIX Dollar y continúa analizando las transacciones pertinentes.

Tras identificar el incidente, el equipo determinó la dirección del atacante, contactó con los exchanges a los que llegaron los fondos robados para solicitar el bloqueo de esa dirección y revocó los derechos de emisión de tokens para impedir más emisiones. También se detuvieron temporalmente los pools de liquidez relacionados con WEMIX Dollar, el puente Chainlink CCIP, el PLAY Bridge interno y el exchange PNIX DEX.

Wemade presentó una declaración oficial ante las autoridades el 28 de julio y ahora colabora activamente con la investigación. Para reducir riesgos similares, los desarrolladores de contratos inteligentes deberían limitar las ejecuciones repetidas de funciones de inicialización y verificar los permisos de acceso cada vez que se modifica la lógica del contrato tras actualizaciones.