Le protocole Truebit piraté pour 26,44 millions de dollars en raison d'une vulnérabilité de débordement d'entier

iconOdaily
Partager
Share IconShare IconShare IconShare IconShare IconShare IconCopy
AI summary iconRésumé

expand icon
Le 8 janvier 2026, le protocole Truebit a subi un piratage d'une valeur de 26,44 millions de dollars en raison d'une vulnérabilité de débordement d'entier (integer overflow) dans sa logique d'achat de jetons. L'attaquant a exploité un défaut dans la fonction 0x1446, en utilisant une boucle pour manipuler des valeurs d'entrée importantes et déclencher des calculs ETH incorrects. La vulnérabilité provenait de Solidity ^0.6.10, une version qui ne comporte pas de vérifications de débordement. Cet incident souligne la nécessité d'une mise à jour du protocole et renforce l'urgence d'agir face aux nouvelles vulnérabilités dans le domaine du DeFi. L'équipe de sécurité ExVul met en garde contre une possible augmentation des attaques pilotées par l'intelligence artificielle ciblant les protocoles obsolètes, et exhorte les équipes à réaliser des audits et à mettre en place des systèmes de surveillance.

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 l'attaquant obtient 5105,06 ETH.

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. Étant donné que le résultat final du calcul v13 == 0, il est 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 aucune vérification de débordement n'est effectuée).

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'attaques, utilisant l'IA pour cibler des protocoles DeFi obsolètes, va s'accroître dans les prochaines semaines. Nous recommandons donc fortement aux équipes de projets de réaliser de nouvelles audits de sécurité de leurs contrats intelligents. En cas de vulnérabilités découvertes, il est essentiel de procéder rapidement à des mises à jour de contrats ou à des transferts d'actifs, tout en mettant en place un suivi actif de la chaîne de blocs afin de détecter rapidement les anomalies et minimiser les pertes.

Clause de non-responsabilité : les informations sur cette page peuvent avoir été obtenues auprès de tiers et ne reflètent pas nécessairement les points de vue ou opinions de KuCoin. Ce contenu est fourni à titre informatif uniquement, sans aucune représentation ou garantie d’aucune sorte, et ne doit pas être interprété comme un conseil en investissement. KuCoin ne sera pas responsable des erreurs ou omissions, ni des résultats résultant de l’utilisation de ces informations. Les investissements dans les actifs numériques peuvent être risqués. Veuillez évaluer soigneusement les risques d’un produit et votre tolérance au risque en fonction de votre propre situation financière. Pour plus d’informations, veuillez consulter nos conditions d’utilisation et divulgation des risques.