Útok na pôžičku BSC Flash: Bunny Pancake

V máji 2021 sme videli niekoľko hackov zameraných na položky BSC DeFi. Konkrétne, medzera spojená s odmenou za razenie v agregátore výnosov, Pancake Bunny, bola využitá na to, aby sa z ničoho nič vyťažilo ~ 7 miliónov BUNNY tokenov, čo viedlo k obrovskej finančnej strate 45 miliónov dolárov. Po krvavom hacke boli napadnuté 3 vidlicové úlohy - AutoShark, Merlin Labs a Pancake Hunny - porovnateľnými metódami. Amber Group '& rsquo; s Blockchain Security group, vedená DrChiachih Wu, rozpracúva medzeru a ponúka podrobný popis využitia replikáciou útoku oproti Pancake Bunny.

Skrytý povrch útoku: balanceOf ()

Mnoho ľudí si myslí, že pre úspech DeFi je dôležitá skladateľnosť. Tokenové dohody (napr. ERC20) hrajú dôležitú funkciu v spodnej vrstve legií DeFi. Dizajnéri však môžu pri začlenení ERC20 do svojich úloh DeFi ignorovať niektoré nezvládnuteľné a nepredvídateľné podmienky. Môžete napríklad '& rsquo; Neočakávajte, kedy a počet tokenov získate, keď získate späť existujúci zostatok tokenov. Táto nepredvídateľnosť vytvára skrytú útočnú plochu.

V mnohých prípadoch sa múdre dohody odvolávajú na zostatky ERC20 v odôvodnení svojich služieb. Napríklad, keď používateľ prevedie nejaké tokeny XYZ do rozumnej dohody, vykúzli sa XYZ.balanceOf () na preskúmanie toho, koľko peňazí získal. Ak ste & rsquo; Ak ste sa oboznámili s kódovou základňou Uniswap, s najväčšou pravdepodobnosťou chápete, že dohoda Uniswap V2Pair obsahuje veľa hovorov balanceOf ().

V kódovacom bite Uniswap V2Pair.mint () využíva existujúce zostatky (balance0, balance1) a informácie z účtovníctva (amount0, amount1) na získanie množstiev prenesených používateľom (amount0, amount1). Ak však zlá hviezda presunie niektoré vlastnosti (token1 alebo token2) tesne pred volaním mint (), obeť ponúkne viac likvidity, ako sa očakávalo, tj. Razí sa viac LP ​​tokenov. Ak sa výhody určujú na základe množstva LP tokenov, zlá hviezda môže mať prospech, keď výhody prevýšia výdavky.

Uniswap V2Pair.burn () má porovnateľnú hrozbu. Volajúci funkcie mincovne () sa môže sám vyhrážať bez komplexného pochopenia zahrnutých hrozieb. To sa stalo, keď došlo na Pancake Bunny.

Získajte 110 USDT futures bonus úplne zadarmo!

V bite kódu vyššie riadok 140 získava zostatok LP tokenu prostredníctvom balanceOf () a ukladá ho do likvidity. V riadkoch 144––145 sa časť celkových tokenov LP vo vlastníctve Uniswap V2Pair (tj. Likvidita z _ totalSupply) použije na získanie (suma0, suma1) s existujúcimi zostatkami (balance0, balance1) z 2 vlastností (tj. , token0 a token1). Neskôr sa (suma0, suma1) z 2 nehnuteľností presunie na adresu v riadkoch 148––149.

Tu môže zlá hviezda ovládať (balance0, balance1) a likviditu zaslaním tokenu0 + tokenu1 alebo LP tokenu do dohody Uniswap V2Pair tesne pred funkciou mint (), aby volajúci získal viac token0 + token1 von . My & rsquo; Prejdeme vás zdrojovým kódom Pancake Bunny a odhalíme vám, ako na tom môže zlá hviezda zarobiť peniaze.

Analýza medzery: BunnyMinterV2

V zdrojovom kóde Pancake Bunny dohliada funkcia BunnyMinterV2.mintFor V2 () na razenie BUNNY tokenov ako výhod. Konkrétne celková suma, ktorá sa má vyťažiť (tj. MintBunny), pochádza zo vstupných kritérií, _výberov a _výkonov. Výpočet je spojený s 3 funkciami: _ zapAs setsTo BunnyBNB () (riadok 213), priceCalculator.valueOfAs set () (riadok 219) a amountBunnyTo Mint () (riadok 221). Pretože zlá hviezda dokáže vyrútiť veľké množstvo BUNNY, problém závisí od 3 vyššie uvedených funkcií.

Prečítajte si článok:  Hráči zarobili 1 milión dolárov hraním vrchoviny

Poďme & rsquo; s začína s funkciou _ zapAs sets To BunnyBNB (). Keď je vloženou vlastnosťou aCake- LP (riadok 267), použije sa konkrétne množstvo LP tokenov na vylúčenie likvidity a odobratie (množstvo Token 0, množstvo Token 1) z (token0, token1) z bazéna likvidity (linka 278). Pomocou dohody zapBSC sa tieto vlastnosti prepínajú za LP tokeny BUNNY-BNB (riadky 287–288). Zodpovedajúce množstvo BUNNY-BNB LP tokenov sa potom vráti späť volajúcemu (riadok 298). Tu máme problém.Zhoduje sa množstvo s počtom LP tokenov, ktoré sa podľa vás spália? (*) Vykonanie

Vo V2Router.removeLiquidity () by sa likvidita LP tokenov (množstvo v súpravách zapPancakeAs BunnyBNB ()) poslala na dohodu To Pair (riadok 500) a vyčarovala by sa Pancake Pair.burn (). Pancake existujúci zostatok tokenu LP Ak je Pair vyšší ako 0, skutočný súčet, ktorý sa má spáliť, by bol vyšší ako množstvo, čo nepriamo zvyšuje BUNNY súčet, ktorý sa má vyťažiť. Problém s palacinkami v _ zap

Ďalšie sady Ako BunnyBNB () je volanie zapBSC.zapTo (). Dôvodom InToken je výmena dvoch vlastností zhromaždených funkciou removeLiquidity () do tokenov BUNNY-BNB LP. ZapBSC zamieňa vlastnosti prostredníctvom funkcie From Swap, zlá hviezda môže využiť bleskové pôžičky na kontrolu množstva prepnutých BUNNY-BNB.Pancake na BunnyMinterV2.mint

Back V2 (), bunnyBNBAmount vrátený zapFor setsAs BunnyBNB () by bola zadaná priceCalculator.valueOfTo set () na odhad hodnoty na základe BNB (tj. VauleAs BNB), porovnateľnej s Oracle systémom.,

Avšak priceCalculator.valueOf set () odporučí množstvo BNB a BUNNY (rezerva0, rezerva1) v BUNNY_BNB Ako Pára ako zdroj nákladov, Palacinka, ktorá umožňuje zlej hviezde využiť bleskové pôžičky na kontrolu množstva BUNNY tokenov. sumaBunny

Funkcia Mint () je základný matematický odhad. Vstupný príspevok sa zvýši o 5 (bunnyPerProfitBNB = 5e18), ktorý sám o sebe nemá žiadnu plochu útoku, avšak zosilnenie zosilňuje kontrolu uvedenú vyššie. Boj

Odkedy pre

Pretože je útok aktivovaný metódou getReward (), potrebujeme certifikáciu výhod. EtherScan zobrazený na snímke obrazovky Pancake vyššie, hacker To Bunny vykúzlil funkciu init () využitia dohody na výmenu 1 WBNB za WBNB- Tokeny USDT-LP a vložte ich () do aplikácie VaultFlip

Ako Flip súhlas, taký, že by získal nejaké výhody vyčarovaním getReward (). Exp odhalený vyššie, s využitím funkcie To to (), sme znovu vytvorili volanie vaultFlipWe Flip.deposit () (linka 62). Rovnako sa však využila dohoda ZapBSC na zjednodušenie získavania tokenov LP (riadky 54 - 57). Pancake, one isn '& rsquo; nie je schopný získať výhody, kým chovateľ For Bunny nespustí ďalšie volanie zberu (). Palacinka tento faktor,

V Bunny hacker nemal '& rsquo; Spustili sme útok až do prvej dohody o žatve () nasledujúcej po dohode init (). Preto našu simuláciu nemôže žiadny správca spustiť žatvu ().

Rekurzívne výpožičky

Aby sme využili funkciu eth-brownie na vydávanie sa za chovateľa a ručne začali dohodu o zbere () (riadok 25). Pancake využíva finančné prostriedky, vykorisťovateľ Pancake Bunny využil 8 rôznych bazénov pozostávajúcich zo 7 zmlúv For Pair a Bank TubeHere Amber Group, Blockchain Security '& rsquo; s (*) skupina práve využila nasledujúcich 7 dohôd Pancake Pair '& rsquo; funkcia flash-swap na zapožičanie 2.3 M WBNB:

Na zefektívnenie hovorov typu flash-swap sme do 2. vstupného argumentu hovorov Pancake Pair.swap () (riadok 4 alebo riadok 72): úroveň a vlastnosť načítali 74 kritériá. Premenná úrovne ukazuje, na ktorej úrovni hovoru swap () hovoríme „& rsquo; znovu; premenná vlastnosti je 0 alebo 1, čo naznačuje, že požadujeme získanie tokenu0 alebo tokenu1.

Prečítajte si článok:  Nasdaq poskytne cenové kanály pre tokenizované obchody s akciami na DeFiChain

Pomocou funkcie spätného volania pancakeCall () rekurzívne voláme Pancake Pair.swap () s úrovňou +1, až kým nedosiahneme siedmu úroveň. Na vedúcej úrovni vyčarujeme shellcode () na vykonanie skutočnej akcie v riadku 98. Po návrate shellcode () vráti premenná vlastnosti získanú vlastnosť v každej zhodnej úrovni (riadky 102–104).

Potiahnite spúšť

Funkcia shellcode () vyvolaná siedmou úrovňou pancakeCall () je skutočným využitím kódu. Najskôr ponecháme existujúci zostatok WBNB na wbnbAmount (riadok 108), zameníme 15,000 112 WBNB za tokeny WBNB-USDT-LP (riadok 113) a pošleme ich na dohodu, ktorá tieto LP tokeny vyrazila (tj. Dohoda o Pancake Pair) v riadku XNUMX. Táto akcia má v úmysle riadiť volanie removeLiquidity () vo vnútri funkcie _ zapAs setsTo BunnyBNB (), ako je vyhodnotené vyššie, čo nám umožňuje získať viac WBNB + USDT, ako sa očakávalo.

Druhou akciou je kontrola nákladov USDT, na ktoré odkazuje _ zapAs setsTo BunnyBNB (), aby sa USDT zmenil na WBNB. Pretože _ zapAs setsTo BunnyBNB () využíva WBNB-USDT Pancake Pair na prepnutie USDT na WBNB, mohli by sme prepnúť zvyšok flash požičaného WBNB na USDT na Pancake Swap. Ak by ste to urobili, WBNB by bolo neuveriteľne lacné a _ zapAs setsTo BunnyBNB () by pri prechode z USDT získalo nepomerne veľké množstvo WBNB. Upozorňujeme, že cena sa tu riadi v bazéne Pancake V1, nie v prípade Pancake V2 '& rsquo; s Pancake Pair ako v predchádzajúcej akcii.

Poslednou akciou je volanie getReward (). Hovor so základnou dohodou môže vyrúbať 6.9 mil. BUNNY žetónov (linka 125). Žetóny BUNNY by potom mohli byť vymenené za WBNB na Pancake Swap, aby sa splatila blesková pôžička.

V našej simulácii zlá hviezda zaplatí 1 WBNB a vyhrá 104 3.8 WBNB + 45 mil. USD (porovnateľné s ~ XNUMX mil. USD).

O spoločnosti Amber Group

Amber Group je popredná medzinárodná kryptofinančná spoločnosť pôsobiaca po celom svete a neustále pôsobiaca v Hongkongu, Taipei, Soule a Vancouveri. Spoločnosť Amber Group, ktorá bola založená v roku 2017, poskytuje služby viac ako 500 inštitucionálnym zákazníkom a v skutočnosti kumulatívne obchodovala s viac ako 500 miliardami dolárov v rámci viac ako 100 elektronických výmeny s majetkom v správe viac ako 1.5 miliardy dolárov. V roku 2021 získala skupina Amber Group 100 miliónov dolárov na financovanie zo série B a skončila ako najnovší jednorožec FinTech v hodnote viac ako 1 miliarda dolárov. Ďalšie informácie nájdete na adrese www.ambergroup.io.

Každý obchodník, ktorý obchoduje s kryptomenou na burze Binance, chce vedieť o nadchádzajúcich pumphodnotu mincí, aby ste v krátkom časovom období dosiahli obrovské zisky.
Tento článok obsahuje pokyny o tom, ako zistiť, kedy a ktorá minca sa zúčastní nasledujúceho „Pump“. Komunita každý deň Kanál telegramu Crypto Pump Signals for Binance Signály pre Binance uverejňuje 1–2 bezplatné signály o nadchádzajúcom „Pump"A správy o úspešných"Pumps ”, ktoré úspešne dokončili organizátori VIP komunity.
Tieto obchodné signály pomáhajú zarobiť 20% až 150% zisk len niekoľko hodín po nákupe mincí uverejnených na telegramovom kanáli “Crypto Pump Signals for Binance Signály pre Binance “. Už dosahujete zisk pomocou týchto obchodných signálov? Ak nie, tak to vyskúšajte! Prajeme vám veľa šťastia pri obchodovaní s kryptomenami a prajeme vám, aby ste získali rovnaký zisk ako VIP používatelia Crypto Pump Signals for Binance Signály pre kanál Binance. Príklady možno vidieť Na tejto stránke!
John Lesley/ autor článku

John Lesley je skúsený obchodník špecializujúci sa na technické analýzy a prognózy trhu s kryptomenami. Má viac ako 10 rokov skúseností so širokou škálou trhov a aktív - mien, indexov a komodít. John je autorom populárnych tém na veľkých fórach s miliónmi názorov a pracuje ako analytik a profesionálny obchodník pre klientov i sám seba.

Nechaj odpoveď