BSC Flash Loan Attack: Pancake Bunny

Noong Mayo 2021, nakita namin ang maraming mga pag-hack na nagta-target ng mga item ng BSC DeFi. Sa tukoy, ang isang lusot na nauugnay sa pagguhit ng gantimpala sa nag-iipon ng ani, Pancake Bunny, ay ginawang paggamit ng mint ~ 7M BUNNY na mga token mula sa ganap na wala, na nagreresulta sa isang napakalaking $ 45M na pagkawala ng pera. Matapos ang madugong pag-hack, 3 tinidor na gawain —– AutoShark, Merlin Labs, at Pancake Hunny — ay sinalakay ng maihahambing na pamamaraan. Amber Group '& rsquo; s Ang pangkat ng Blockchain Security, na pinangunahan niDrChiachih Wu, ay nagdedetalye sa butas at nag-aalok ng isang detalyadong account ng paggamit ng sa pamamagitan ng pagtiklop ng atake laban kay Pancake Bunny.

Nakatagong Attack Surface: balanseOf ()

Maraming mga indibidwal ang nag-iisip na ang kakayahang umangkop ay mahalaga sa tagumpay ng DeFi. Ang mga kasunduan sa token (hal., ERC20s) ay gumaganap ng isang mahalagang pag-andar sa ilalim na layer ng DeFi legos. Gayunpaman, maaaring balewalain ng mga taga-disenyo ang ilang mga hindi mapamamahalaang at hindi maabot na mga kundisyon kapag isinasama ang mga ERC20 sa kanilang mga gawain sa DeFi. Halimbawa, maaari mong '& rsquo; t asahan kung kailan at ang bilang ng mga token na makukuha mo kapag nabawi mo ang mayroon nang balanse ng token. Ang hindi mahuhulaan na ito ay gumagawa ng isang lihim na lugar ng pag-atake sa ibabaw.

Sa maraming mga kaso, sinasangguni ng matalinong mga kasunduan ang balanse ng ERC20s sa kanilang pangangatuwiran sa serbisyo. Halimbawa, kapag ang isang gumagamit ay naglilipat ng ilang mga token ng XYZ sa matalinong kasunduan, ang XYZ.balanceOf () ay pinagsama upang suriin kung gaano karaming cash ang nakuha. Kung ikaw & rsquo; alam na muli ang Uniswap codebase, malamang na maunawaan mo na ang kasunduan sa Uniswap V2Pair ay maraming mga balanse sa Mga () tawag.

Sa code bit, ang Uniswap V2Pair.mint () ay gumagamit ng umiiral na mga balanse (balanse0, balanse1) at ang impormasyon sa pag-iingat ng libro (halaga0, halaga1) upang makuha ang mga dami na inilipat ng gumagamit (halaga0, halaga1). Gayunpaman, kung ang isang masamang bituin ay gumagalaw ng ilang mga pag-aari (token1 o token2) bago pa man ang tawag na mint (), ang biktima ay mag-aalok ng higit na pagkatubig kaysa sa inaasahan, ibig sabihin, mas maraming mga token ng LP ang nakalarawan. Kung ang mga benepisyo ay natutukoy batay sa dami ng mga token ng LP, ang masamang bituin ay maaaring makinabang kapag nalampasan ng mga benepisyo ang mga paggasta.

Ang Uniswap V2Pair.burn () ay may maihahambing na banta. Ang mint () function na tumatawag ay maaaring magbanta sa kanyang sarili nang walang isang komprehensibong pag-unawa sa mga banta na kasama. Ito ang naganap pagdating sa Pancake Bunny.

Kumuha ng 110 USDT Futures Bonus na libre!

Sa code bit sa itaas, makuha ng linya 140 ang balanse ng LP token sa pamamagitan ng balanseOf () at iimbak ito sa pagkatubig. Sa mga linya na 144– 145, ang bahagi ng pangkalahatang mga token ng LP na pag-aari ng Uniswap V2Pair (ibig sabihin, pagkatubig mula sa _ totalSupply) ay ginagamit upang makakuha ng (halagang0, halagang1) kasama ang mayroon nang mga balanse (balanse0, balanse1) ng 2 mga pag-aari (ie , token0 at token1). Sa paglaon, (halagang0, halaga1) ng 2 mga pag-aari ay inililipat sa address sa mga linya na 148–149.

Dito, maaaring kontrolin ng isang masamang bituin (balanse0, balanse1) at ang pagkatubig sa pamamagitan ng pagpapadala ng ilang token0 + token1 o LP token sa kasunduan ng Uniswap V2Pair bago pa man ang pagpapaandar ng mint () na ipinakilala upang ang tumawag ay makakuha ng mas maraming token0 + token1 out . Kami & rsquo; Mamasyal kita sa pamamagitan ngPancake Bunny source code at ihayag sa iyo kung paano makakakuha ng pera ang masamang bituin mula sa paggawa nito.

Pagsusuri sa Loophole: BunnyMinterV2

Sa source code ng Pancake Bunny, ang BunnyMinterV2.mintFor V2 () ay nangangasiwa ng mga minting BUNNY na token bilang mga benepisyo. Partikular, ang kabuuang hanggang ma-minted (ibig sabihin, mintBunny) ay nagmula sa pamantayan sa pag-input, _ withdrawalFees, at _ performanceFee. Ang pagkalkula ay nauugnay sa 3 mga pag-andar: _ zapAs setTo BunnyBNB () (linya 213), priceCalculator.valueOfAs set () (line 219) and amountBunnyTo Mint () (line 221). Dahil ang masamang bituin ay maaaring mint ng isang malaking dami ng BUNNY, ang isyu ay nakasalalay sa gitna ng 3 mga pagpapaandar na itinuro sa itaas.

Basahin ang artikulo:  Ang Bitcoin na nagkakahalaga ng $ 2 bilyong galaw para sa $ 0.78 lamang

Hayaan '& rsquo; magsisimula sa _ zapAs set To BunnyBNB () function. Kapag ang naipasa na pag-aari ay aCake- LP (linya 267), isang partikular na dami ng mga token ng LP ang ginagamit upang matanggal ang pagkatubig at kumuha (dami ng Token 0, dami ng Token 1) ng (token0, token1) mula sa likidong swimming pool (linya 278). Sa tulong ng kasunduan sa zapBSC, ang mga pag-aari na iyon ay inililipat para sa mga token ng BUNNY-BNB LP (mga linya 287–288). Ang isang pagtutugma ng dami ng mga token ng BUNNY-BNB LP ay bumalik sa tumatawag (linya 298). Dito, mayroon kaming isyu.Ang dami ba ay tumutugma sa dami ng mga token ng LP na ipinapalagay mong nasusunog? (*) Ang pagpapatupad ng

Sa V2Router.removeLiquidity (), pagkatubig ng mga token ng LP (dami sa mga set ng zapPancake Bilang BunnyBNB ()) ay ipapadala sa kasunduan sa To Pair (linya 500) at Pancake Pair.burn () ay maipapakita. Pancake ang umiiral na balanse ng token ng LP ng Kung ang Pares ay mas mataas sa 0, ang totoong kabuuang susunugin ay mas mataas kaysa sa dami, na hindi tuwirang nagdaragdag ng kabuuang BUNNY hanggang ma-minted. Problema sa Pancake sa _ zap

Ang isa pang setAs BunnyBNB () ay ang tawag na zapBSC.zapTo (). Sa makatuwirang pangangatuwiran sa likod nito ay upang palitan ang 2 mga pag-aari na natipon ng tanghalan () sa mga token ng BUNNY-BNB LP. Ang zapBSC ay nagpapalit ng mga pag-aari sa pamamagitan ng Dahil Swap, ang masamang bituin ay maaaring gumamit ng mga flash loan upang makontrol ang dami ng lumipat na BUNNY-BNB.

Bumalik ang V2 (), ang bunnyBNBAmount na ibinalik ng zapFor setAs BunnyBNB () ay ipinasok priceCalculator.valueOfTo set () upang tantyahin ang halaga batay sa BNB (ibig sabihin, vauleAs BNB), maihahambing sa isang oracle system. Sa,

Gayunpaman ang priceCalculator.valueOf itinakda () inirekumenda ang dami ng BNB at BUNNY (reserba0, reserba1) sa BUNNY_BNB Bilang Pares bilang gastos sa gastos, Pancake na ginagawang posible para sa masamang bituin na gumamit ng mga flash loan upang makontrol ang dami ng mga BUNNY na token na nakalatag. halagaBunny

Ang pagpapaandar ng Mint () ay isang pangunahing pagtatantya sa matematika. Upang mag-input ng kontribusyon ay nadagdagan ng 5 (bunnyPerProfitBNB = 5e18), na kung saan mismo ay walang pag-atake sa ibabaw ng lugar, subalit ang amplification amplified ang control itinuro sa itaas. Labanan

Dahil para sa

Habang ang pag-atake ay naaktibo ng getReward (), hinihiling namin na ma-sertipikahan para sa mga benepisyo. Ang Espesyal na ipinakita sa screenshot ng Pancake sa itaas, ang hacker ng To Bunny ay sumasabay sa init () na pagpapaandar ng paggamit ng kasunduan upang palitan ang 1 WBNB sa WBNB- Mga token at USDT-LP na deposito () ang mga ito sa VaultFlip

Tulad ng kasunduan sa Flip, tulad na makakakuha siya ng ilang mga benepisyo sa pamamagitan ng pag-uugnay sa getReward (). Inihayag ang exp sa itaas, na ginagamit ang Upang maihanda () ang pagpapaandar na muli naming nilikha ang vaultFlipWe Flip.deposit () na tawag (linya 62). Gayunman, ginamit din ang kasunduan ng ZapBSC upang i-streamline ang pagkuha ng mga token ng LP (mga linya 54-57). Pancake, isang isn '& rsquo; t upang makakuha ng mga benepisyo hanggang sa ang para sa tagapag-alaga ng Bunny ay nagtatakda sa susunod na tawag () na tawag. Pancake ang kadahilanang ito, ang

Sa Bunny hacker ay hindi '& rsquo; t itigil ang pag-atake hanggang sa unang pag-aani () deal kasunod ng init () deal. Samakatuwid ang aming kunwa, walang tagapag-alaga ang maaaring mag-set off ang ani ().

Mga Recursive Flash Loans

Ginagamit namin ang pagpapaandar ng eth-brownie upang gayahin ang tagapag-alaga at sa pamamagitan ng pagsisimula ng ani () deal (linya 25). Gumamit ang Pondo ng mga pondo, ang nagsamantala ng Pancake Bunny ay gumamit ng 8 iba't ibang mga pondong swimming pool na binubuo ng 7 Para sa mga kasunduan sa Pares at ang Bank TubeHere Amber Group, Blockchain Security '& rsquo; Ang (mga) pangkat na ginamit lamang ang sumusunod na 7 mga kasunduan sa Pancake Pair '& rsquo; pagpapaandar ng flash-swap upang pautangin ang 2.3 M WBNB:

Upang i-streamline ang mga flash-swap na tawag, nag-load kami ng 2 pamantayan sa ika-4 na argument ng pag-input ng Pancake Pair.swap () na tawag (linya 72 o linya 74): antas at pag-aari. Ipinapakita ng variable ng antas kung aling antas ng pagpapalit () ang tumawag sa amin '& rsquo; sa muli; ang variable ng pag-aari ay 0 o 1, na nagpapahiwatig na kinakailangan namin upang makakuha ng token0 o token1.

Basahin ang artikulo:  Nagbabanta ang Segundo ng US na Sue ang Crypto Exchange Coinbase, Tumutugon ang CEO na si Brian Armstrong

Gamit ang callback function na pancakeCall (), recursively kaming tumawag sa Pancake Pair.swap () na may antas na +1 hanggang maabot namin ang ikapitong antas. Sa nangungunang antas, pinagsasabay namin ang shellcode () upang isagawa ang tunay na pagkilos sa linya 98. Kapag bumalik ang shellcode (), ibabalik ng variable ng pag-aari ang nakuha na pag-aari sa bawat antas ng pagtutugma (mga linya 102– 104).

Hilahin ang Trigger

Ang function ng shellcode () na ipinakita ng ikapitong antas ng pancakeCall () ay ang tunay na paggamit ng code. Una, pinapanatili namin ang umiiral na balanse ng WBNB sa wbnbAmount (linya 108), ipinagpalit ang 15,000 WBNB sa mga token ng WBNB-USDT-LP (linya 112), at ipinapadala ang mga ito sa kasunduan kung saan itinuro ang mga token ng LP (ibig sabihin, ang kasunduan ng Pancake Pair) sa linya 113. Nilalayon ng pagkilos na ito na makontrol ang pagtawag sa tanghalan () sa loob ng _ zapAs setTo BunnyBNB () na paggana tulad ng nasuri sa itaas, na pinapayagan kaming makakuha ng mas maraming WBNB + USDT kaysa sa inaasahan.

Ang ika-2 na pagkilos ay upang makontrol ang gastos sa USDT na isinangguni ng _ zapAs setTo BunnyBNB () upang ilipat ang USDT sa WBNB. Dahil ang _ zapAs setTo BunnyBNB () ay gumagamit ng WBNB-USDT Pancake Pair upang ilipat ang USDT sa WBNB, maaari naming ilipat ang natitirang flash na nagpahiram ng WBNB sa USDT sa Pancake Swap. Ang paggawa nito ay gagawing hindi kapani-paniwalang mura ang WBNB, at ang _ zapAs setTo BunnyBNB () ay makakakuha ng hindi katimbang na malaking dami ng WBNB kapag lumipat mula sa USDT. Tandaan na ang pagkontrol sa gastos dito ay nagaganap sa Pancake V1 swimming pool, hindi Pancake V2 '& rsquo; s Pancake Pair tulad ng sa nakaraang aksyon.

Ang huling aksyon ay ang getReward () na tawag. Ang pangunahing tawag sa kasunduan ay maaaring mint 6.9 M BUNNY na mga token (linya 125). Ang mga BUNNY na token ay maaaring mailipat para sa WBNB sa Pancake Swap upang bayaran ang flash loan.

Sa aming simulation, ang masamang bituin ay nagbabayad ng 1 WBNB at nanalo ng 104k WBNB + 3.8 M USDT (maihahambing sa ~ $ 45M).

Tungkol sa Amber Group

Ang Amber Group ay isang nangungunang internasyonal na kumpanya ng crypto financing na tumatakbo sa buong mundo at sa lahat ng oras na may pagkakaroon sa Hong Kong, Taipei, Seoul, atVancouver Itinatag noong 2017, ang mga serbisyo ng Amber Group na higit sa 500 mga customer na institusyonal at talagang pinagsama-samang kumakalakal ng higit sa $ 500 bilyon sa buong 100+ electronic palitan, na may higit sa $ 1.5 bilyon sa mga pag-aari sa ilalim ng pamamahala. Noong 2021, ang Amber Group ay nakalikom ng $ 100 milyon sa financing ng Series B at natapos na ang pinakahuling FinTech unicorn na nagkakahalaga ng higit sa $ 1 bilyon. Para sa karagdagang impormasyon, mangyaring suriin ang: www.ambergroup.io.

Ang bawat negosyante na nakikipagpalitan ng cryptocurrency sa exchange ng Binance ay nais na malaman tungkol sa paparating pumpna nasa halaga ng mga barya upang makagawa ng malaking kita sa isang maikling panahon.
Naglalaman ang artikulong ito ng mga tagubilin sa kung paano malaman kung kailan at aling barya ang lalahok sa susunod na “Pump". Araw-araw, ang pamayanan sa Telegram channel Crypto Pump Signals for Binance Mga Sinyales para sa Binance naglathala ng 1-2 libreng signal tungkol sa paparating na “Pump"At mga ulat sa matagumpay na"Pumps ”na matagumpay na nakumpleto ng mga tagapag-ayos ng pamayanang VIP.
Ang mga signal ng kalakalan na ito ay makakatulong kumita mula sa 20% hanggang 150% na kita sa loob lamang ng ilang oras pagkatapos bumili ng mga coin na na-publish sa Telegram channel na "Crypto Pump Signals for Binance Mga Sinyales para sa Binance ”. Kumikita ka na ba gamit ang mga signal ng kalakalan? Kung hindi, subukan mo ito! Nais naming swerte ka sa trading cryptocurrency at nais naming makatanggap ng parehong kita ng mga gumagamit ng VIP ng Crypto Pump Signals for Binance Mga signal para sa Binance channel. Makikita ang mga halimbawa sa pahinang ito!
John Lesley/ may-akda ng artikulo

Si John Lesley ay isang bihasang negosyante na nagdadalubhasa sa teknikal na pagtatasa at pagtataya ng merkado ng cryptocurrency. Mayroon siyang higit sa 10 taon na karanasan sa isang malawak na hanay ng mga merkado at assets - mga pera, indeks at mga kalakal. Si John ang may-akda ng mga tanyag na paksa sa mga pangunahing forum na may milyun-milyong mga pagtingin at gumagana bilang parehong isang analyst at isang propesyonal na negosyante para sa parehong kliyente at ang kanyang sarili.

Mag-iwan ng Sagot