Título original: "Análise do Vazamento do Contrato que Levou ao Roubo de 26,44 Milhões de Dólares no Protocolo Truebit"
Fonte do texto original: ExVul Security
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). Por fim, destrói 240442509453545333947284131 TRU, obtendo 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, certamente 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, pelo que 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 extremamente grande, fazendo com que v12 + v9 estoure e se torne um valor muito pequeno, resultando finalmente em (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.
Este artigo é uma contribuição de um colaborador e não reflete a opinião do BlockBeats.
Clique para saber mais sobre as vagas da BlockBeats.
Bem-vindo à comunidade oficial da律动 BlockBeats:
Canal de subscrição do Telegram:https://t.me/theblockbeats
Grupo de discussão do Telegram:https://t.me/BlockBeats_App
Conta oficial do Twitter:https://twitter.com/BlockBeatsAsia


