Em 8 de janeiro de 2026, o protocolo Truebit Protocol foi atacado por hackers, sofrendo uma perda de 8.535,36 ETH (aproximadamente 26,44 milhões de dólares). A equipa oficial do Truebit Protocol confirmou o incidente num comunicado publicado no dia seguinte, de madrugada. A equipa de segurança ExVul realizou uma análise detalhada do漏洞 (vulnerabilidade) que originou o ataque, cujos resultados são os seguintes:
Fluxo de ataque
Endereço do atacante:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash da transação de ataque:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
O atacante completou o ataque através de uma transação que chamou getPurchasePrice→0xa0296215→0xc471b10b em 4 rodadas cíclicas. Vamos analisar como exemplo a primeira iteração.
1. O atacante primeiro chama a função getPurchasePrice(240442509453545333947284131), que devolve 0.

2. O atacante invoca a função 0xa0296215(c6e3ae8e2cbab1298abaa3) com msg.value igual a 0. Por fim, consegue criar com sucesso 240442509453545333947284131 tokens TRU.

3. O atacante invoca a função 0xc471b10b(c6e3ae8e2cbab1298abaa3). No final, destrói 240442509453545333947284131 TRU e obtém 5105,06 ETH.
Análise da lógica de ataque
Ao compreender o fluxo de ataque mencionado acima, torna-se evidente que existem problemas lógicos nas funções getPurchasePrice e 0xa0296215. A seguir, iniciaremos uma análise mais aprofundada (como o contrato não foi open-source, o código abaixo é todo ele de código descompilado).


Ao comparar os pontos comuns entre as duas funções, podemos descobrir que a função 0x1446 é utilizada para obter a quantidade de ETH necessária para comprar uma quantidade especificada de TRU. É óbvio que há um problema lógico na função 0x1446, o que resulta em um cálculo incorreto do ETH. Abaixo, analisamos em detalhe a lógica dentro da função 0x1446.

Observe a lógica da função 0x1446. Como o resultado final do cálculo, v13, é igual a 0, isso indica com certeza que há um problema na lógica de cálculo acima. Deve-se notar que a função 0x18ef é idêntica a _SafeMul, pelo que o problema está na utilização da adição nativa v12 + v9 (a versão do contrato é ^0.6.10, logo, não há verificação de estouro).
v12 e v9, respectivamente, representam:

Através da análise acima, a estratégia de ataque do atacante é introduzir um valor _amountIn muito grande, fazendo com que v12 + v9 estoure e se torne um valor muito pequeno, e finalmente que (v12 + v9) / v6 == 0.
Resumo
A causa raiz do ataque ao protocolo Truebit reside num grave problema de estouro de inteiro (integer overflow) no cálculo do preço de compra do token. Devido ao contrato ter sido escrito na versão Solidity ^0.6.10 e não ter realizado verificações de segurança nas operações aritméticas críticas, isso levou a uma perda significativa de 8.535,36 ETH. Atualmente, as versões mais recentes do Solidity já incluem correções que mitigam estes problemas de estouro. Este ataque provavelmente foi descoberto por hackers que utilizam inteligência artificial para escanear automaticamente protocolos mais antigos de DeFi já implementados (incluindo recentemente os ataques ao Balancer e ao yETH). Acreditamos que eventos de ataque semelhantes, utilizando IA para explorar protocolos mais antigos de DeFi, aumentarão nos próximos tempos. Por isso, recomendamos que as equipes dos projetos realizem novas auditorias de segurança nos seus códigos de contrato, corrijam rapidamente quaisquer vulnerabilidades encontradas, atualizem os contratos ou transfiram ativos, caso necessário, e implementem monitoramento na cadeia para detectar anomalias o mais cedo possível, reduzindo ao mínimo os prejuízos.

