← Derniers articles
💻 computer science

Decoupling Reentrancy Protection from Smart Contract Implementation Logic

Ce papier présente Sentinel, un nouveau cadre basé sur un proxy qui découple la protection contre les réentrances de la logique des contrats intelligents pour atteindre une couverture de 100 % contre les principales attaques par réentrance, y compris les variantes en lecture seule, en interceptant les appels au niveau de la couche proxy grâce à un système de sécurité à double mode.

Auteurs originaux : Shashank Joshi, Wojciech Golab

Publié 2026-05-26
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Shashank Joshi, Wojciech Golab

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez le monde de la blockchain comme une banque animée et à haut risque où chacun peut écrire ses propres règles pour le mouvement de l'argent. Ces règles sont appelées Contrats Intelligents. Bien qu'ils soient puissants, ils présentent une faiblesse célèbre appelée Réentrance.

Le Problème : Le Coup du « Double-Compte »

Pour comprendre le problème, imaginez un guichetier de banque (le Contrat Intelligent) dont le rôle est de :

  1. Vérifier votre solde.
  2. Vous remettre votre argent.
  3. Ensuite mettre à jour le registre pour indiquer qu'il ne vous reste plus un seul dollar.

Dans un monde normal, cela est sûr. Mais dans le monde de la blockchain, le « guichetier » est un robot qui peut être interrompu. Un voleur astucieux (l'attaquant) peut appeler le guichetier pour retirer de l'argent. Avant que le guichetier n'ait terminé l'étape 3 (la mise à jour du registre), le robot contrat du voleur appelle le guichetier à nouveau pour retirer plus d'argent.

Comme le registre n'a pas encore été mis à jour, le guichetier pense toujours que le voleur dispose du montant intégral. Le voleur peut répéter cette boucle des dizaines de fois en une seule seconde, vidant le coffre-fort de la banque avant que le guichetier ne réalise qu'il y a un problème. Il s'agit d'une Attaque par Réentrance.

Les Anciennes Solutions : Le Panneau « Ne Pas Déranger »

Auparavant, les développeurs tentaient de résoudre ce problème en plaçant un panneau « Ne Pas Déranger » (un verrou) sur le bureau du guichetier.

  • Le Défaut : Ces panneaux étaient souvent collés sur des bureaux spécifiques (des fonctions spécifiques). Si un voleur trouvait une porte dérobée (une fonction différente) qui ne comportait pas de panneau, il pouvait tout de même entrer.
  • La Limitation : Si la banque possédait plusieurs succursales (plusieurs contrats) qui communiquaient entre elles, un panneau sur une succursale n'empêchait pas un voleur de courir entre les succursales pour tromper le système.
  • Le Point Aveugle : Ces panneaux bloquaient également les demandes légitimes de « simple consultation » (comme vérifier le solde sans dépenser), rendant la banque lente et lourde.

La Nouvelle Solution : Sentinel (Le Portier Intelligent)

Les auteurs de cet article, Shashank Joshi et Wojciech Golab, proposent un nouveau système appelé Sentinel. Au lieu d'essayer de réparer le bureau du guichetier, ils construisent un Portier Intelligent (un Proxy) qui se tient à l'entrée de la banque.

Voici comment Sentinel fonctionne, en utilisant des analogies simples :

1. Le Portier intercepte tout le monde

Peu importe qui tente d'entrer dans la banque ou ce qu'il souhaite faire, il doit d'abord passer par le Portier Sentinel. Le Portier ne se soucie pas des règles complexes à l'intérieur de la banque ; il se concentre uniquement sur la sécurité. Cela signifie que les règles internes de la banque (la logique métier) n'ont pas besoin d'être réécrites pour être sûres.

2. Deux Modes de Fonctionnement

Le Portier possède deux uniformes différents, ou « modes », selon le niveau de risque de la situation :

  • Mode Optimisé (Le Gardien d'un Seul Bureau) :
    Si la banque est petite et ne possède qu'une seule succursale, le Portier utilise un verrou simple et rapide sur la porte. C'est peu coûteux et rapide. Si quelqu'un tente de se faufiler à nouveau pendant que la porte est verrouillée, il est immédiatement repoussé. Cela est idéal pour des situations simples et à contrat unique.

  • Mode Haute Sécurité (Le Réseau de Sécurité Global) :
    Si la banque fait partie d'un vaste réseau de succursales, le Portier se connecte à un Hub de Sécurité Central (appelé LockRegistry).

    • Imaginez que le Portier appelle le Hub Central : « La Succursale A est-elle actuellement occupée ? »
    • Si le Hub répond « Oui », le Portier bloque l'entrée.
    • Cela empêche les voleurs de courir entre différentes succursales pour tromper le système. Il coordonne la sécurité sur l'ensemble du réseau, et non pas seulement dans une seule pièce.

3. L'Exception « Simple Consultation »

Une chose délicate de la blockchain est que parfois, les gens veulent simplement regarder le solde sans dépenser (ce qu'on appelle un staticcall).

  • Les anciens verrous bloquaient ces observateurs, causant des retards.
  • Sentinel est assez intelligent pour détecter si quelqu'un est simplement en train de « regarder ». S'il en est ainsi, le Portier les laisse jeter un coup d'œil par la fenêtre sans verrouiller la porte, mais il les surveille de près pour s'assurer qu'ils ne tentent pas de se faufiler par la porte de derrière pendant qu'ils regardent.

Pourquoi Cela Compte

Les auteurs ont testé Sentinel contre 70 contrats intelligents différents connus pour être vulnérables à ces attaques.

  • Le Résultat : Sentinel a bloqué 100 % des attaques, y compris les plus astucieuses qui se produisent entre différents contrats ou impliquent des astuces de « simple consultation ».
  • Comparaison : Les anciens outils standards (comme la garde d'OpenZeppelin) n'ont bloqué que environ 73 % des attaques. Ils ont échoué face aux coups complexes entre plusieurs contrats.
  • Coût : Le « Portier » coûte un peu d'énergie supplémentaire (gas) pour fonctionner, mais les auteurs affirment que c'est un petit prix à payer pour éviter des vols de millions de dollars.

La Conclusion

Cet article présente un moyen de séparer la sécurité d'un contrat intelligent de sa logique métier. En plaçant un « Portier » intelligent et adaptable devant le contrat, ils peuvent empêcher les voleurs d'exploiter les lacunes temporelles du système, quelle que soit la complexité des règles internes du contrat. Il s'agit d'un passage de la tentative de colmater chaque trou possible dans le mur à la construction d'une porte impénétrable.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →