-
bitcoin $77323.969542 USD
0.01% -
ethereum $2523.414850 USD
2.23% -
tether $0.999674 USD
0.01% -
bnb $732.334794 USD
2.37% -
xrp $1.364311 USD
0.51% -
usd-coin $0.999831 USD
0.00% -
solana $101.751035 USD
1.88% -
tron $0.339246 USD
0.15% -
hyperliquid $78.911101 USD
-1.42% -
zcash $1143.169120 USD
2.95% -
dogecoin $0.084522 USD
0.58% -
monero $539.820025 USD
5.75% -
chainlink $11.538258 USD
0.03% -
unus-sed-leo $9.111763 USD
0.28% -
cardano $0.208079 USD
-0.46%
Comprendre les attaques de réentrée dans les contrats intelligents (explication du hack DAO)
A reentrancy attack exploits Ethereum’s execution model by recursively calling a vulnerable function before state updates, as seen in The DAO hack—where $50M was drained due to updating balances after external calls.
Jan 16, 2026 at 01:40 am
Qu’est-ce qu’une attaque de réentrée ?
1. Une attaque de réentrée se produit lorsqu'un contrat externe rappelle le contrat actuel avant la fin de l'exécution initiale.
2. Cette vulnérabilité est due à une mauvaise gestion de l'état, en particulier lorsque les variables d'état sont mises à jour après des appels externes plutôt qu'avant.
3. L'attaquant déploie un contrat malveillant contenant une fonction de secours qui appelle de manière récursive la fonction vulnérable dans le contrat cible.
4. Chaque appel récursif réintègre le même chemin logique, drainant les fonds à plusieurs reprises sans que le solde ne soit mis à jour jusqu'à ce que la pile d'appels entière se déroule.
5. De telles attaques exploitent le modèle d'exécution synchrone et monothread d'Ethereum dans lequel les appels externes conservent le flux de contrôle dans le contexte d'appel.
L'incident DAO : une panne historique
1. Le DAO était une organisation autonome décentralisée lancée en 2016 sur Ethereum, conçue comme un fonds de capital-risque régi par des règles de contrats intelligents.
2. Son code permettait aux détenteurs de jetons de se séparer du DAO et de récupérer de l'éther en appelant une fonction splitDAO .
3. Cette fonction a transféré l'éther à l'adresse du demandeur avant de mettre à jour le solde interne, créant ainsi une fenêtre de réentrée classique.
4. Un attaquant a déployé un contrat avec une fonction de repli qui a déclenché à nouveau splitDAO lors de la réception de fonds.
5. Au cours de plusieurs appels imbriqués, plus de 3,6 millions d'ETH, d'une valeur de plus de 50 millions de dollars à l'époque, ont été siphonnés avant que la transaction ne soit annulée ou interrompue.
Comment le modèle d'exécution d'Ethereum permet la réentrance
1. Chaque appel externe dans Solidity s'exécute dans le même contexte transactionnel, préservant la mémoire, le stockage et la visibilité de la pile d'appels.
2. Il n'y a pas de protection contre la réentrée automatique à moins qu'elle ne soit explicitement implémentée via des modèles tels que Contrôles-Effets-Interactions.
3. Les limites de gaz n’empêchent pas la récursion ; ils ne limitent que le calcul total et les fonctions de repli nécessitent un minimum de gaz pour s'exécuter.
4. L'EVM n'impose pas d'isolement entre l'appelant et l'appelé : les changements d'état effectués par l'appelé sont visibles par l'appelant pendant son exécution en cours.
5. Les développeurs sous-estiment souvent à quel point les interactions contractuelles peuvent devenir profondément interdépendantes, en particulier lorsque des jetons ou des oracles tiers sont impliqués.
Modèles de code courants qui invitent à la réentrée
1. Mettre à jour les soldes ou les indicateurs après avoir envoyé de l'éther ou appelé des contrats externes au lieu d'avant.
2. Utiliser call.value()() sans valider les valeurs de retour ni limiter la profondeur de récursion.
3. S'appuyer sur this.balance pour la comptabilité au lieu de suivre les soldes dans les variables de stockage.
4. Implémentation de modèles de retrait sans verrous, mutex ou modificateurs de réentrance tels que ReentrancyGuard d'OpenZeppelin.
5. Échec de l'audit de la logique héritée, en particulier lors de l'utilisation de modèles de proxy ou de contrats évolutifs où l'appel délégué préserve le contexte.
Foire aux questions
Q : La réentrée peut-elle se produire dans les transferts ERC-20 ? R : Les fonctions de transfert ERC-20 standard ne déclenchent pas d'appels externes, la réentrée native n'est donc pas possible. Cependant, des extensions comme transferFrom combinées avec des hooks (par exemple, dans ERC-777) introduisent des surfaces de rappel où la réentrance peut se produire.
Q : Le piratage de DAO a-t-il été réversible à cause d'un hard fork ? R : Oui. La communauté Ethereum a exécuté un hard fork pour restaurer les fonds volés en réécrivant l’historique de la chaîne, entraînant la séparation d’Ethereum et d’Ethereum Classic.
Q : Les versions modernes de Solidity empêchent-elles la réentrée par défaut ? R : Non. Solidity v0.8.x inclut un comportement arithmétique et de retour plus sûr, mais n'injecte pas automatiquement de protection par réentrance. Les développeurs doivent toujours appliquer manuellement des modèles défensifs.
Q : L'utilisation de require(msg.sender.call{value: montant}('')) est-elle plus sûre que address.send() ? R : Ni l’un ni l’autre n’est intrinsèquement sûr. Les deux autorisent la réentrée s’ils sont utilisés avant les mises à jour d’état. Le facteur critique est l’ordre des interactions, et non le mécanisme d’appel spécifique.
Clause de non-responsabilité:info@kdj.com
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.
-
ETHFI Échangez maintenant$0.7529
11.48%
-
WLFI Échangez maintenant$0.05726
9.23%
-
JST Échangez maintenant$0.1087
6.25%
-
SKY Échangez maintenant$0.06338
6.18%
-
VET Échangez maintenant$0.007756
3.65%
-
PYTH Échangez maintenant$0.05485
2.69%
- Jeton d'encre réseau CPEN : une plongée approfondie dans l'exploitation minière mobile, les tokenomics et son héritage en évolution
- 2026-09-12 16:35:02
- Les investisseurs XRP sont confrontés à une décision critique dans un contexte d'incertitude du marché et d'événements économiques clés
- 2026-09-12 16:40:01
- Les baleines Ethereum alimentent l'explosion de l'ETH à un sommet de 8 mois dans un contexte de volatilité du marché
- 2026-09-12 16:35:02
- Le rendement sUSDe, le taux d'emprunt Aave et la boucle USDe : une promenade sur la corde raide dans la Big Apple de DeFi
- 2026-09-12 12:45:01
- USDC Bridge CCTP, changement de chaîne stable, arrêt du pont : naviguer dans la nouvelle ère des transferts inter-chaînes
- 2026-09-12 12:45:01
- Metaplanet réduit le pool d'actions des dirigeants de 41,1 % au milieu du tollé des investisseurs et du retrait du plan d'incitation
- 2026-09-12 12:35:02
Connaissances connexes
Comment vérifier DOGE le volume des contrats à terme et l'intérêt ouvert ?
Sep 12,2026 at 08:39am
Comprendre le volume des contrats à terme DOGE 1. Le volume des contrats à terme fait référence au nombre total de DOGE contrats à terme négociés au c...
Comment vérifier le volume des contrats à terme BTC et les intérêts ouverts ?
Sep 12,2026 at 03:19pm
Sources de données pour les mesures des contrats à terme BTC 1. CoinGlass API v4 fournit des taux de financement en temps réel, des cartes thermiques ...
Comment lire le graphique du contrat perpétuel DOGEUSDT ?
Sep 11,2026 at 07:19pm
Comprendre l'évolution des prix sur les graphiques perpétuels DOGEUSDT 1. La formation de chandeliers révèle le sentiment immédiat du marché : les...
Comment vérifier les frais de financement des contrats à terme BTC sur Binance ?
Sep 10,2026 at 08:00am
Localisation de l'affichage du taux de financement 1. Accédez à l'interface de trading Binance Futures et sélectionnez le contrat perpétuel BT...
Comment calculer les bénéfices et les pertes à terme SOLUSDT ?
Sep 10,2026 at 07:19pm
Comprendre les spécifications du contrat à terme SOLUSDT 1. Chaque contrat à terme SOLUSDT est coté en USDT et réglé en USDT, ce qui en fait un contra...
Comment calculer le PnL des contrats à terme XRPUSDT ?
Sep 09,2026 at 05:40pm
Comprendre les spécifications du contrat à terme XRPUSDT 1. Chaque contrat perpétuel XRPUSDT est coté en USDT et réglé en USDT, avec une valeur nomina...
Comment vérifier DOGE le volume des contrats à terme et l'intérêt ouvert ?
Sep 12,2026 at 08:39am
Comprendre le volume des contrats à terme DOGE 1. Le volume des contrats à terme fait référence au nombre total de DOGE contrats à terme négociés au c...
Comment vérifier le volume des contrats à terme BTC et les intérêts ouverts ?
Sep 12,2026 at 03:19pm
Sources de données pour les mesures des contrats à terme BTC 1. CoinGlass API v4 fournit des taux de financement en temps réel, des cartes thermiques ...
Comment lire le graphique du contrat perpétuel DOGEUSDT ?
Sep 11,2026 at 07:19pm
Comprendre l'évolution des prix sur les graphiques perpétuels DOGEUSDT 1. La formation de chandeliers révèle le sentiment immédiat du marché : les...
Comment vérifier les frais de financement des contrats à terme BTC sur Binance ?
Sep 10,2026 at 08:00am
Localisation de l'affichage du taux de financement 1. Accédez à l'interface de trading Binance Futures et sélectionnez le contrat perpétuel BT...
Comment calculer les bénéfices et les pertes à terme SOLUSDT ?
Sep 10,2026 at 07:19pm
Comprendre les spécifications du contrat à terme SOLUSDT 1. Chaque contrat à terme SOLUSDT est coté en USDT et réglé en USDT, ce qui en fait un contra...
Comment calculer le PnL des contrats à terme XRPUSDT ?
Sep 09,2026 at 05:40pm
Comprendre les spécifications du contrat à terme XRPUSDT 1. Chaque contrat perpétuel XRPUSDT est coté en USDT et réglé en USDT, avec une valeur nomina...
Voir tous les articles














