Qu'est-ce que Integer Overflow Attack ?
Integer Overflow Attack se produit lorsqu'un nombre dans un programme atteint sa valeur maximale et revient à zéro, permettant à un attaquant de manipuler des soldes ou des limites. En crypto, ce retour peut transformer une vérification comme « avez-vous assez de jetons ? » en un oui alors que la réponse devrait être non. Imaginez le compteur kilométrique d'une vieille voiture qui passe de 999999 à 000000, mais avec de l'argent en jeu.
« Les compilateurs modernes rendent cela impossible. » Pas tout à fait. De nombreux contrats intelligents utilisent encore des opérations arithmétiques non vérifiées par endroits, des calculs personnalisés ou de l'assembleur qui peuvent réintroduire des bugs d'overflow.
Comment fonctionne Integer Overflow Attack
Voici une brève démonstration avec un contrat de token comme exemple.
- Étape 1 : Le contrat stocke les soldes avec des entiers de taille fixe et possède une fonction qui ajoute, soustrait ou multiplie des montants.
- Étape 2 : L'attaquant choisit des entrées qui poussent un nombre au-delà de son maximum, provoquant un retour à une valeur faible ou à zéro.
- Étape 3 : Ce retour inverse une vérification. Exemple : après le retour, le solde paraît énorme ou la limite de transfert paraît minuscule, donc un require passe.
- Étape 4 : L'attaquant crée des jetons non mérités, contourne un plafond ou transfère des fonds qu'il ne devrait pas pouvoir déplacer.
- Étape 5 : Ils mélangent les gains via des échanges ou des ponts et partent avant que quelqu'un ne s'en aperçoive.
Histoire vraie : plusieurs tokens ERC 20 ont eu un bug d'overflow sur des traitements par lot qui permettait aux attaquants de frapper des approvisionnements absurdes, puis de tout vider sur des échanges. Oui, cela s'est produit.
Pourquoi Integer Overflow Attack compte
Si vous détenez des tokens, développez des applications ou tradez en DeFi, cela vous concerne. Il s'agit de nombres, et ce sont les nombres qui font fonctionner la crypto.
- Avantage : Comprendre le mécanisme vous aide à repérer des signaux d'alerte tôt et à protéger vos fonds.
- Perspective : Les bugs arithmétiques sont intemporels. De nouvelles chaînes et outils apparaissent, mais les erreurs mathématiques sont toujours exploitées par des attaquants.
- Pertinence : Vous le verrez dans le calcul de l'offre de tokens, les systèmes de récompense, les compteurs NFT, et les dApps populaires qui gèrent les soldes des utilisateurs.
En Solidity, gardez l'arithmétique vérifiée par défaut et maintenez les blocs unchecked petits et audités. Ajoutez des tests de fuzz qui essayent des valeurs extrêmes, pas seulement les cas favorables.
Caractéristiques clés de Integer Overflow Attack
Ce qui le distingue des autres bugs :
- Retour en boucle : Les nombres passent du maximum au zéro comme un compteur cyclique.
- Silencieux : Pas d'erreur native si l'arithmétique n'est pas vérifiée, donc les échecs ressemblent à des résultats légitimes.
- Déclenchable : Souvent des entrées contrôlées par l'utilisateur peuvent provoquer précisément le moment où cela arrive.
- Répétable : Une fois trouvé, les attaquants peuvent l'automatiser et l'exécuter sur de nombreuses cibles.
Variantes
Principales variantes que vous entendrez, même famille, voies différentes :
- Underflow : La soustraction descend en dessous de zéro et revient à une valeur énorme.
- Addition : Ajouter à un solde ou à l'offre le porte au-delà du maximum puis il revient à de petites valeurs.
- Multiplication : Des multiplicateurs de récompense ou des facteurs d'échelle font exploser la valeur au-delà des limites.
- Compteur : Les ID de token ou compteurs d'offre se remettent à zéro et permettent de continuer à minter au-delà du plafond.
Integer Overflow Attack n'est pas uniquement présent en Solidity. Il peut apparaître en Vyper, Rust, Move ou en assembleur personnalisé, et de nombreux exploits médiatisés se résumaient à des calculs non vérifiés autour des soldes ou des offres.
Exemple
Une fonction de récompense multiplie un nombre fourni par l'utilisateur par un gros bonus, la valeur revient à zéro, la vérification du plafond passe, et Integer Overflow Attack permet à l'attaquant de minter bien plus de tokens que prévu.
Fait amusant
Le classique d'arcade avec l'écran de mort au niveau 256 ? Ce gel célèbre provenait d'un débordement d'entier, montrant que même les jeux rétro peuvent par accident préfigurer des bugs en crypto.
Conclusion
Considérez Integer Overflow Attack comme des nombres qui font un tour complet et des voleurs qui profitent de l'ouverture ; gardez l'arithmétique vérifiée et vous dormirez mieux.
