Attaque par Reentrance
Qu'est-ce que Attaque par Reentrance ?
Attaque par ReentranceExploit de contrat intelligent ou un appel externe permet a l'attaquant de re-entrer dans la fonction appelante avant la mise a jour de l'etat, vidant les fonds en boucle.
La reentrance survient lorsqu'un contrat envoie des ETH ou des jetons a une adresse externe (via call, transfer ou un hook ERC-777) avant d'avoir mis a jour sa comptabilite interne. L'attaquant controle cette adresse et, dans le callback, rappelle la fonction de retrait, repetant le cycle jusqu'a vider le contrat. Il existe des variantes mono-fonction, inter-fonctions, inter-contrats et en lecture seule. Les mitigations incluent le patron checks-effects-interactions, le ReentrancyGuard d'OpenZeppelin, les paiements pull et l'absence d'appels de bas niveau vers des contrats non fiables. L'attaque The DAO de 2016 est l'exemple canonique et a entraine le hard fork separant Ethereum et Ethereum Classic.
● Exemples
- 01
Le hack The DAO (juin 2016) a draine environ 3,6 millions d'ETH via des appels recursifs a splitDAO.
- 02
L'incident Cream Finance en 2021 a exploite une reentrance entre fonctions via des callbacks ERC-777.
● Questions fréquentes
Qu'est-ce que Attaque par Reentrance ?
Exploit de contrat intelligent ou un appel externe permet a l'attaquant de re-entrer dans la fonction appelante avant la mise a jour de l'etat, vidant les fonds en boucle. Cette notion relève de la catégorie Web3 et blockchain en cybersécurité.
Que signifie Attaque par Reentrance ?
Exploit de contrat intelligent ou un appel externe permet a l'attaquant de re-entrer dans la fonction appelante avant la mise a jour de l'etat, vidant les fonds en boucle.
Comment fonctionne Attaque par Reentrance ?
La reentrance survient lorsqu'un contrat envoie des ETH ou des jetons a une adresse externe (via call, transfer ou un hook ERC-777) avant d'avoir mis a jour sa comptabilite interne. L'attaquant controle cette adresse et, dans le callback, rappelle la fonction de retrait, repetant le cycle jusqu'a vider le contrat. Il existe des variantes mono-fonction, inter-fonctions, inter-contrats et en lecture seule. Les mitigations incluent le patron checks-effects-interactions, le ReentrancyGuard d'OpenZeppelin, les paiements pull et l'absence d'appels de bas niveau vers des contrats non fiables. L'attaque The DAO de 2016 est l'exemple canonique et a entraine le hard fork separant Ethereum et Ethereum Classic.
Comment se défendre contre Attaque par Reentrance ?
Les défenses contre Attaque par Reentrance combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Attaque par Reentrance ?
Noms alternatifs courants : Appel recursif malveillant.
● Termes liés
- web3№ 1056
Securite des Contrats Intelligents
Pratique consistant a concevoir, auditer et exploiter des programmes on-chain pour qu'ils ne puissent pas etre detournes afin de voler des fonds ou de violer les regles metier.
- web3№ 1055
Audit de Contrats Intelligents
Revue de securite independante du code source, de la configuration de deploiement et du modele economique d'un contrat intelligent avant lancement ou mise a niveau.
- web3№ 424
Attaque par Pret Flash
Exploit DeFi qui emprunte un enorme pret flash sans collateral dans une seule transaction pour manipuler des prix ou la gouvernance, puis voler des fonds avant remboursement.
- web3№ 106
Securite Blockchain
Discipline visant a proteger les registres distribues, leurs mecanismes de consensus, les contrats intelligents et l'infrastructure associee contre la compromission et la fraude.
- vulnerabilities№ 895
Condition de course
Défaut où la sécurité ou la correction d'un système dépend du timing ou de l'ordre d'opérations concurrentes, permettant à un attaquant d'intercaler des actions et de contourner des contrôles.
- web3№ 765
Manipulation d'Oracle
Attaque qui fausse le prix ou le flux de donnees consomme par un contrat intelligent afin qu'il prenne de mauvaises decisions de pret, de liquidation ou de reglement.