Une attaque sophistiquée sur Aevo-rebrand Ribbon Finance a drainé 2,7 millions de dollars de son ancien contrat et les a transférés vers quinze adresses de portefeuille distinctes, dont certaines ont déjà été consolidées dans des comptes plus importants.
Selon plusieurs enquêteurs blockchain sur la plateforme sociale X, l'attaque s'est produite seulement six jours après que la plateforme ait mis à niveau son infrastructure d'oracle et ses procédures de création d'options. Ils ont utilisé un Smart Contract pour extraire des centaines de tokens Ethereum et d'autres actifs numériques.
Dans un fil expliquant l'exploit, l'analyste de sécurité Web3 Liyi Zhou a déclaré qu'un contrat malveillant a manipulé la pile d'oracle Opyn/Ribbon en abusant des proxies de flux de prix, et a poussé des prix d'expiration arbitraires pour wstETH, AAVE, LINK et WBTC dans l'oracle partagé à un horodatage d'expiration commun.
"L'attaquant a placé de grandes positions courtes d'oToken contre le MarginPool de Ribbon Finance, qui a utilisé ces prix d'expiration falsifiés dans son pipeline de règlement et a transféré des centaines de WETH et wstETH, des milliers d'USDC, et plusieurs WBTC vers des adresses de vol via des transactions redeem et redeemTo", a expliqué Zhou.
Six jours avant l'attaque, l'équipe de Ribbon Finance a mis à jour le pricer de l'oracle pour prendre en charge 18 décimales pour stETH, PAXG, LINK et AAVE. Cependant, d'autres actifs, y compris USDC, étaient toujours à huit décimales, et selon Zhou, la différence de précision décimale a contribué à la vulnérabilité qui a été exploitée vendredi.
Selon un développeur pseudonyme utilisant le nom d'utilisateur Weilin sur X, la création des oTokens eux-mêmes n'était pas illégale car chaque token sous-jacent doit être mis sur liste blanche avant d'être utilisé comme garantie ou actif de strike, une procédure que l'attaquant a suivie à la lettre.
L'activité malveillante a commencé par la création de produits d'options mal structurés, où un produit consistait en une option d'achat stETH avec un strike de 3 800 USDC, garantie par WETH, devant expirer le 12 décembre. L'attaquant a ensuite créé plusieurs oTokens pour ces options, qui ont été exploités plus tard pour vider le protocole.
L'attaque impliquait des interactions répétées avec le contrat d'administration proxy à 0x9D7b…8ae6B76. Certaines fonctions, comme transferOwnership et setImplementation, ont été utilisées pour manipuler les proxies de flux de prix via des appels délégués. Le pirate a invoqué une implémentation pour l'oracle afin de définir les prix d'expiration des actifs au même horodatage pour provoquer des événements ExpiryPriceUpdated qui ont confirmé les évaluations frauduleuses.
Les prix manipulés ont fait reconnaître au système que stETH était bien au-dessus du prix d'exercice et ont brûlé 225 oTokens, produisant 22,468662541163160869 WETH. Au total, le pirate a extrait environ 900 ETH par cette méthode.
La société de sécurité Web3 Spectre a repéré les transferts initiaux vers une adresse de portefeuille à 0x354ad…9a355e, mais de là, l'argent a été distribué à 14 comptes supplémentaires, dont beaucoup détenant environ 100,1 ETH chacun. Certains des fonds volés sont déjà entrés dans ce que Zhou a appelé des pools de consolidation de trésorerie ou "TC".
Selon le développeur de Monarch DeFi Anton Cheng, l'application décentralisée Opyn soutenue par Coinbase n'a pas été compromise comme le laissaient entendre les rumeurs sur Crypto Twitter.
Cheng a expliqué que le piratage de Ribbon Finance a été facilité par un code d'oracle mis à niveau qui permettait par inadvertance à n'importe quel utilisateur de définir les prix pour les actifs nouvellement ajoutés. Il a indiqué que l'attaque a commencé par une transaction préparatoire pour "préparer le terrain" en générant des oTokens mal structurés avec des actifs de garantie et de strike légitimes. Il a poursuivi en disant que les faux tokens ont permis au pirate de choisir des sous-jacents bien connus comme AAVE pour éviter d'attirer l'attention et d'être signalé.
Le pirate a ensuite créé trois "sous-comptes", chacun déposant une garantie minimale pour créer les trois options. Tous les sous-comptes ont été marqués comme type 0, ce qui signifie qu'ils étaient entièrement garantis, mais l'absence d'une limite de paiement maximale pour chaque compte ou oToken a aidé l'auteur à drainer les actifs sans aucune restriction.
Sous les systèmes Gamma d'Opyn, l'actif sous-jacent doit correspondre à la garantie pour les options d'achat et au strike pour les options de vente afin de maintenir les vendeurs entièrement garantis. Si un oracle est compromis, seuls les vendeurs de ce produit spécifique sont censés en souffrir.
Pourtant, dans ce cas, la combinaison de la création de nouveaux oTokens et de l'oracle manipulé a suffi à contourner ces protections.
Ne vous contentez pas de lire les actualités crypto. Comprenez-les. Abonnez-vous à notre newsletter. C'est gratuit.

