Spartan Protocol - REKT



Sparte est tombée.

Une faille dans le code a permis à un assaillant de drainer la réserve de liquidités de SPARTA/WBNB. Ceci lui a permis de gagner 30,5 millions de dollars et de se hisser à la 6ème place du classement rekt.

L'assaillant a tiré profit d'une logique défectueuse utilisée pour calculer les parts de liquidité lorsque les utilisateurs brûlaient leurs LP tokens afin de retirer des fonds.

Un flash loan a alors été utilisé pour gonfler le solde de la pool avant de brûler le même montant de tokens de cette pool, ce qui lui a permis de claim un montant beaucoup plus important d'actifs sous-jacents.

Les détails suivants sont tirés de l'analyse de cause racine (ACR) de Peckshield.

  1. Un flash loan a été contracté pour 10K WBNB, celui-ci devant être remboursé à la dernière étape pour 260 WBNB du fait des frais propres au flash loan ;

  2. On swap les WBNB pour des SPARTA 5 fois à travers la pool exploitée, pour un montant s'élevant à chaque fois à 1,913.172376149853767216 WBNB pour obtenir respectivement 621,865.037751148871481851 SPARTA,

555,430.671213257613862228 SPARTA,

499,085.759047974016386321 SPARTA,

450,888.746328171070956525 SPARTA,

et enfin 409,342.991760515634291439 SPARTA ;

  1. Le montant final de 2,536,613.206101067206978364 SPARTA, auquel il faut ajouter les 11,853.332738790033677468 WBNB, est ensuite ajouté à la pool. Cela fait que l’on mint 933,350.959891510782264802 pool token (SPT1-WBNB) ;

  2. On swap 10 fois à travers la même pool WBNB pour SPARTA, pour un montant s'élevant à chaque fois à 1,674.025829131122046314 WBNB pour obtenir respectivement 336,553.226646584413691711 SPARTA,

316,580.407937459884368081 SPARTA,

298,333.47575083824346321 SPARTA,

281,619.23694472865873995 SPARTA,

266,270.782888292437349121 SPARTA,

252,143.313661963544185874 SPARTA,

239,110.715943602161587616 SPARTA,

227,062.743086833745362627 SPARTA,

215,902.679301559370989883 SPARTA,

et enfin 205,545.395265586231012643 SPARTA,

la somme totale parvenant à un montant final de 2,639,121.977427448690750716 SPARTA.

  1. On gonfle le solde d’actif dans la pool en transférant au sein de celle-ci 21,632.147355962694186481 WBNB et tous les SPARTA à partir de l'étape 3 ci-dessus, i.e 2,639,121.977427448690750716 SPARTA.

  2. On burn les 933,350.959891510782264802 pool tokens obtenus à l’étape 2 pour retirer la liquidité. Puisque le solde d’actifs de la pool est gonflé, l’opération de burn débouche sur 2,538,199.153113548855179986 SPARTA et 20,694.059368262615067224 WBNB.

Notez que l'étape 2 on ne dépose que 11,853.332738790033677468 WBNB, ce qui conduit à un profit d'environ 9K WBNB.

  1. On ajoute la liquidité dans le pool avec les actifs ajoutés à l'étape 4 avec 1,414,010.159908048805295494 pool token, qui est immédiatement brûlée pour obtenir 2,643,882.074112804607308497 SPARTA et 21,555.69728926154636986 WBNB.

  2. On répète les étapes ci-dessus pour continuer à drainer les fonds de la pool.

  3. Le flash loan est remboursé pour 100,260 WBNB.

La vulnérabilité provient du fait que le calcul de la part de liquidité calcLiquidityShare() interroge le solde actuel qui peut ensuite être gonflé pour être manipulé. Un calcul correct doit utiliser le solde mis en cache dans baseAmountPooled/tokenAmountPooled.

La plupart des fonds de l'assaillant provenant des exploits ci-dessus sont actuellement détenus dans ce portefeuille : 0x3b6e.

  • 30.7k WBNB (18.9 millions de dollars)
  • 4.6M SPARTA (7.8 millions de dollars au moment du hack)
  • 1.3M BUSD-T (1.3 $)
  • 23.2 BTCB (1.3 millions de dollars)
  • 924k BUSD (0.9 millions de dollars)

L'assailant a utilisé 1inch pour échanger tous les tokens vers BTCB ou BETH, Spartan pour dumper SPARTA et Nerve pour échanger BTCB et BETH vers des versions Anyswap. Il a ainsi pu retirer une partie des bénéfices grâce à Anyswap.

Le bénéfice a diminué d'un tiers à cause du slippage :

  • 219.5 BTC (12.4 millions de $)
  • 3311 ETH (9.7 millions de $)

Source : igor igamberdiev

Une histoire relativement simple d'un énième protocole issu d'une copie qui a été trop ambitieux dans son imitation.

L'ère des flash loans BSC est à nos portes et cette attaque est sans doute loin d'être la dernière que nous verrons.

Une récompense de 30 millions de dollars pour seulement 66 dollars de frais est un excellent retour sur investissement et, avec autant de développeurs qui se précipitent pour copier les blue chips d’ETH sur la BSC, il est certain qu'il y aura de plus en plus d'opportunités pour les hackers aux yeux aiguisés.

Alors que ni CZ ni Binance ne se sont encore exprimés, nous pouvons nous demander jusqu'à quand les utilisateurs vont tolérer cette situation.

Jusqu'à quel point faut-il vous faire rekt pour que CZ se décide à entrer en scène et à vous sauver ?


partager cet article

REKT sert de plateforme publique pour des auteurs anonymes, nous déclinons toute responsabilité quant aux opinions ou contenus hébergés sur REKT.

faites un don (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

avertissement:

REKT n'est responsable en aucune manière du contenu publié sur notre site Web ou en lien avec nos Services, qu'il soit publié ou occasionné par l'Auteur Anon de notre site Web, ou par REKT. Bien que nous fournissions des règles pour la conduite et les publications de l'Auteur Anon, nous ne contrôlons pas et ne sommes pas responsables de ce que l'Auteur Anon publie, transmet ou partage sur notre site Web ou nos Services, et ne sommes pas responsables de tout contenu offensant, inapproprié, obscène, illégal ou autrement répréhensible que vous pourriez rencontrer sur notre site Web ou nos Services. REKT ne saurait être tenu responsable de la conduite, en ligne ou hors ligne, de tout utilisateur de notre site Web ou de nos services.