Qu’est-ce qu’un exploit de flash loan et comment fonctionne cette attaque contre les protocoles DeFi ?

Qu’est-ce qu’un exploit de flash loan ?
Un exploit de flash loan est une attaque dans laquelle quelqu’un emprunte temporairement une grande quantité de cryptomonnaies afin d’exploiter une faille dans un protocole DeFi. Un flash loan est un prêt qui doit être remboursé au cours d’une seule transaction sur la blockchain.
Un tel flash loan n’est pas garanti. Vous n’avez donc pas besoin de déposer d’abord votre propre garantie, mais il existe une condition importante : le prêt, frais compris, doit être remboursé avant la fin de la même transaction. Ce n’est pas le cas ? Alors la blockchain annule l’ensemble de la transaction, comme si elle n’avait jamais eu lieu.
On parle alors d’exécution atomique. On peut voir cela comme un seul ensemble : tous les éléments réussissent ensemble, ou rien ne se passe. Les flash loans sont aussi utilisés de manière normale, par exemple pour l’arbitrage, les liquidations et le changement de garantie.
Dans le cas d’un exploit, un attaquant utilise cette liquidité temporaire pour toucher un point faible ailleurs. Il s’agit souvent d’un protocole qui s’appuie sur le prix spot d’un seul DEX pour prendre une décision importante. Ce prix peut être fortement déplacé temporairement par un swap de très grande taille.
Supposons qu’un lendingprotocol considère ce prix temporairement gonflé comme le vrai prix du marché. Un attaquant peut alors faire surévaluer sa garantie et emprunter davantage de crypto que ce qui serait réellement sûr. D’autres attaques ne portent pas sur les prix, mais par exemple sur un poids de vote temporaire dans la gouvernance on-chain ou sur une erreur dans la logique métier des smart contracts.
À retenir
- Un flash loan est un prêt non garanti qui doit être remboursé au cours de la même transaction.
- Un exploit de flash loan exploite généralement une faille dans un autre protocole DeFi, et non le flash loan lui-même.
- Une attaque fréquente manipule temporairement le prix spot dans un pool DEX.
- Grâce à l’exécution atomique, toute l’attaque réussit ou tout est annulé.
- La flash liquidity peut aussi être utilisée pour exploiter la gouvernance ou des erreurs dans les règles du protocole.
Comment fonctionne un exploit de flash loan ?
Un exploit de flash loan fonctionne généralement parce qu’un attaquant utilise temporairement beaucoup de capital pour modifier un prix ou l’état d’un protocole, après quoi le protocole cible prend une mauvaise décision. Tout se déroule au sein d’une seule transaction atomique.
Comment cela fonctionne-t-il ? D’abord, l’attaquant fait emprunter un flash loan à son propre smart contract. Ce contrat peut ensuite exécuter immédiatement plusieurs actions, comme échanger des tokens, déposer une garantie et emprunter de la crypto
Dans le cas d’une manipulation d’oracle, l’attaquant achète ou vend, au moyen d’un gros swap, une grande quantité d’un token dans un pool DEX. Les réserves de ce pool changent alors, et le prix spot local grimpe ou baisse temporairement fortement. Un oracle de prix est, en termes simples, l’élément qui indique à un protocole la valeur de quelque chose.
Le danger apparaît lorsqu’un autre protocole lit ce prix perturbé comme s’il s’agissait du prix normal sur le marché plus large. L’attaquant peut alors, par exemple, emprunter trop d’actifs avec une garantie gonflée ou provoquer un règlement erroné.
À la fin, le contrat attaquant convertit suffisamment de gains pour rembourser le flash loan et les frais. Ce qui reste ensuite constitue le profit. Si le remboursement est insuffisant, l’ensemble de la transaction est revert.
Le risque pour l’attaquant reste donc limité : toutes les étapes doivent fonctionner d’un seul coup. En revanche, pour le protocole victime, les dégâts peuvent être durables. Le protocole a alors, par exemple, déjà prêté trop de crypto sur la base d’un prix qui n’était erroné que très brièvement.
Toutes les attaques ne suivent pas exactement ce schéma. Dans les attaques de gouvernance, la liquidité temporaire peut surtout servir à obtenir beaucoup de poids de vote. Dans d’autres exploits, la faille se situe plutôt dans un calcul ou une règle d’accès du protocole.
Quelles étapes comporte une attaque de flash loan ?
Une attaque de flash loan suit souvent cinq étapes logiques, même si, dans la pratique, les attaquants peuvent combiner plusieurs prêts, protocoles et swaps.
-
Identifier un point faible L’attaquant cherche d’abord une faille financièrement intéressante. Il peut s’agir d’un prix spot DEX facile à influencer, d’une mauvaise valorisation de LP tokens ou de parts de vault, ou encore d’une gouvernance dans laquelle des tokens empruntés donnent immédiatement un droit de vote.
-
Emprunter temporairement du capital Ensuite, un smart contract attaquant contracte un flash loan. Aucune garantie préalable n’est nécessaire, mais le prêt doit être remboursé au cours de la même transaction.
-
Influencer le prix ou l’état Avec le capital emprunté, le contrat effectue de gros swaps, dépôts, emprunts, mint, votes ou d’autres appels de contrat. L’objectif est de modifier temporairement un prix, la valeur des réserves ou une autre donnée importante.
-
Extraire de la valeur du protocole Tant que le mauvais prix ou le mauvais état s’applique, le contrat peut par exemple emprunter trop d’actifs, mint trop de tokens ou déclencher une action de gouvernance nuisible.
-
Régler le prêt Enfin, le contrat rembourse le principal et les frais. Les actifs restants constituent le gain. Si ce remboursement n’est pas intégral, tout est annulé.
Exemple : lors de l’attaque contre bZx du 18 février 2020, l’attaquant a emprunté 7 500 ETH via un flash loan. Ensuite, le prix du sUSD a été poussé à la hausse par des swaps. L’attaquant a utilisé environ 1,1 million de sUSD comme garantie surévaluée pour emprunter 6 796 ETH, puis a remboursé le flash loan. Au final, l’attaquant a conservé environ 2 378 ETH de profit.
Quels protocoles DeFi sont vulnérables aux exploits de flash loan ?
Aucun type précis de protocole DeFi n’est automatiquement vulnérable. Le risque apparaît lorsqu’un protocole prend une décision importante à partir d’informations qui peuvent être manipulées à faible coût au cours d’une seule transaction.
Les protocoles de lending et d’emprunt peuvent être exposés s’ils utilisent le prix spot d’un seul DEX comme unique source de prix pour la garantie, les limites d’emprunt ou les liquidations. Un gros swap peut modifier temporairement ce prix local, alors que le prix sur le reste du marché des cryptomonnaies est très différent.
Les agrégateurs de rendement et les vaults peuvent aussi être vulnérables. C’est particulièrement vrai lorsque le prix utilisé pour le minting ou le redeeming des parts de vault dépend de réserves de pool qu’un attaquant peut modifier temporairement. Les déposants existants peuvent alors être lésés.
Les protocoles de stablecoins, de produits dérivés et d’actifs synthétiques présentent des risques similaires lorsque des processus importants, comme la détermination de la garantie, du profit et de la perte (PnL), du funding ou des liquidations, dépendent d’un prix peu fiable. PnL désigne le profit ou la perte sur une position.
La gouvernance on-chain constitue un autre point d’attention. Si le pouvoir de vote découle directement de tokens qu’une personne ne détient ou n’emprunte que très brièvement, un attaquant peut temporairement réunir suffisamment d’influence pour faire adopter une proposition. Cela devient encore plus dangereux si une proposition adoptée peut immédiatement lancer du code exécutable ou des actions sur une DAO treasury.
Il est important de le savoir : un flash loan n’est pas toujours nécessaire. Une personne disposant de suffisamment de capital propre, ou d’une autre source de liquidité temporaire, peut parfois exploiter la même faiblesse de conception.
Exemples d’exploits de flash loan
Les exploits de flash loan peuvent prendre des formes très différentes. Les exemples connus montrent bien que non seulement les oracles de prix, mais aussi les règles de valorisation et la gouvernance peuvent être attaqués.
-
bZx, 15 février 2020 : l’attaquant a utilisé un flash loan de 10 000 ETH dans une attaque combinée contre plusieurs protocoles DeFi. En faisant monter le prix du WBTC par de gros swaps et en exploitant une erreur dans la logique de marge de bZx, les dégâts signalés ont atteint environ 1 271 ETH, soit à l’époque environ 350 000 dollars.
-
bZx, 18 février 2020 : quelques jours plus tard, une deuxième attaque a suivi avec un flash loan de 7 500 ETH. Le prix du sUSD a été manipulé, ce qui a permis d’utiliser le sUSD comme garantie surévaluée pour emprunter 6 796 ETH. Le gain signalé était de 2 378 ETH, soit à l’époque environ 633 000 dollars.
-
Harvest Finance, 26 octobre 2020 : dans cette attaque économique, les valeurs de USDC et de l’USDT ont été influencées à plusieurs reprises dans le Y-pool de Curve. Cela a permis à l’attaquant de mint des parts de vault à un prix avantageux, puis de les échanger plus tard contre le prix normal des parts. Environ 24 millions de dollars ont été retirés des vaults concernés.
-
PancakeBunny, 19 mai 2021 : ici, un attaquant a manipulé le prix du BUNNY via un flash loan. Une erreur dans la valorisation des LP tokens de PancakeSwap a ensuite conduit au minting d’une quantité excessive de tokens BUNNY.
-
Beanstalk, 17 avril 2022 : l’attaquant a utilisé un flash loan pour manipuler la gouvernance on-chain et a emporté environ 77 millions de dollars d’actifs non-Bean. Ensuite, le protocole a été mis en pause et la gouvernance on-chain a été temporairement désactivée.
Les montants de ce type d’incident peuvent varier selon la manière dont les dégâts sont mesurés. Il faut penser aux actifs bruts retirés, au gain net, aux fonds restitués et au prix au moment des faits.
Quelles sont les conséquences d’un exploit de flash loan ?
Un exploit de flash loan peut faire perdre immédiatement de la crypto aux utilisateurs, aux fournisseurs de liquidité et à une DAO. Les dégâts ne touchent généralement pas le fournisseur du flash loan, mais le protocole dont la logique de prix, la valorisation, la gouvernance ou les smart contracts ont été exploités.
Dans un protocole de lending, un prix de garantie manipulé peut entraîner une dette qui n’est plus correctement couverte. Une fois le prix revenu à la normale, la garantie s’avère valoir moins que la crypto prêtée. Le protocole se retrouve alors avec un déficit.
Lors d’une attaque contre des parts de vault, les déposants existants sont souvent dilués. En termes simples, l’attaquant obtient temporairement plus de parts que ce qui serait équitable. Lorsque ces parts sont ensuite échangées, l’attaquant retire plus du vault qu’il n’y a réellement contribué.
Il y a souvent aussi des conséquences pratiques. Un protocole peut suspendre ses contrats, désactiver ou modifier la gouvernance, demander aux utilisateurs de migrer vers un nouveau contrat et lancer un long processus de reprise ou de compensation.
C’est aussi ce qui s’est produit après l’attaque contre Beanstalk. En plus de la perte directe, le protocole a été mis en pause et la gouvernance on-chain a été coupée. Après son incident, Harvest a récupéré les fonds restants des pools concernés et a limité les conversions pendant l’enquête.
Comment les protocoles DeFi peuvent-ils prévenir les exploits de flash loan ?
Les protocoles DeFi ne peuvent pas prévenir les exploits de flash loan avec une seule mesure. Une bonne sécurité repose sur plusieurs couches qui, ensemble, rendent la manipulation des prix, les erreurs de calcul et l’abus de gouvernance plus difficiles.
-
Ne vous fiez pas à un seul prix spot DEX. N’utilisez pas un prix directement manipulable provenant d’un seul pool comme unique oracle pour les prêts, les liquidations, le minting ou la tarification des parts.
-
Utilisez des flux de prix plus larges. Un oracle alimenté par plusieurs sources de données indépendantes et une couverture de marché plus large réduit le risque qu’un seul pool temporairement manipulé détermine le résultat.
-
Utilisez un TWAP lorsque c’est pertinent. Un time-weighted average price, ou TWAP, est un prix moyen calculé sur une certaine période. Une fenêtre plus longue rend la manipulation plus coûteuse, mais fait aussi réagir le prix plus lentement aux véritables mouvements du marché.
-
Intégrez des contrôles clairs. Pensez à des écarts de prix maximaux, à des vérifications de fraîcheur des données de prix, à une liquidité minimale, à des limites prudentes de loan-to-value et à des plafonds par actif. En cas de données d’oracle inhabituelles, un protocole peut bloquer ou mettre en pause les actions sensibles.
-
Testez séparément les LP tokens et les parts de vault. La valeur de ces positions dépend souvent des réserves et des positions sous-jacentes. Testez donc aussi les cas extrêmes de slippage ainsi que les dépôts et retraits au cours de la même transaction.
-
Limitez le poids de vote temporaire. La gouvernance peut utiliser des snapshots définis à l’avance, imposer un délai entre le vote et l’exécution, et limiter les actions qu’une proposition peut déclencher. Après l’attaque d’avril 2022, Beanstalk a supprimé la gouvernance on-chain et est temporairement passé à des votes Snapshot avec exécution par une multisig communautaire 5 sur 9.
-
Testez les attaques de manière volontaire en amont. Les audits indépendants, les simulations d’attaque économique et les tests sur fork doivent prendre en compte les flash loans, la manipulation d’oracle, la reentrancy et les transactions composées. La reentrancy signifie qu’un contrat externe peut rappeler de manière inattendue une fonction avant que la première exécution ne soit terminée de façon sûre.
-
Préparez la réponse aux incidents. La surveillance des variations extrêmes de prix et de réserves, un mécanisme de pause soigneusement conçu et des procédures d’urgence claires peuvent limiter les dégâts. Une telle pause ne peut pas annuler une attaque déjà exécutée de manière atomique, mais elle peut aider à empêcher des dommages supplémentaires.
En résumé
Un exploit de flash loan ne repose pas sur un flash loan dangereux, mais sur une faille dans le protocole DeFi qui est ensuite attaqué. Le flash loan donne à un attaquant beaucoup de capital pendant un court instant, ce qui permet d’influencer un prix, une valorisation ou un processus de gouvernance.
Les protocoles qui font aveuglément confiance à un seul prix DEX, à des règles de valorisation fragiles ou à un poids de vote temporaire immédiatement exécutable sont particulièrement exposés. De bons oracles, des limites intelligentes, des smart contracts correctement testés et un bon plan d’urgence rendent ce type d’attaque beaucoup plus difficile. Pour les utilisateurs, la leçon principale reste simple : la DeFi peut offrir de nombreuses possibilités, mais les risques techniques d’un protocole sont au moins aussi importants que le rendement potentiel.