Chaîne de rupture

3 hacks qu'un audit n'a pas pu trouver

Après avoir piraté des dizaines de projets de cryptographie en tant que whitehats, nous comprenons qu'un audit de contrat intelligent ne suffit pas pour garantir qu'un projet est sécurisé. laissez-nous vous montrer quelques exemples de hacks qu'un audit classique n'aurait pas pu trouver.

Le piratage BadgerDAO

BadgerDAO est un DAO axé sur l'introduction de Bitcoin dans le monde web3 de la finance décentralisée (DeFi), basé sur des contrats intelligents Ethereum. Le 2 décembre 2021, plus de 120 millions de dollars de crypto-monnaie a été volé en quelques minutes. Comment est-ce possible?

En novembre, les pirates ont pu accéder au site Web de l'application Badger en utilisant une clé API compromise créée à l'insu ou sans l'autorisation des ingénieurs de Badger pour injecter périodiquement un code javascript malveillant affectant un sous-ensemble de ses clients. Ce code a généré des approbations de transactions frauduleuses, qui, si elles étaient approuvées par les utilisateurs, permettraient aux pirates de retirer des fonds vers leurs propres portefeuilles au lieu de ceux contrôlés par BadgerDAO à une date ultérieure. Ils ont attendu tranquillement qu'un gros poisson tombe dans le piège. 

Le 1er décembre 2021, un utilisateur disposant d'un jeton ERC50 d'une valeur de 20 millions de dollars a approuvé l'accès de l'attaquant à ses fonds. Les attaquants ont rapidement réagi en retirant tous les fonds de cette victime d'une valeur de 50 millions de dollars, puis en vidant les comptes accessibles de toutes les autres victimes accumulés au cours de l'opération de l'attaquant, pour un gain global de 120 millions de dollars.

Le piratage s'est donc appuyé sur un problème de conception visuelle du portefeuille cryptographique pour inciter les utilisateurs à approuver la transaction malveillante. Mais bien avant cela, le piratage a peut-être eu lieu à cause de l'utilisation d'une clé API compromise même si le contrat intelligent était probablement parfait.

Le piratage du protocole Fortress

Fortress Protocol est un protocole de prêt DeFi qui fonctionne sur la Binance Smart Chain. Le matin du 9 mai, elle s'est fait voler son fonds suite à une attaque malveillante.

De faibles fortifications entourant l'oracle du projet et le processus de gouvernance ont permis aux pirates envahisseurs de faire passer une proposition malveillante et de manipuler le prix des garanties. Ils ont commencé par acheter 400 000 FTS (le jeton de gouvernance du Fortress Protocol), 4% de l'offre totale pour 11,4 ETH. Ensuite, ils ont créé un contrat de proposition malveillant et ont utilisé leur FTS pour voter pour leur proposition (4 % de votes positifs est une condition pour faire passer la proposition avec succès). Le contrat a modifié le taux de levier des jetons FTS de 0 à 0.7. Cela permet aux pirates d'utiliser 70 % de la valeur des jetons FTS à effet de levier pour prêter des actifs dans le protocole.

Sur Fortress Protocol, le prix de chaque jeton est acquis via différents oracles. Les oracles sont des entités qui connectent des chaînes de blocs à des systèmes externes, permettant ainsi l'exécution de contrats intelligents en fonction des entrées et des sorties du monde réel. Parmi ceux-ci se trouve FTS, où le prix est obtenu à partir de Umbrella Oracle. Malheureusement, il y avait une vulnérabilité dans la fonction submit() de l'oracle et les pirates ont pu manipuler la machine oracle pour fixer un prix très élevé pour FTS afin qu'il puisse prêter tous les jetons. Tous ces jetons ont été convertis en environ 3 millions USDT.

Fortress Protocol a été audité par Hash0x et EtherAuthority, qui n'ont détecté aucune vulnérabilité Oracle dans le code. La raison est simple, c'était hors de portée pour eux car la vulnérabilité se trouvait dans le contrat d'un autre protocole.

Les hacks du protocole Blizz Finance et Venus

En parlant de vulnérabilités oracles, nous en avons ici une énorme qui a coûté cher à deux plateformes de prêt : Blizz Finance et Venus Protocol.

Alors que l'ensemble de l'écosystème Terra s'effondrait, l'échec du plan de relance de l'UST a fait chuter le prix de LUNA à des fractions de centime. Cependant, Chainlink, un oracle réputé qui a été utilisé comme source de prix par les deux protocoles pour évaluer les garanties, contenait un prix minimum pour LUNA codé en dur à 0.10 $. Lorsque le prix est tombé en dessous de ce niveau, n'importe qui a pu acheter de grandes quantités de LUNA au prix du marché et l'utiliser comme garantie (évaluée à 0.10 $) pour emprunter des fonds aux plateformes.

Les dégâts sont énormes : 8,5M$ pour Blizz Finance (tous les fonds du protocole) et 13.5M$ pour Venus Protocol (sur 1B$).

C'est un bon exemple qu'aucun protocole n'est infaillible même les plus importants. LUNA tomber en dessous de 0.10 $ était peut-être impensable au moment où Chainlink a configuré le flux, mais ils auraient dû mettre à jour les paramètres de leur oracle car il est devenu clair que LUNA n'allait pas récupérer. Les protocoles devraient avoir des mesures en place pour ces événements imprévus, comme leurs propres disjoncteurs automatisés pour suspendre les contrats dans de telles conditions.

Passer au contenu