El 8 de enero de 2026, el protocolo Truebit Protocol fue atacado por un hacker, perdiendo 8.535,36 ETH (aproximadamente 26,44 millones de dólares estadounidenses). El equipo oficial de Truebit Protocol confirmó el incidente en un comunicado publicado la madrugada siguiente. El equipo de seguridad ExVul realizó un análisis detallado del agujero de seguridad de este ataque, y los resultados del análisis son los siguientes:
Flujo de ataque
Dirección del atacante:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash de la transacción de ataque:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
El atacante completó el ataque mediante una transacción que llamó en cadena durante 4 rondas a getPurchasePrice→0xa0296215→0xc471b10b. A continuación se analiza como ejemplo la primera ronda del ciclo.
1. El atacante llama primero a la función getPurchasePrice(240442509453545333947284131), que devuelve 0.

2. El atacante llama a la función 0xa0296215(c6e3ae8e2cbab1298abaa3) con msg.value igual a 0. Finalmente, logra acuñar 240442509453545333947284131 tokens TRU.

3. El atacante llama a la función 0xc471b10b(c6e3ae8e2cbab1298abaa3). Finalmente, destruye 240442509453545333947284131 TRU y obtiene 5105,06 ETH.
Análisis de la lógica de ataque
Al comprender el flujo de ataque mencionado anteriormente, se puede identificar claramente que existe un problema lógico en las funciones getPurchasePrice y 0xa0296215. A continuación se realizará un análisis más detallado (debido a que el contrato no está abierto al público, el código que se muestra a continuación es código desensamblado).


Al comparar los puntos comunes entre las dos funciones, podemos descubrir que la función 0x1446 se utiliza para obtener la cantidad de ETH necesaria para comprar una cantidad específica de TRU. Es evidente que existe un problema lógico en la función 0x1446, lo que lleva a un cálculo incorrecto de ETH. A continuación se presenta un análisis detallado de la lógica dentro de la función 0x1446.

Observe la lógica de la función 0x1446. Dado que el resultado final del cálculo v13 == 0, es seguro que hay un problema en la lógica de cálculo mencionada anteriormente. Es importante saber que la función 0x18ef tiene el mismo propósito que _SafeMul, por lo tanto, el problema radica en el uso de la suma nativa v12 + v9 (la versión del contrato es ^0.6.10, por lo tanto, no hay comprobación de desbordamiento).
v12 y v9, respectivamente, representan:

A través del análisis anterior, la estrategia de ataque del atacante consiste en introducir un valor _amountIn muy grande, haciendo que v12 + v9 se desborone (overflow) y se convierta en un valor muy pequeño, y finalmente que (v12 + v9) / v6 == 0.
Resumen
La causa fundamental del ataque al protocolo Truebit radica en la existencia de un grave error de desbordamiento de enteros en la lógica de cálculo del precio de compra de su token. Debido a que el contrato inteligente utiliza la versión Solidity ^0.6.10 y no realiza comprobaciones de seguridad en operaciones aritméticas clave, se produjo una pérdida significativa de 8.535,36 ETH. Actualmente, las nuevas versiones de Solidity ya incluyen mejoras que mitigarían este tipo de vulnerabilidades de desbordamiento. Este ataque probablemente haya sido descubierto por un atacante que utilizó inteligencia artificial para escanear automáticamente algunos protocolos DeFi antiguos ya implementados (incluidos recientemente los ataques a Balancer y yETH). Creemos que este tipo de ataques, aprovechando la IA para explotar protocolos DeFi antiguos, aumentará en los próximos tiempos. Por lo tanto, recomendamos encarecidamente a los equipos de proyectos realizar nuevas auditorías de seguridad en sus contratos inteligentes. Si se detectan vulnerabilidades, deben actualizarse los contratos lo antes posible o transferirse los activos, además de implementar un monitoreo en cadena para detectar anomalías de forma oportuna y minimizar al máximo las pérdidas.

