Em 8 de janeiro de 2026, no bloco Ethereum 24.191.019, o token TRU da Truebit colapsou após uma transação que forçou o preço de compra do protocolo a zero. Essa única condição permitia cunhagem ilimitada e uma saída rápida para o ETH. Mais detalhes a seguir.
O atacante chamou getPurchasePrice, depois buyTRU (0xa0296215), cunhou mais TRU do que a oferta total, repetiu o ciclo e então vendeu via sellTRU. O custo total foi inferior a $40, e a transação retornou 8.535 ETH (cerca de $26 milhões).
Apenas o proxy do token TRU foi verificado no Sourcify, compilado com Solidity 0.5.3. Essa era é anterior às verificações de transbordo embutidas e a muitos recursos de segurança. Código antigo pode rodar por anos e depois falhar quando um único caso limite recebe uma análise melhor.
Descompilamos o contrato de compra não verificado e rastreamos o getPurchasePrice em uma função interna (0x1446) que calcula o preço a partir da oferta S, reserva R e THETA (75 na época). Auxiliares de matemática seguros foram usados na maior parte do caminho.
O ponto de falha foi a expressão final: v13 = _SafeDiv(v6, v12 + v9). Essa adição não foi marcada, e o Solidity 0.5.3 não reverte no overflow. Com uma entrada grande o suficiente, ele se enrolou e a divisão inteira retornou zero.
Nosso texto completo cobre a causa raiz e as lições para sistemas legados:
5,23K