Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Blockchain Dernière mise à jour : 4 septembre 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Les attaques de réentrée peuvent avoir de graves impacts sur vos finances, vos données, votre réseau et votre crédibilité.

C’est pourquoi assurer la sécurité est de la plus haute importance dans le monde de la blockchain et des contrats intelligents.

Pour cela, il est essentiel de bien comprendre comment ces attaques fonctionnent et comment les attaquants exploitent les vulnérabilités des contrats intelligents, épuisant les fonds et provoquant des perturbations. 

Il est également nécessaire de mettre en œuvre des stratégies efficaces afin de protéger vos projets blockchain et vos contrats intelligents contre les attaques de réentrance.

Dans cet article, je parlerai de ce que sont les attaques par réentrée, de leurs différents types, de la façon dont elles peuvent potentiellement nuire à vos actifs numériques et de quelques mesures pratiques pour assurer leur sécurité.

Commençons!

What Are Reentrancy Attacks?

Les attaques par réentrée sont des tactiques habiles utilisées par les cybercriminels pour exploiter les vulnérabilités des contrats intelligents, en particulier ceux opérant sur les plateformes blockchain.

Imaginons un scénario : vous démarrez une transaction, mais avant qu'elle ne soit terminée, un attaquant déclenche à nouveau la même fonction. Cette tactique à double entrée permet à l'attaquant de retirer continuellement des fonds ou d'effectuer des actions avant que la transaction initiale ne soit entièrement traitée.

Que sont les attaques de réentrée
La source: Twitter (@chainlink)

Il y a aussi un piège lorsqu'il s'agit de contrats intelligents. Ces contrats mettent généralement à jour l’état et le solde uniquement une fois la transaction terminée. Cela crée une opportunité pour les attaquants de manipuler la logique du contrat et de voler des actifs. 

Les attaques par réentrée ont entraîné des pertes financières et des failles de sécurité dans le monde de la blockchain. Pour mieux protéger vos actifs numériques et vos contrats intelligents, il est important de comprendre le concept d'attaques par réentrée. 

Types of Reentrancy Attacks

Il existe différents types d'attaques de réentrée. Chacun de ces types exploite différents aspects de la fonctionnalité des contrats intelligents pour obtenir un accès non autorisé, manipuler des données ou siphonner des actifs.

Vérifions-les un par un.

# 1. Attaque de réentrée de base

Attaque de réentrée de base
La source: CertiK

Dans cette attaque, quelqu'un exploite une simple erreur dans la configuration d'un contrat intelligent. Ils trouvent une action particulière que le contrat fait et continuent de la faire rapidement, l'une après l'autre, avant que le contrat n'ait une chance de rattraper son retard. 

Cela perturbe la façon dont le contrat assure le suivi des choses, entraînant des problèmes tels que retirer de l'argent sans autorisation ou obliger le contrat à faire des choses qu'il n'était pas censé faire.

# 2. Attaque de réentrée avancée

C'est comme une version plus compliquée de l'attaque de base. L'attaquant crée une situation dans laquelle un contrat communique avec un autre contrat, et il fait en sorte que cette communication se produise de manière sournoise. Grâce à cette configuration sournoise, l'attaquant peut faire en sorte que le deuxième contrat fasse des choses qu'il ne devrait pas faire, même s'il dispose d'un mécanisme de défense contre ces choses. 

Il est donc plus difficile de détecter et d’arrêter ces attaques, car elles impliquent la collaboration de plusieurs contrats.

# 3. Attaque de réentrance interfonctionnelle

Dans ce type d’attaque, quelqu’un perturbe un contrat intelligent en jouant avec différentes parties connectées de celui-ci. Ils découvrent comment une partie communique avec une autre et utilisent cette connexion pour confondre le contrat et lui faire faire des choses qu'il n'est pas censé faire. 

Ce type d’attaque nécessite une compréhension approfondie de la manière dont les différentes parties du contrat interagissent.

# 4. Attaque de réentrée entre contrats

Attaques de réentrée entre contrats
La source: ResearchGate

Dans ce type de contrat, l’attaquant va au-delà d’un seul contrat et examine la manière dont les différents contrats communiquent entre eux. Ils trouvent des points faibles dans la manière dont ces contrats communiquent et utilisent ces points faibles pour créer des problèmes. Ces problèmes pourraient se propager à de nombreux contrats, provoquant un désordre dans l’ensemble du réseau blockchain.

# 5. Attaque de réentrée gardée

Dans cette attaque délicate, l’attaquant attend le bon moment. Ils surveillent des événements spécifiques qui se produisent dans un contrat intelligent, comme l'expiration d'un délai ou le respect de certaines conditions. Une fois le moment venu, ils font rapidement en sorte que le contrat fasse quelque chose de mal. Parce qu’ils attendent juste le bon moment, il est difficile de les surprendre en flagrant délit.

Benefits of Securing Blockchain and Smart Contracts

Certains des avantages pratiques de la sécurisation de la blockchain et des contrats intelligents sont les suivants :

Protection contre les accès non autorisés

La sécurisation de votre blockchain et de vos contrats intelligents aide à empêcher les accès non autorisés.

C'est comme construire un château numérique qui ne permettrait l'entrée qu'aux personnes autorisées. Cet environnement fortifié protège vos données et actifs précieux, offrant un sanctuaire sécurisé contre les violations potentielles.

Prévenir les fuites de données

Lorsque vous accordez la priorité à la sécurité de votre blockchain, vous placez essentiellement un verrou incassable sur vos données. Ce verrouillage rend extrêmement difficile la manipulation de vos données par quiconque sans autorisation appropriée. 

Prévenir les fuites de données

Grâce à cette protection robuste, vous pouvez garantir l’intégrité constante de vos enregistrements, transactions et informations sensibles importants.

Atténuation des attaques de réentrée

En mettant en œuvre des mesures de sécurité approfondies, vous pouvez prévenir efficacement les attaques par réentrée. Ces tactiques trompeuses exploitent les vulnérabilités des contrats intelligents. En assurant la sécurité de ces contrats, vous créez une barrière de protection contre les tentatives malveillantes d'exploitation des faiblesses du système.

Confiance et transparence accrues

La sécurité est essentielle pour instaurer la confiance et la transparence dans le secteur de la blockchain. La forte protection des transactions et des données garantit que les échanges sont infalsifiables et équitables. Cela suscite un plus grand sentiment de confiance dans toutes les relations commerciales et tous les partenariats.

Les parties prenantes peuvent constater par elles-mêmes que les transactions restent inchangées, renforçant ainsi leur confiance dans l'intégrité de vos opérations.

Pertes financières minimisées

Investir dans la sécurité de votre blockchain et de vos contrats intelligents offre un avantage significatif en minimisant les risques financiers.

Prévenir-les-pertes-financières-

En protégeant ces actifs numériques, vous pouvez réduire le risque de pertes monétaires causées par des cyberattaques ou des activités frauduleuses. Cela protège vos intérêts financiers et améliore la santé financière globale de vos projets en décourageant les accès non autorisés et la manipulation des données.

En plus d'offrir une protection, les mesures de sécurité que vous utilisez pour votre blockchain et vos contrats intelligents présentent également des avantages juridiques. Cela est important, en particulier dans les secteurs soumis à des réglementations strictes en matière de protection des données, comme la finance, la santé, etc.

En garantissant le respect de ces cadres légaux, vous restez en sécurité et évitez les sanctions légales. La sécurisation des données préserve également votre réputation auprès des clients. 

Efficacité et économies de coûts

Investir de manière proactive dans la sécurité protège non seulement vos actifs numériques, mais apporte également des gains d’efficacité à long terme. Cela peut réduire les ressources et les efforts nécessaires pour réparer les violations, lutter contre la fraude ou se remettre des cyberattaques.

How Do Reentrancy Attacks Work? 

Comment fonctionnent les attaques de réentrée
La source: ResearchGate

Les attaques de réentrée ciblent les programmes informatiques et exploitent la façon dont ils gèrent les ressources comme la mémoire. Voici comment ils fonctionnent :

Appel de fonction

Un contrat intelligent peut avoir une fonction qui vous permet de retirer de l'argent. Lorsque vous demandez un retrait, le contrat déclenche le mouvement pour vous remettre vos fonds.

Mouvements rapides

L’attaquant commence par appeler rapidement la fonction de retrait plusieurs fois, l’une après l’autre, avant que le contrat ne puisse terminer le traitement de la première requête.

Supercherie du timing

Alors que le contrat est occupé à traiter la première demande, les appels répétés de l'attaquant se faufilent et déclenchent de nouveaux retraits, même si le premier n'est pas encore terminé.

La torsion

C'est ici que l'astuce entre en jeu : les retraits répétés de l'attaquant peuvent interagir avec le processus en cours depuis le premier retrait. Ils peuvent même tromper le contrat en lui faisant envoyer de l’argent plusieurs fois.

Doubles avantages

Essentiellement, l’attaquant peut retirer de l’argent plusieurs fois pour le prix d’une seule demande. C'est comme demander votre monnaie après avoir payé quelque chose et obtenir de la monnaie supplémentaire à chaque fois.

Résultats inattendus

Ces actions répétées peuvent également perturber la compréhension que le contrat a de son propre état. Cela peut conduire à des comportements involontaires, voire à des failles de sécurité.

Les attaques de réentrée exploitent l'incapacité du contrat à gérer ces demandes rapides et qui se chevauchent. Ils créent essentiellement une situation chaotique dans laquelle la logique du contrat se mélange, permettant à l'attaquant de drainer plus qu'il n'est censé le faire.

How Smart Contracts Can Fall Victim to Reentrancy Attacks?

Les contrats intelligents, conçus pour automatiser et exécuter des transactions, peuvent de manière inattendue être la proie d'attaques de réentrée en raison de leurs caractéristiques uniques. Voici comment cela peut se produire :

Changements d'état non vérifiés

Changements d'état non vérifiés
La source: Académie Blockchain Mittweida

Les contrats intelligents ne vérifient pas toujours si un appel de fonction a été terminé avant d'autoriser un autre appel. Les attaquants profitent de cette faille en appelant une fonction à plusieurs reprises avant qu'elle ne se termine, modifiant ainsi l'état du contrat de manière imprévisible.

Mises à jour incomplètes du solde

Les contrats intelligents mettent souvent à jour les soldes des comptes une fois la transaction terminée. Les attaquants exploitent cette lacune en retirant des fonds à plusieurs reprises avant que le contrat ne puisse rattraper son retard, ce qui conduit à des soldes inexacts.

Vulnérabilités des fonctions dépendantes

Lorsqu’une fonction d’un contrat intelligent dépend d’une autre, les attaquants peuvent manipuler cette relation. Grâce au déclenchement répétitif de ces fonctions en séquence rapide, ils peuvent exploiter les faiblesses et accéder sans autorisation.

Problème d'appels asynchrones

Les appels asynchrones dans les contrats intelligents peuvent créer des ouvertures pour les attaquants. Ils appellent une fonction, interrompent son exécution avec un autre appel et exploitent l'état partiellement mis à jour. Cela peut conduire à des actions involontaires.

Interactions contractuelles externes

L'interaction avec des contrats externes peut exposer des vulnérabilités. Les attaquants créent un contrat pour rappeler le contrat cible avant que ses défenses ne s'activent, contournant ainsi les mesures de sécurité prévues.

Verrous Mutex non protégés

Les verrous Mutex empêchent l'exécution simultanée de plusieurs fonctions, garantissant ainsi la stabilité. S’ils ne sont pas correctement protégés, les attaquants peuvent abuser de ce mécanisme en exécutant la même fonction à plusieurs reprises avant que le verrou ne s’active.

Exploitation des conditions de concurrence

Race-Condition-Exploitation
La source: Wallarm

Les attaquants exploitent les conditions de concurrence – où différentes actions se produisent en fonction du timing – en appelant rapidement des fonctions. Cette manipulation perturbe la séquence d'opérations prévue, conduisant à des actions non autorisées.

Dépendance aux données externes

Si un contrat repose sur des données externes, les attaquants peuvent manipuler ces données pour inciter le contrat à adopter des comportements inattendus, en exploitant la confiance du contrat dans les informations externes.

How to Prevent Reentrancy Attacks?

Voici quelques moyens simples de prévenir une attaque de réentrance et d’assurer la sécurité de vos contrats intelligents :

Utilisez le modèle de retrait

Lors de la conception de vos contrats intelligents, pensez à adopter le modèle de retrait. Cette approche consiste à réorganiser la séquence des opérations au sein de votre contrat. Plus précisément, assurez-vous que les mises à jour du solde sont exécutées avant que tout retrait ne soit autorisé.

En suivant ce modèle, vous créez un système dans lequel le solde est ajusté avec précision avant le déblocage des fonds. Cela élimine la fenêtre de vulnérabilité que les attaquants exploitent souvent lors des attaques de réentrance.

Utiliser des verrous Mutex pour les appels de fonction

Les verrous Mutex agissent comme des portes numériques qui ne permettent le passage qu'un seul processus à la fois. Lorsqu'ils sont appliqués aux contrats intelligents, ils empêchent l'exécution simultanée de plusieurs appels de fonction.

En utilisant des verrous mutex, vous garantissez que chaque fonction est terminée avant qu'une autre ne démarre. Cela empêche les attaquants de déclencher rapidement la même fonction pour manipuler l'état du contrat, mettant ainsi fin à leurs exploits de réentrée.

Adoptez le modèle Check-Effets-Interactions

Effet d'interaction
La source: Communauté DEV

Le modèle de vérification des effets et des interactions est une pratique de codage qui donne la priorité à la sécurité. Commencez par vérifier les conditions et les soldes utilisateur requis pour l’exécution de la fonction. Ensuite, effectuez l'action souhaitée.

Enfin, mettez à jour l’état du contrat. Cette séquence d'étapes minimise l'exposition aux attaques de réentrance en garantissant que les changements d'état ne sont effectués qu'après une validation approfondie. Ainsi, cela réduit les possibilités pour les attaquants de manipuler les incohérences.

Limiter les appels externes aux contrats de confiance

Les interactions avec les contrats externes introduisent des vulnérabilités. Pour atténuer ce risque, limitez les appels externes aux contrats dignes de confiance et minutieusement vérifiés.

En limitant les interactions à des contrats fiables, vous réduisez les risques que des attaquants exploitent des contrats externes malveillants pour lancer des attaques de réentrance.

Mettre en œuvre des gardes de réentrée

Un gardien de réentrée est comme une porte de sécurité qui empêche les entrées non autorisées. Intégrez ces gardes dans la logique de votre contrat intelligent. Ils surveillent si une fonction est déjà en cours d'exécution et rejettent tout appel supplémentaire jusqu'à ce que l'opération en cours soit terminée. 

Cela contrecarre efficacement les tentatives des attaquants d’exploiter la vulnérabilité de réentrance du contrat.

Évitez de changer l'état externe 

Dans les moments critiques, soyez prudent face aux changements d’état externe. Avant d’exécuter des actions cruciales au sein de votre contrat, évitez d’apporter des modifications à l’état externe.

Cela crée un environnement plus contrôlé, empêchant les attaquants de falsifier l'état du contrat lors de transactions cruciales.

Fixez des limites de gaz appropriées

Lorsque vous lancez des transactions sur une blockchain, vous attribuez des limites de gaz pour garantir que les calculs peuvent être effectués dans un seuil prédéfini. Pour éviter les attaques de réentrée, assurez-vous que vos limites de gaz sont définies de manière appropriée.

Les transactions qui s'épuisent prématurément peuvent laisser le contrat dans un état incohérent, l'exposant potentiellement à des vulnérabilités que des attaquants pourraient exploiter.

Appliquer les contrôles d'accès et les autorisations

Appliquer les contrôles d'accès et les autorisations

Intégrez des mécanismes de contrôle d’accès stricts dans vos contrats intelligents. Établissez des rôles et des autorisations d'utilisateur pour garantir que seules les entités autorisées peuvent interagir avec des fonctions particulières. Pour renforcer la sécurité et prévenir les attaques par réentrée, une mesure efficace consiste à réglementer l’accès à des fonctions spécifiques.

En limitant les personnes pouvant appeler ces fonctions, vous réduisez les vulnérabilités potentielles que les attaquants pourraient exploiter.

Utiliser des modificateurs de fonction

Les modificateurs de fonction agissent comme des filtres qui vous permettent d'appliquer des conditions prédéfinies à plusieurs fonctions au sein de votre contrat intelligent.

En utilisant des modificateurs, vous pouvez appliquer des contrôles sur les appels de fonction pour vous assurer que certaines conditions sont remplies avant l'exécution. Cela peut inclure la vérification que l'expéditeur de la transaction est le propriétaire du contrat ou la confirmation de la disponibilité de fonds suffisants.

Audit et tests

Auditez régulièrement vos contrats intelligents pour détecter les vulnérabilités et effectuez des tests approfondis. Les audits de sécurité externes professionnels aident à identifier les zones vulnérables que les attaquants pourraient potentiellement cibler.

Pour garantir la sécurité de votre contrat, il est important d'effectuer des tests approfondis, qui incluent la simulation d'attaques potentielles. Cela vous permet d'identifier et de corriger les vulnérabilités avant de déployer le contrat.

Conclusion

Comprendre les attaques de réentrée et leurs impacts sur votre blockchain et vos contrats intelligents est important afin de garantir la sécurité.

En intégrant des stratégies de sécurité telles que le contrôle d'accès, l'utilisation de verrous mutex et la mise en œuvre de procédures de test appropriées, vous pouvez établir une défense solide contre ces attaques. 

De cette façon, vous pouvez protéger vos actifs et transactions numériques et garantir l’intégrité de votre écosystème blockchain. De plus, restez toujours vigilant, informé et déterminé à créer un paysage numérique plus sûr dans votre organisation.

Vous pouvez également explorer ce que Attaques en file d'attente que vous êtes et comment vous en protéger.

  • Amrita Pathak
    Auteur
    Amrita est rédactrice indépendante et rédactrice de contenu. Elle aide les marques à améliorer leur présence en ligne en créant un contenu impressionnant qui connecte et convertit. Elle a complété son baccalauréat en technologie (B.Tech) en génie aéronautique…. lire la suite
  • Narendra Mohan Mittal
    Éditeur

    Narendra Mohan Mittal est stratège principal en stratégie de marque numérique et éditeur de contenu avec plus de 12 ans d'expérience polyvalente. Il est titulaire d'un M-Tech (médaillé d'or) et d'un B-Tech (médaillé d'or) en informatique et ingénierie.


    ... lire la suite
Merci à nos commanditaires
Plus de bonnes lectures sur Blockchain
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder