Réentrance non détectée : anatomie chiffrée d'un audit qui tourne au procès
Une fonction de retrait, un appel externe avant la mise à jour du solde, et 3,2 millions s'évaporent en une transaction. Comment un détail manqué dans le rapport se transforme en procédure contre l'auditeur.
- La réentrance reste l'une des failles les plus coûteuses du Web3 : un appel externe placé avant la mise à jour de l'état permet de vider un contrat en boucle.
- Dans notre scénario reconstitué, 3,2 M€ disparaissent en une transaction sur un protocole audité trois semaines plus tôt.
- L'auditeur est mis en cause pour ne pas avoir signalé l'absence du pattern checks-effects-interactions sur la fonction concernée.
- Au-delà de l'indemnisation, c'est la facture de défense (expertise, avocats Web3, procédure) qui menace le patrimoine de l'auditeur indépendant.
La faille : pourquoi la réentrance fait encore des ravages
La réentrance (reentrancy) est la vulnérabilité fondatrice du Web3 — celle qui a provoqué le hack historique du DAO en 2016. Le principe est d'une simplicité redoutable. Une fonction de retrait envoie d'abord les fonds à l'appelant, puis met à jour son solde interne. Entre ces deux instructions, le contrat attaquant — appelé via un mécanisme de callback — rappelle la fonction de retrait. Comme le solde n'a pas encore été décrémenté, le contrat croit que l'attaquant a toujours droit à ses fonds, et paie une seconde fois. Puis une troisième. En boucle, jusqu'à épuisement de la trésorerie.
La parade est connue depuis près d'une décennie : le pattern checks-effects-interactions (vérifier, modifier l'état, puis seulement interagir avec l'extérieur), ou l'usage d'un ReentrancyGuard. C'est précisément parce que la parade est si bien documentée qu'un auditeur qui laisse passer une réentrance se trouve en position défensive très inconfortable : il ne pourra pas plaider la faille exotique imprévisible.
Le scénario qui suit est une reconstitution réaliste, à partir de cas réels anonymisés. Les montants et le déroulé sont représentatifs de ce que vit un auditeur indépendant mis en cause.
Le déroulé : trois semaines entre l'audit et l'exploit
Semaine 0. Un protocole de prêt décentralisé mandate un auditeur freelance pour réviser ses contrats avant le lancement public. Honoraires : 9 500 €. Délai : huit jours. Le scope couvre quatre contrats Solidity, dont le module de staking qui gère les dépôts et retraits des utilisateurs.
Semaine 1. L'auditeur rend un rapport propre : quelques findings de sévérité basse et moyenne, une recommandation sur la gestion des oracles, aucune faille critique. Le protocole corrige les points mineurs et déploie en production. La TVL grimpe rapidement à plus de 4 millions d'euros.
Semaine 3. Un attaquant repère que la fonction unstake() envoie les tokens à l'utilisateur avant de mettre à jour la variable de solde. Il déploie un contrat malveillant, déclenche la boucle de réentrance, et vide 3,2 M€ en une seule transaction. Les fonds transitent par un mixeur en quelques minutes. Irrécupérables.
Le rapport d'audit mentionnait la fonction unstake() dans le périmètre, mais ne signalait aucun problème d'ordonnancement des opérations. C'est ce silence qui fonde la mise en cause.
Dans les heures qui suivent, l'incident fait le tour des réseaux. Le nom de l'auditeur, listé dans le rapport public, est associé partout au protocole hacké.
La mise en cause : ce qu'on reproche concrètement à l'auditeur
Le protocole, soutenu par certains de ses gros déposants, engage une action en responsabilité pour faute professionnelle. L'argumentaire est précis et c'est ce qui le rend dangereux :
- La fonction vulnérable était explicitement dans le périmètre de l'audit ;
- La faille relève du pattern de réentrance, la plus documentée de tout l'écosystème — donc difficile à présenter comme imprévisible ;
- Un outil d'analyse statique standard (Slither, Mythril) signale ce type de schéma : ne pas l'avoir détecté suggère soit un audit superficiel, soit une lecture incomplète des résultats d'outillage.
Face à cela, l'auditeur dispose d'arguments — délai contraint, version auditée différente de la version déployée, responsabilité du client qui n'a pas commandé de re-test après modifications. Mais ces arguments doivent être prouvés et plaidés, ce qui suppose une défense technique et juridique solide. C'est exactement là qu'intervient une RC Pro couvrant la faute, l'erreur d'analyse et l'omission de faille.
La facture : pourquoi les frais de défense font plus mal que l'indemnité
On imagine souvent que le risque, c'est de devoir rembourser les 3,2 M€. En pratique, peu d'auditeurs indépendants ont un patrimoine permettant une telle indemnisation, et les plafonds de garantie comme les clauses contractuelles limitent généralement l'exposition finale. Le danger immédiat est ailleurs : les frais de défense, qui démarrent dès la première mise en cause, bien avant tout jugement.
| Poste | Estimation |
|---|---|
| Expertise technique blockchain (reconstitution de l'exploit) | 12 000 € à 25 000 € |
| Honoraires avocat spécialisé Web3 | 20 000 € à 60 000 € |
| Frais de procédure et traduction (contentieux international) | 5 000 € à 15 000 € |
| Perte d'activité pendant la gestion du litige | difficilement chiffrable |
On atteint vite 40 000 à 100 000 € de frais avant même de savoir si la responsabilité sera retenue. Pour un freelance facturant entre 5 000 et 15 000 € par mission, c'est plusieurs années de chiffre d'affaires englouties. Une RC Pro prend ces frais en charge dès le départ, ce qui change tout : vous vous défendez sérieusement au lieu de capituler faute de trésorerie.
Les enseignements : se protéger avant et après l'exploit
Ce sinistre reconstitué livre quatre leçons applicables immédiatement :
- Documentez votre méthodologie. Indiquez dans le rapport les outils utilisés (Slither, Mythril, Foundry), les patterns vérifiés et les hypothèses. En cas de litige, cette traçabilité démontre votre diligence.
- Figez et horodatez la version auditée. Le commit hash exact dans le rapport est votre meilleure preuve qu'un redéploiement post-audit a échappé à votre périmètre.
- Cadrez le délai par écrit. Si un client impose huit jours sur un scope qui en exigerait quinze, mentionnez-le. Un audit bâclé sous contrainte de délai reste votre responsabilité, sauf à l'avoir documenté.
- Assurez-vous avant la première mission. La RC Pro ne se souscrit pas après le sinistre. Pour un auditeur smart contract, la couverture est accessible dès quelques dizaines d'euros par mois : voir la page assurance auditeur smart contract.
La réentrance ne disparaîtra pas. Tant qu'il y aura des fonctions de retrait mal ordonnées, il y aura des exploits — et des auditeurs mis en cause. La question n'est pas de savoir si vous serez parfait, mais comment vous tiendrez le jour où une faille passera.
Questions fréquentes
En principe non, à condition de le prouver. C'est pourquoi le rapport doit mentionner le commit hash exact et la version auditée. Si le client redéploie une version modifiée sans re-test, la faille introduite après votre audit sort de votre périmètre. Sans cette traçabilité, vous risquez d'être présumé responsable de l'ensemble.
Pas automatiquement. Avoir accepté un délai contraint ne vous exonère pas : vous restez tenu d'une obligation de moyens renforcée. En revanche, si vous avez documenté par écrit que le délai ne permettait pas une couverture exhaustive du scope, cet élément pèse en votre faveur dans l'appréciation de la faute.
La couverture des pertes directes de fonds utilisateurs reste plafonnée et encadrée par les conditions du contrat. En pratique, l'apport décisif de la RC Pro porte sur les frais de défense (expertise, avocats, procédure) et la prise en charge de votre responsabilité civile, qui sont les postes qui menacent réellement le patrimoine d'un auditeur indépendant.
Parce qu'un contentieux blockchain cumule expertise technique pointue (reconstitution de l'exploit sur la chaîne), avocats rares spécialisés sur ces sujets, et dimension souvent internationale (traduction, droit applicable). On atteint vite 40 000 à 100 000 € avant le premier jugement, d'où l'intérêt d'une assurance qui avance ces frais.
Non. Les outils d'analyse statique sont une aide, pas une garantie : ils produisent des faux positifs et des faux négatifs. Mentionner leur usage renforce votre diligence, mais la qualité de l'interprétation des résultats reste de votre responsabilité. Un schéma de réentrance signalé par l'outil et ignoré dans le rapport est particulièrement difficile à défendre.
Souscrivez votre assurance pro en 2 minutes
Toutes nos protections pour votre activité de Auditeur smart contract — attestation immédiate, sans engagement.
* Tarifs indicatifs « à partir de », selon votre profil, votre activité et les garanties choisies. · Voir la fiche Auditeur smart contract →
Article rédigé et vérifié par l'équipe Insurio — Tutassûr, courtier en assurance immatriculé à l'ORIAS sous le n° 22001730. Information à caractère général ne se substituant pas aux conditions de votre contrat.