Le code n’est pas la loi s’il a des bugs
La promesse de la DeFi est que les smart contracts s’exécutent automatiquement et sans confiance. La réalité est que les smart contracts sont des programmes écrits par des humains, et les humains écrivent du code bugué. Comme les protocoles DeFi détiennent des millions voire des milliards en actifs, les bugs sont financièrement catastrophiques. Plus de 3 milliards de dollars ont été perdus à cause d’exploits de smart contracts depuis les débuts de la DeFi, et ce nombre continue de croître.
Catégories de risque des smart contracts
Les attaques par réentrance sont parmi les plus anciennes et les plus célèbres. Le piratage du DAO en 2016 a exploité une vulnérabilité de réentrance pour drainer environ 60 millions de dollars (au prix de l’ETH en 2016). Le schéma d’attaque implique un contrat appelant une fonction externe qui rappelle ensuite le contrat d’origine avant que le premier appel ne se termine, permettant des retraits répétés.
La manipulation d’oracles est de plus en plus courante. De nombreux protocoles DeFi s’appuient sur des oracles de prix (Chainlink, Uniswap TWAP) pour déterminer la valeur des actifs. Si un attaquant peut manipuler temporairement le prix de l’oracle, il peut tromper le protocole pour exécuter des trades ou des liquidations à des prix incorrects. Les attaques par flash loan exploitent fréquemment la manipulation d’oracle car l’attaquant peut emprunter des sommes massives de capital, manipuler un prix, exploiter un protocole et rembourser le prêt dans une seule transaction.
Les erreurs de logique sont des bugs dans la logique métier du contrat. Le code compile et s’exécute sans plantage, mais il ne fait pas ce que les développeurs avaient prévu dans certaines conditions limites. Ce sont les vulnérabilités les plus difficiles à trouver car elles nécessitent de comprendre à la fois le code et le comportement attendu.
Les attaques de gouvernance se produisent quand un attaquant accumule suffisamment de tokens de gouvernance pour faire passer une proposition malveillante. Si la gouvernance d’un protocole peut changer les paramètres clés (structures de frais, ratios de collatéral, dépenses de trésorerie), contrôler la gouvernance équivaut à contrôler le protocole.
Comment évaluer le risque
Le statut d’audit est nécessaire mais pas suffisant. Un protocole audité par un cabinet réputé (Trail of Bits, OpenZeppelin, Consensys Diligence) est plus sûr qu’un protocole non audité, mais les audits ne garantissent pas la sécurité. De nombreux protocoles exploités avaient été audités.
Le temps passé en production compte. Un protocole qui a détenu 500 millions de dollars en TVL pendant deux ans sans incident est significativement plus sûr qu’un protocole lancé le mois dernier, quel que soit le statut d’audit. Le passage du temps sans exploits est une preuve (non définitive) que les principaux vecteurs d’attaque ont été couverts.
La complexité du code est un facteur de risque. Les protocoles plus simples avec moins de lignes de code et moins de dépendances externes ont des surfaces d’attaque plus petites. Les protocoles qui composent plusieurs autres protocoles (empilant le rendement sur trois ou quatre couches DeFi) multiplient le risque car une vulnérabilité dans n’importe quelle couche peut affecter toute la pile.
Dimensionner votre exposition DeFi
L’implication pratique est que les rendements DeFi doivent être évalués par rapport au risque de smart contract, non de manière isolée. Un rendement de 5 % sur Aave (éprouvé au combat, plusieurs audits, des années de fonctionnement, des milliards en TVL) est une très différente proposition de risque qu’un rendement de 50 % sur un protocole nouveau et non audité avec 2 millions de dollars en TVL. Intégrez le risque dans votre évaluation et dimensionnez vos positions DeFi en conséquence.