Titre original : « Analyse de la faille de contrat ayant conduit au vol de 26,44 millions de dollars dans le protocole Truebit »
Source originale : ExVul Security
Le 8 janvier 2026, le protocole Truebit Protocol a été piraté, entraînant une perte de 8 535,36 ETH (environ 26,44 millions de dollars américains). L'équipe officielle de Truebit Protocol a confirmé cet incident dans un communiqué publié le lendemain matin. L'équipe de sécurité ExVul a mené une analyse approfondie de cette attaque, et les résultats de l'analyse sont les suivants :
Processus d'attaque
Adresse de l'attaquant :
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash de la transaction d'attaque :
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
L'attaquant a mené l'attaque en effectuant une transaction qui appelle successivement quatre fois getPurchasePrice→0xa0296215→0xc471b10b. Prenons le premier cycle comme exemple pour l'analyser.
1. L'attaquant appelle d'abord la fonction getPurchasePrice(240442509453545333947284131), qui retourne 0.

2. L'attaquant appelle la fonction 0xa0296215(c6e3ae8e2cbab1298abaa3) avec un msg.value de 0. Finalement, il réussit à frapper 240442509453545333947284131 jetons TRU.

3. L'attaquant appelle la fonction 0xc471b10b(c6e3ae8e2cbab1298abaa3). Enfin, 240442509453545333947284131 jetons TRU sont détruits, et 5105,06 ETH sont obtenus.
Analyse de la logique d'attaque
En comprenant le processus d'attaque mentionné ci-dessus, il devient évident qu'il existe un problème logique dans les fonctions `getPurchasePrice` et `0xa0296215`. Nous allons maintenant procéder à une analyse approfondie (puisque le contrat n'est pas open source, le code utilisé ci-dessous provient d'un décompilateur).


En comparant les points communs entre les deux fonctions, nous pouvons constater que la fonction 0x1446 est utilisée pour calculer la quantité d'ETH nécessaire pour acheter un certain nombre de TRU. Il est évident que la logique de la fonction 0x1446 comporte un problème, ce qui entraîne une erreur dans le calcul de l'ETH. Nous allons maintenant analyser en détail la logique de la fonction 0x1446.

Analysez la logique de la fonction 0x1446, car le résultat final v13 est égal à 0, il est donc certain qu'il y a un problème dans la logique de calcul ci-dessus. Il convient de noter que la fonction 0x18ef est identique à _SafeMul, donc le problème réside dans l'utilisation de l'addition native v12 + v9 (la version du contrat est ^0.6.10, donc sans vérification de débordement).
v12 et v9 signifient respectivement :

D'après l'analyse ci-dessus, la stratégie d'attaque de l'attaquant consiste à entrer une valeur _amountIn extrêmement grande, ce qui fait déborder v12 + v9 en une valeur très petite, et finalement rend (v12 + v9) / v6 égal à 0.
Résumé
La cause fondamentale de l'attaque subie par le protocole Truebit réside dans un grave bug de débordement d'entier (integer overflow) dans la logique de calcul du prix d'achat du jeton. En raison de l'utilisation de la version Solidity ^0.6.10 par le contrat et de l'absence de vérifications de sécurité pour les opérations arithmétiques critiques, cela a entraîné une perte importante de 8 535,36 ETH. Actuellement, les nouvelles versions de Solidity incluent des protections intégrées contre les débordements d'entier. Cette attaque a probablement été découverte par un pirate informatique utilisant l'intelligence artificielle pour scanner automatiquement certaines anciennes protocoles DeFi déployés (comme récemment Balancer et yETH). Nous pensons que ce type d'attaque, utilisant l'IA pour cibler des protocoles DeFi obsolètes, va s'accroître dans les prochaines semaines. Nous recommandons donc aux équipes de projets de réaliser de nouvelles audits de sécurité de leurs contrats intelligents. En cas de découverte de vulnérabilités, il est essentiel de procéder rapidement à la mise à jour des contrats ou au transfert d'actifs, tout en mettant en place un suivi actif de la chaîne de blocs afin de détecter les anomalies au plus tôt et d'atténuer ainsi les pertes.
Cet article est un article invité et ne représente pas le point de vue de BlockBeats.
Cliquez ici pour en savoir plus sur les postes à pourvoir chez BlockBeats.
Rejoignez la communauté officielle de Lüdòng BlockBeats :
Groupe d'abonnement Telegram :https://t.me/theblockbeats
Groupe de discussion Telegram :https://t.me/BlockBeats_App
Compte officiel Twitter :https://twitter.com/BlockBeatsAsia


