-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
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.
-
RAIN Échangez maintenant$0.007852
113.00%
-
PIPPIN Échangez maintenant$0.06097
51.96%
-
PARTI Échangez maintenant$0.1396
42.04%
-
WAVES Échangez maintenant$0.9141
41.69%
-
ARC Échangez maintenant$0.04302
35.73%
-
HONEY Échangez maintenant$0.01029
21.80%
- Coinbase et Crypto ISAC Forge Alliance, établissant de nouvelles normes en matière de renseignement de sécurité dans le monde des actifs numériques
- 2026-01-31 04:35:01
- La Monnaie américaine rend hommage au héros de la guerre révolutionnaire Polly Cooper sur une pièce Sacagawea 2026
- 2026-01-31 03:55:01
- Bitcoin atteint 83 000 $ au milieu d'une frénésie de vente sans risque, les ETF connaissent des sorties importantes
- 2026-01-31 04:35:01
- Une nouvelle pièce d'un dollar de 2026 met en lumière l'héroïne Oneida Polly Cooper et les premiers alliés de l'Amérique
- 2026-01-31 04:15:01
- Polly Cooper, femme Oneida, honorée sur une pièce de 1 $ US 2026 pour son héroïsme pendant la guerre révolutionnaire
- 2026-01-31 04:25:01
- L'héroïne Oneida Polly Cooper immortalisée sur une nouvelle pièce de 1 $ : un hommage attendu depuis longtemps à la générosité révolutionnaire
- 2026-01-31 04:25:01
Connaissances connexes
Comment exécuter un message inter-chaînes avec un contrat LayerZero ?
Jan 18,2026 at 01:19pm
Comprendre l'architecture LayerZero 1. LayerZero fonctionne comme un protocole d'interopérabilité léger et sans autorisation qui permet la com...
Comment mettre en œuvre EIP-712 pour la vérification sécurisée des signatures ?
Jan 20,2026 at 10:20pm
Présentation de l'EIP-712 et objectif principal 1. EIP-712 définit une norme pour le hachage et la signature de données structurées typées dans le...
Comment se qualifier pour les parachutages en interagissant avec de nouveaux contrats ?
Jan 24,2026 at 09:00pm
Comprendre les exigences d'interaction contractuelle 1. La plupart des campagnes de largage nécessitent une interaction directe avec des contrats ...
Comment surveiller un contrat intelligent pour les alertes de sécurité ?
Jan 21,2026 at 07:59am
Outils de surveillance en chaîne 1. Les explorateurs de blockchain comme Etherscan et Blockscout permettent une inspection en temps réel du bytecode d...
Comment mettre en place et financer un contrat de paiements automatisés ?
Jan 26,2026 at 08:59am
Comprendre le déploiement de contrats intelligents 1. Les développeurs doivent sélectionner une plate-forme blockchain compatible telle que Ethereum, ...
Comment utiliser les contrats OpenZeppelin pour créer des dApps sécurisées ?
Jan 18,2026 at 11:19am
Comprendre les principes fondamentaux des contrats OpenZeppelin 1. OpenZeppelin Contracts est une bibliothèque de composants de contrats intelligents ...
Comment exécuter un message inter-chaînes avec un contrat LayerZero ?
Jan 18,2026 at 01:19pm
Comprendre l'architecture LayerZero 1. LayerZero fonctionne comme un protocole d'interopérabilité léger et sans autorisation qui permet la com...
Comment mettre en œuvre EIP-712 pour la vérification sécurisée des signatures ?
Jan 20,2026 at 10:20pm
Présentation de l'EIP-712 et objectif principal 1. EIP-712 définit une norme pour le hachage et la signature de données structurées typées dans le...
Comment se qualifier pour les parachutages en interagissant avec de nouveaux contrats ?
Jan 24,2026 at 09:00pm
Comprendre les exigences d'interaction contractuelle 1. La plupart des campagnes de largage nécessitent une interaction directe avec des contrats ...
Comment surveiller un contrat intelligent pour les alertes de sécurité ?
Jan 21,2026 at 07:59am
Outils de surveillance en chaîne 1. Les explorateurs de blockchain comme Etherscan et Blockscout permettent une inspection en temps réel du bytecode d...
Comment mettre en place et financer un contrat de paiements automatisés ?
Jan 26,2026 at 08:59am
Comprendre le déploiement de contrats intelligents 1. Les développeurs doivent sélectionner une plate-forme blockchain compatible telle que Ethereum, ...
Comment utiliser les contrats OpenZeppelin pour créer des dApps sécurisées ?
Jan 18,2026 at 11:19am
Comprendre les principes fondamentaux des contrats OpenZeppelin 1. OpenZeppelin Contracts est une bibliothèque de composants de contrats intelligents ...
Voir tous les articles














