-
bitcoin $76624.373304 USD
-1.79% -
ethereum $2250.136487 USD
-1.36% -
tether $0.998277 USD
-0.04% -
bnb $691.737526 USD
-2.23% -
xrp $1.250415 USD
0.10% -
usd-coin $0.999636 USD
-0.01% -
solana $91.769993 USD
-2.60% -
tron $0.320718 USD
1.77% -
hyperliquid $83.540560 USD
-2.42% -
zcash $1129.534445 USD
-10.74% -
dogecoin $0.073771 USD
-2.08% -
monero $615.670132 USD
1.37% -
unus-sed-leo $9.294663 USD
-1.19% -
chainlink $11.068406 USD
-2.21% -
cardano $0.186724 USD
-2.00%
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.
-
PIEVERSE Échangez maintenant$1.18
11.06%
-
TRX Échangez maintenant$0.3207
2.17%
-
JST Échangez maintenant$0.1407
1.47%
-
WLFI Échangez maintenant$0.05029
0.82%
-
XMR Échangez maintenant$606.02
0.56%
-
XAUt Échangez maintenant$3913.20
0.45%
- Le prix de l’Avalanche AVAX baisse au milieu de problèmes plus larges du marché ; L’intérêt institutionnel reste fort
- 2026-11-03 12:35:02
- Pourquoi le prix quantitatif est-il en baisse ? Une plongée en profondeur dans la récente glissade de QNT au milieu de la nervosité du marché
- 2026-11-03 12:55:01
- Analyse du graphique des prix XRP d'Egrag Crypto : êtes-vous prêt pour la « plus grande vague 3 » ?
- 2026-11-03 01:15:01
- La société mère de Bed Bath & Beyond soutient l'accord SPAC d'une valorisation de 350 millions de dollars de tZERO : ce que les New-Yorkais doivent savoir
- 2026-11-03 01:15:01
- Arbitrum constate une augmentation du volume de transfert de Stablecoin, soutenu par un nouveau programme de croissance
- 2026-11-03 00:55:01
- Trump, la Corée du Nord et le braquage de Binance : un réseau de géopolitique et de criminalité numérique
- 2026-11-03 00:55:01
Connaissances connexes
Comment calculer le coût total de détention d'une position à terme BTCUSDT
Oct 26,2026 at 04:06am
Composantes du coût total des positions à terme BTCUSDT 1. Le coût total de détention d’une position à terme BTCUSDT comprend à la fois les frais expl...
Comment surveiller ensemble les taux de financement XRPUSDT et les intérêts ouverts
Oct 20,2026 at 06:39pm
Mécanique du taux de financement sur les contrats perpétuels XRPUSDT 1. Les taux de financement sur les swaps perpétuels XRPUSDT sont calculés toutes ...
Comment définir un stop-loss au seuil de rentabilité sur les contrats à terme perpétuels SOLUSDT
Oct 23,2026 at 09:34am
Comprendre les mécanismes de stop-loss au seuil de rentabilité 1. Un stop-loss au seuil de rentabilité est un ordre dynamique qui s'ajuste à la ha...
Comment utiliser le calculateur Binance Futures pour les transactions ETHUSDT
Oct 21,2026 at 02:00am
Comprendre l'interface du calculateur Binance Futures 1. La calculatrice est intégrée directement dans l'interface de trading Binance Futures,...
Comment vérifier le prix BTCUSDT avant une liquidation à terme
Oct 26,2026 at 12:20pm
Comprendre le prix Mark dans les contrats à terme BTCUSDT 1. Le prix mark est une valeur calculée utilisée par les bourses pour éviter les liquidation...
Comment ajuster l'effet de levier sur un contrat perpétuel TRUMPUSDT
Oct 30,2026 at 10:19pm
Comprendre la mécanique des contrats perpétuels TRUMPUSDT 1. TRUMPUSDT est un contrat à terme perpétuel thématique coté sur plusieurs bourses de produ...
Comment calculer le coût total de détention d'une position à terme BTCUSDT
Oct 26,2026 at 04:06am
Composantes du coût total des positions à terme BTCUSDT 1. Le coût total de détention d’une position à terme BTCUSDT comprend à la fois les frais expl...
Comment surveiller ensemble les taux de financement XRPUSDT et les intérêts ouverts
Oct 20,2026 at 06:39pm
Mécanique du taux de financement sur les contrats perpétuels XRPUSDT 1. Les taux de financement sur les swaps perpétuels XRPUSDT sont calculés toutes ...
Comment définir un stop-loss au seuil de rentabilité sur les contrats à terme perpétuels SOLUSDT
Oct 23,2026 at 09:34am
Comprendre les mécanismes de stop-loss au seuil de rentabilité 1. Un stop-loss au seuil de rentabilité est un ordre dynamique qui s'ajuste à la ha...
Comment utiliser le calculateur Binance Futures pour les transactions ETHUSDT
Oct 21,2026 at 02:00am
Comprendre l'interface du calculateur Binance Futures 1. La calculatrice est intégrée directement dans l'interface de trading Binance Futures,...
Comment vérifier le prix BTCUSDT avant une liquidation à terme
Oct 26,2026 at 12:20pm
Comprendre le prix Mark dans les contrats à terme BTCUSDT 1. Le prix mark est une valeur calculée utilisée par les bourses pour éviter les liquidation...
Comment ajuster l'effet de levier sur un contrat perpétuel TRUMPUSDT
Oct 30,2026 at 10:19pm
Comprendre la mécanique des contrats perpétuels TRUMPUSDT 1. TRUMPUSDT est un contrat à terme perpétuel thématique coté sur plusieurs bourses de produ...
Voir tous les articles














