-
Bitcoin
$114500
1.58% -
Ethereum
$3501
2.43% -
XRP
$2.920
4.81% -
Tether USDt
$1.000
0.02% -
BNB
$753.2
1.73% -
Solana
$162.0
2.29% -
USDC
$0.9999
-0.01% -
TRON
$0.3269
1.40% -
Dogecoin
$0.1992
3.34% -
Cardano
$0.7256
3.87% -
Hyperliquid
$38.44
4.13% -
Stellar
$0.3975
8.21% -
Sui
$3.445
3.43% -
Chainlink
$16.30
4.04% -
Bitcoin Cash
$544.4
3.65% -
Hedera
$0.2477
7.93% -
Ethena USDe
$1.001
0.04% -
Avalanche
$21.43
2.47% -
Toncoin
$3.623
3.18% -
Litecoin
$109.5
2.65% -
UNUS SED LEO
$8.960
-0.09% -
Shiba Inu
$0.00001220
3.14% -
Polkadot
$3.616
3.39% -
Uniswap
$9.174
4.11% -
Monero
$302.6
2.65% -
Dai
$0.0000
-0.01% -
Bitget Token
$4.330
1.74% -
Pepe
$0.00001049
3.88% -
Cronos
$0.1315
4.82% -
Aave
$259.6
3.75%
Comment une attaque de rentrée sur une blockchain se produit-elle?
Les attaques de retour exploitent les vulnérabilités du contrat intelligent en appelant à plusieurs reprises les fonctions avant la fin des transactions, risquant le drainage du fonds s'il n'est pas sécurisé correctement.
Apr 11, 2025 at 08:21 pm

Introduction aux attaques de rentrée
Une attaque de rentrée est un type d'exploit qui peut se produire sur les contrats intelligents de la blockchain, en particulier ceux qui gèrent les transactions financières. Ce type d'attaque profite des vulnérabilités dans le code du contrat, permettant à un attaquant d'appeler à plusieurs reprises une fonction avant la fin de la transaction initiale. Comprendre comment ces attaques se produisent est crucial pour les développeurs et les utilisateurs de protéger leurs actifs et de maintenir l'intégrité de la blockchain.
La mécanique d'une attaque de rentrée
Une attaque de rentrée cible généralement les contrats intelligents qui impliquent le transfert de fonds. L'attaque exploite une faille dans la logique du contrat où le contrat envoie des fonds à une adresse externe avant de mettre à jour son état interne. Voici comment cela fonctionne:
- Appel initial : un attaquant initie une transaction qui appelle une fonction dans le contrat intelligent vulnérable, qui est conçu pour envoyer des fonds à l'adresse de l'attaquant.
- Appel externe : Avant que le contrat ne mette à jour son état interne (par exemple, réduisant le solde de l'expéditeur), il envoie les fonds à l'adresse de l'attaquant.
- Réentr : L'adresse de l'attaquant est configurée pour appeler automatiquement la même fonction à nouveau lors de la réception des fonds, réintégrant ainsi le contrat avant que la transaction initiale ne soit entièrement traitée.
- LOOP : Ce processus peut se répéter plusieurs fois, permettant à l'attaquant de vider les fonds du contrat jusqu'à ce que la logique du contrat mette finalement à jour son état ou à court de fonds.
Code de contrat intelligent vulnérable
Pour comprendre comment une attaque de rentrée peut être exécutée, examinons un exemple simplifié d'un contrat intelligent vulnérable écrit en solidité, le langage de programmation utilisé pour les contrats intelligents Ethereum:
contract VulnerableContract {
mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); // Update the balance balances[msg.sender] -= amount; } function deposit() public payable { balances[msg.sender] += msg.value; }
}
Dans cet exemple, la fonction withdraw
envoie d'abord les fonds à l'appelant, puis met à jour le solde. Cette séquence permet à un attaquant de réintégrer le contrat avant que le solde ne soit mis à jour.
Exécuter une attaque de rentrée
Pour exécuter une attaque de rentrée, un attaquant devrait mettre en place un contrat malveillant qui peut automatiquement appeler la fonction withdraw
lors de la réception de fonds. Voici un exemple simplifié d'un tel contrat malveillant:
contract AttackContract {
VulnerableContract public vulnerableContract; constructor(address _vulnerableContractAddress) { vulnerableContract = VulnerableContract(_vulnerableContractAddress); } function attack() public { vulnerableContract.withdraw(vulnerableContract.balances(address(this))); } receive() external payable { if (address(vulnerableContract).balance >= msg.value) { vulnerableContract.withdraw(msg.value); } }
}
- Déploiement du contrat d'attaque : l'attaquant déploie le
AttackContract
et l'initialise avec l'adresse de laVulnerableContract
. - Initier l'attaque : l'attaquant appelle la fonction
attack
sur leAttackContract
, qui à son tour appelle la fonctionwithdraw
surVulnerableContract
. - Boucle de rentrée : lors de la réception de fonds, la fonction
receive
de l'AttackContract
appelle automatiquementwithdraw
, créant une boucle qui draine laVulnerableContract
.
Empêcher les attaques de rentrée
Pour éviter les attaques de rentrée, les développeurs doivent s'assurer que l'état interne du contrat est mis à jour avant que des appels externes ne soient effectués. Voici une version mise à jour du VulnerableContract
qui résiste aux attaques de retour:
contract SecureContract {
mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Update the balance first balances[msg.sender] -= amount; // Then send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); } function deposit() public payable { balances[msg.sender] += msg.value; }
}
Dans cette version sécurisée, le solde est mis à jour avant l'envoi des fonds, empêchant toute tentative de rentrée.
Exemples du monde réel d'attaques de rentrée
L'un des exemples les plus tristement célèbres d'une attaque de rentrée est le hack Dao sur la blockchain Ethereum en 2016. Le DAO (organisation autonome décentralisée) était un contrat intelligent conçu pour fonctionner comme un fonds de capital-risque, mais il contenait une vulnérabilité similaire à celle décrite ci-dessus. Un attaquant a exploité cette vulnérabilité pour égoutter environ 3,6 millions d'ETH du DAO, conduisant à une fourche dure de la blockchain Ethereum pour inverser l'attaque.
Un autre exemple est le piratage de portefeuille de parité en 2017, où les attaquants ont exploité une vulnérabilité de rentrée dans le portefeuille multi-signature parité, entraînant le vol de plus de 150 000 ETH.
Questions fréquemment posées
Q: Des attaques de rentrée peuvent-elles être détectées en temps réel sur une blockchain?
R: La détection des attaques de rentrée en temps réel peut être difficile en raison de la nature décentralisée des blockchains. Cependant, certaines plates-formes de blockchain et les entreprises de sécurité utilisent des outils de surveillance avancés et des algorithmes de détection d'anomalies pour identifier les modèles suspects qui peuvent indiquer une attaque de réintégration. Ces outils peuvent alerter les utilisateurs et les développeurs sur les vulnérabilités potentielles avant que des dommages importants ne se produisent.
Q: Tous les contrats intelligents sont-ils vulnérables aux attaques de rentrée?
R: Non, tous les contrats intelligents ne sont pas vulnérables aux attaques de retour. Les contrats qui n'impliquent pas le transfert de fonds ou qui ne font pas d'appels externes ne sont généralement pas sensibles. Cependant, tout contrat qui envoie des fonds à une adresse externe avant de mettre à jour son état interne peut être en danger.
Q: Quelles étapes les utilisateurs peuvent-ils prendre pour se protéger des attaques de rentrée?
R: Les utilisateurs peuvent se protéger en étant prudent pour interagir avec les contrats intelligents, en particulier ceux qui gèrent de grosses sommes d'argent. Ils devraient rechercher le code et les rapports d'audit du contrat, utiliser des plateformes réputées et conserver leurs fonds dans des portefeuilles sécurisés. De plus, rester informé des vulnérabilités communes et des meilleures pratiques en matière de sécurité des contrats intelligents peut aider les utilisateurs à prendre des décisions plus sûres.
Q: Comment les développeurs peuvent-ils s'assurer que leurs contrats intelligents sont sécurisés contre les attaques de rentrée?
R: Les développeurs peuvent s'assurer que leurs contrats intelligents sont sécurisés en suivant les meilleures pratiques telles que le modèle de «chèques-effets-interactions», où l'état interne du contrat est mis à jour avant que des appels externes ne soient effectués. Ils devraient également effectuer des audits de code complets, utiliser des outils de vérification formels et rester à jour sur les dernières directives de sécurité et vulnérabilités dans l'espace blockchain.
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.
-
KEEP
$0.09836
39.37%
-
XYO
$0.01172
25.29%
-
BLOCK
$0.2204
19.41%
-
TIBBIR
$0.1362
16.56%
-
KTA
$1.1
15.99%
-
SPK
$0.1079
15.93%
- Rotation altcoin, argent intelligent et tendances d'investissement: quel est le problème?
- 2025-08-04 12:30:11
- Crypto, Pi Network, Mouvement: Pi Coin est-elle la prochaine grande chose?
- 2025-08-04 12:30:11
- Bitcoin, Metaplanet et confiance institutionnelle: une nouvelle ère?
- 2025-08-04 12:50:12
- Prix XRP, CTO Ripple et financement tokenisé: une minute de New York sur Crypto
- 2025-08-04 12:50:12
- Pi Coin: Future Access ou Early Adoption Blues?
- 2025-08-04 12:55:11
- Ethereum Liquidations Rock Crypto Market: Qu'est-ce qu'un New-Yorkais à faire?
- 2025-08-04 13:00:17
Connaissances connexes

Quelle est la différence entre les transactions en chaîne et hors chaîne?
Aug 02,2025 at 04:22pm
Comprendre les transactions en chaîne Les transactions en chaîne se réfèrent aux transferts d'actifs numériques qui sont enregistrés directement s...

Comment les blocs sont-ils liés ensemble?
Aug 04,2025 at 06:56am
Comprendre la structure d'une blockchain Une blockchain est un registre numérique décentralisé composé d'une séquence de blocs, chacun contena...

Quel est le rôle d'un nœud dans un réseau de blockchain?
Aug 03,2025 at 03:16pm
Comprendre la fonction d'un nœud dans un réseau de blockchain Un nœud est une composante fondamentale de tout réseau de blockchain , agissant en t...

Comment les transactions sont-elles vérifiées sur une blockchain?
Aug 04,2025 at 12:35am
Comprendre le rôle des nœuds dans la vérification des transactions Dans un réseau de blockchain, les nœuds sont des composants fondamentaux responsabl...

Quel est le problème à double dépenses et comment la blockchain l'empêche-t-elle?
Aug 02,2025 at 01:07pm
Comprendre le problème à double dépenses Le problème à double dépenses est un défi fondamental dans les systèmes de monnaie numérique où le même jeton...

Quelle est la différence entre une blockchain et une base de données?
Aug 01,2025 at 09:36pm
Comprendre la structure centrale d'une blockchain Une blockchain est un grand livre numérique décentralisé qui enregistre les données dans une sér...

Quelle est la différence entre les transactions en chaîne et hors chaîne?
Aug 02,2025 at 04:22pm
Comprendre les transactions en chaîne Les transactions en chaîne se réfèrent aux transferts d'actifs numériques qui sont enregistrés directement s...

Comment les blocs sont-ils liés ensemble?
Aug 04,2025 at 06:56am
Comprendre la structure d'une blockchain Une blockchain est un registre numérique décentralisé composé d'une séquence de blocs, chacun contena...

Quel est le rôle d'un nœud dans un réseau de blockchain?
Aug 03,2025 at 03:16pm
Comprendre la fonction d'un nœud dans un réseau de blockchain Un nœud est une composante fondamentale de tout réseau de blockchain , agissant en t...

Comment les transactions sont-elles vérifiées sur une blockchain?
Aug 04,2025 at 12:35am
Comprendre le rôle des nœuds dans la vérification des transactions Dans un réseau de blockchain, les nœuds sont des composants fondamentaux responsabl...

Quel est le problème à double dépenses et comment la blockchain l'empêche-t-elle?
Aug 02,2025 at 01:07pm
Comprendre le problème à double dépenses Le problème à double dépenses est un défi fondamental dans les systèmes de monnaie numérique où le même jeton...

Quelle est la différence entre une blockchain et une base de données?
Aug 01,2025 at 09:36pm
Comprendre la structure centrale d'une blockchain Une blockchain est un grand livre numérique décentralisé qui enregistre les données dans une sér...
Voir tous les articles
