Dans la DeFi, les dépôts, les prêts et les échanges sont exécutés automatiquement par des contrats intelligents, sans vérification humaine ni service client capable de récupérer les fonds envoyés par erreur. Si le contrat est bien écrit, c’est la règle la plus fiable qui soit ; s’il comporte une erreur, la faille sera elle aussi exécutée à la lettre.

Cours de la cryptomonnaie correspondante : $ETH 2247.47 (+0.27 % sur 24 h).

Le code fait loi, et les failles aussi :

Une fois déployés sur la blockchain, les contrats intelligents s’exécutent automatiquement selon leur code. Cela apporte transparence et prévisibilité : tout le monde peut lire le code et, pour les contrats non évolutifs, les règles ne changent pas parce que quelqu’un change d’avis.

À l’inverse, si une faille dans le code est découverte et exploitée, les fonds peuvent être transférés en quelques transactions, et il est alors difficile de les récupérer. The DAO, en 2016, en est un exemple : le contrat a été attaqué à cause d’une faille de réentrance. Ethereum a ensuite procédé à un hard fork ; la chaîne d’origine, qui n’a pas été forkée, a continué sous le nom d’Ethereum Classic (ETC).

Que couvre réellement un audit ?

Un audit de sécurité est une vérification effectuée par une équipe de sécurité tierce, à un moment donné, sur une version précise du code. Le rapport d’audit répertorie généralement les problèmes détectés, leur niveau de gravité et indique si le projet les a corrigés.

Les vérifications portent souvent sur la réentrance, les erreurs de contrôle d’accès, les problèmes de précision des calculs ou encore les risques de manipulation des oracles. Un audit aide à détecter et à réduire ces vulnérabilités courantes, mais il est limité par le temps, les ressources humaines et son périmètre.

Pourquoi des problèmes surviennent-ils malgré un audit ?

Premièrement, l’audit ne couvre que le périmètre de code défini. Les contrats qui en sont exclus et les fonctionnalités ajoutées par la suite ne sont pas concernés. Si le code est modifié après l’audit, ou si la version déployée diffère de celle qui a été auditée, les conclusions ne peuvent pas être appliquées directement.

Deuxièmement, certains risques ne se trouvent pas dans le code lui-même : un oracle ou un autre protocole dont dépend le protocole peut rencontrer un problème, la clé d’un administrateur disposant des droits de mise à niveau peut être volée, ou l’interface web peut être altérée pour inciter les utilisateurs à signer des transactions malveillantes. Tout cela peut entraîner des pertes.

Que peuvent faire les utilisateurs ordinaires ?

Quand vous consultez un rapport d’audit, vérifiez sa date, son périmètre et les problèmes qui n’ont pas encore été corrigés. Ne vous arrêtez pas aux mots « audité ». Vous pouvez aussi vérifier si le contrat peut être mis à niveau unilatéralement et si les droits de mise à niveau sont contrôlés par une multisignature et un verrou temporel.

Les protocoles qui fonctionnent depuis longtemps et ont résisté à la gestion de montants importants sont généralement considérés comme plus fiables, mais cela ne signifie pas qu’ils sont sans faille. Dans la DeFi, ne déposez que des fonds dont vous pouvez supporter la perte. Répartissez les sommes importantes entre plusieurs protocoles et pensez à révoquer les autorisations des protocoles que vous n’utilisez plus.

Mon avis :

Un audit est un point de départ pour la sécurité, pas une fin en soi. Il est plus réaliste de considérer le risque lié aux contrats intelligents comme un coût inévitable de la participation à la DeFi que de se fier aux mots « audité ». Ne faites pas de transactions avec de l’argent emprunté : le stress peut vous pousser à prendre de mauvaises décisions.

Vous avez quelque chose à ajouter ? Parlons-en dans les commentaires.