El 8 de enero de 2026, en el bloque 24,191,019 de Ethereum, el token TRU de Truebit colapsó después de que una transacción forzara el precio de compra del protocolo a cero. Esa única condición permitió la acuñación ilimitada y una rápida salida a ETH. Más detalles a continuación.
El atacante llamó a getPurchasePrice, luego a buyTRU (0xa0296215), acuñó más TRU que el suministro total, repitió el ciclo y luego vendió a través de sellTRU. El costo total fue de menos de $40, y la transacción devolvió 8,535 ETH (alrededor de $26M).
Solo se verificó el proxy del token TRU en Sourcify, compilado con Solidity 0.5.3. Esa era precede a las comprobaciones de desbordamiento integradas y muchas características de seguridad. El código antiguo puede funcionar durante años y luego fallar cuando un solo caso límite se encuentra con un análisis mejor.
Descompilamos el contrato de compra no verificado y rastreamos getPurchasePrice hasta una función interna (0x1446) que calcula el precio a partir de la oferta S, la reserva R y THETA (75 en ese momento). Se utilizaron ayudantes de matemáticas seguras a lo largo de la mayor parte del camino.
El punto de fallo fue la expresión final: v13 = _SafeDiv(v6, v12 + v9). Esa suma no estaba verificada, y Solidity 0.5.3 no revierte en caso de desbordamiento. Con una entrada lo suficientemente grande, se envolvió y la división entera devolvió cero.
Nuestro informe completo cubre la causa raíz y las lecciones para los sistemas heredados:
5,23K