Blog

Awtomatikong salin · Basahin sa Ingles

SSO Module 2 - Mga Kahinaan ng Smart Contract: Isang Malalim na Pagsisiyasat sa mga Reentrancy Attack

Nag-aalok ang mga smart contract ng transparency ngunit may mga panganib. Tinutuklas ng artikulong ito ang mga kahinaan tulad ng Reentrancy, kasama ang $150M na pagkalugi ng DAO bilang halimbawa. Ang Integer Overflow ay nagdulot ng $900M na pagkalugi ng BeautyChain. Nawalan ang DAOMaker ng $4M dahil sa mga depekto sa Access Control. Sa mga FlashLoan Attack, nawalan ang Harves Finance ng $38M.

Ni Markos Mebellis

SSO Module 2 - Mga Kahinaan ng Smart Contract: Isang Malalim na Pagsisiyasat sa mga Reentrancy Attack
Sa pahinang ito

Binabago ng mga smart contract ang mga industriya sa buong mundo dahil sa kanilang kahusayan, transparency, at mga katangiang hindi nababago. Gayunpaman, dahil bukas at awtomatiko ang kanilang disenyo, nalalantad din sila sa mga panganib. Upang mapakinabangan ang kanilang potensyal habang binabawasan ang mga banta, mahalagang maunawaan ang kanilang mga kahinaan at posibleng mga paraan ng pag-atake. Ang paggawa at pagpapanatili ng mga kontratang ito ay nangangailangan ng maingat na pag-iingat at pagsunod sa mga pinakamahusay na kasanayan. Sinisiyasat ng artikulong ito ang mga karaniwang kahinaan, na inilalarawan ang mga ito gamit ang mga totoong kaso upang mapahusay ang pag-unawa. Tingnan natin ang sumusunod na artikulo, mula sa Salus Security.

Mga Pangunahing Kahinaan:

**Reentrancy:** Dito, sinasamantala ng mga attacker ang isang puwang, na muling pumapasok sa mga function bago makumpleto ang mga mahalagang operasyon o ma-update ang mga value.

Single-Function Reentrancy: Nangyayari ito kapag nakikipag-ugnayan ang isang contract sa isang rogue contract, na nagpapahintulot sa huli na muling pumasok sa isang function. Halimbawa, ang mga malisyosong contract ay maaaring patuloy na muling pumasok sa 'withdrawBalance' function, na sumisipsip ng mas maraming ether bago ma-update ang mga balanse.

Mga Kapansin-pansing Pag-atake:

  • Ang DAO (2016): Matapos makalikom ng $150 milyon, na-hack ito dahil sa mga kahinaan sa coding. Nagdulot ito ng paghahati sa Ethereum network.
  • PolyDex (2021): Nawalan ng $500k dahil sa isang reentrancy attack sa PLX Locker Smart Contract.
  • Bacon Protocol (2022): Dumanas ng $1M na pagkalugi mula sa isang reentrancy bug sa lend() function.
  • Lendf.Me (2020): Nawalan ng humigit-kumulang $24.7 milyon sa iba't ibang cryptocurrency.

**Cross-Function Reentrancy:** Nagmumula sa mga shared state sa pagitan ng iba't ibang function at mahinang proteksyon sa reentry. Ang halimbawa ng 'balances' sa itaas ay nagpapakita na kahit may proteksyon ang 'withdrawAll', maaari pa ring samantalahin ng mga attacker ang 'transfer' function.

Mga Kilalang Insidente:

  • DFX Finance (2022): Nawalan ng mahigit $7 milyon dahil sa isang pag-atake na nagsamantala sa isang function na walang proteksyon sa reentrancy.
  • Hundred Finance (2022): Nawalan ng humigit-kumulang $6.5 milyon matapos samantalahin ng isang reentrancy attack ang borrowFresh function.
  • Fei Protocol (2022): Nawalan ng humigit-kumulang $80 milyon mula sa isang pag-atake na gumamit ng Reentrancy loophole.

**Cross-Contract Reentrancy:** Nagmumula sa mga shared state sa iba't ibang contract at maling pagkakasunod-sunod ng pagbabago ng variable. Kahit may proteksyon ang mga function, maaari pa ring samantalahin ang ibang function, tulad ng 'burnAccount'.

Mga Kilalang Pag-atake:

  • Rari Capital (2021): Nawalan ng humigit-kumulang $10 milyon (~2600 ETH) sa loob ng wala pang isang oras.
  • ValueDefi (2021): Nawalan ng 5345.314 WBNB dahil sa mga invalid na kalkulasyon ng share, na umaasa sa external data.

Read-Only Reentrancy:

Sinasamantala ng read-only reentrancy ang isang function na, kahit hindi binabago ang state ng contract, ay maaari pa ring makabuo ng maling output kapag hindi consistent ang state.

Mga Kapansin-pansing Pag-atake:

  • QuickSwap (2022): Maling ginamit ng mga exploiter ang isang flash loan upang baguhin ang spot price ng asset, na nagnakaw ng 138 ETH at 700 MATIC token. Naging posible ito dahil sa isang depekto sa Curve LP oracle.
  • dForce (2023): May read-only reentrancy bug sa code na nag-a-access sa mga price oracle sa Arbitrum at Optimism chain kasama ang Curve Finance.
  • Sentimente (2023): Isang pag-atake, na nagsamantala sa isang read-only reentrancy flaw, ang nagdulot ng $1 milyon na pagnanakaw. Buti na lang, 90% ang ibinalik ng salarin.
  • Sturdy (2023): Nawalan ng humigit-kumulang 442 ETH dahil sa isang read-only reentrancy issue ng Balancer kung saan nabago ang presyo ng B-stETH-STABLE.

Pag-iwas sa Reentrancy Vulnerability:

  1. Laging sundin ang check-effect-interaction pattern.
  2. Gumamit ng proteksyon sa re-entry para sa lahat ng sensitibong operasyon.
  3. Maingat na pangasiwaan ang bawat external call.

Integer Overflow:

Kapag lumampas ang mga kalkulasyon sa mga limitasyon, nag-o-overflow ang mga ito, na kadalasang nagdudulot ng napakaliit o napakalaking value.

Mga Halimbawang Pag-atake:

  • BeautyChain (2018): Nakakuha ang mga attacker ng 10^58 BEC sa pamamagitan ng isang integer overflow, na nagbenta ng nakakagulat na $900 milyon.
  • Poolz (2023): Nagdulot ng pagkalugi na humigit-kumulang $665,000 sa Ethereum, Binance, at on-chain ng Polygon.

Mga Hakbang Laban sa Integer Overflow:

  1. Gumamit ng mga ligtas na paraan ng kalkulasyon tulad ng safeMath library.
  2. Unahin ang bounds checking upang matiyak na nananatili sa saklaw ang mga resulta.
  3. Gamitin ang solidity compiler version 0.8.0 o mas bago para sa built-in na overflow detection.

Access Control:
Nagmumula ang mga kahinaan sa access control sa kawalan ng mahigpit na access constraint sa mga function na humahawak ng mahalagang operasyon.

  • Mga Kilalang Pag-atake:
  • DAOMaker (2021): Humigit-kumulang $4M ang nasipsip matapos maiwang mahina ang init function.
  • GymNetwork (2022): Sinamantala ng mga exploiter ang isang authentication oversight sa depositFromOtherContract(), na nagpadali ng iligal na pagdagdag ng balanse nang walang anumang aktwal na bayad. Ang pagkalugi? Humigit-kumulang 2,475.91 WBNB.
  • Tempdao (2023): Isang maluwag na pagtrato sa access control para sa migrateStake function ang nagdulot ng pagkalugi na lumampas sa $2.34 milyon.

Access Control Vulnerability

  • Paglalarawan: Mga kahinaan na nagmumula sa hindi sapat na mekanismo ng paghihigpit na namamahala sa access at mga pribilehiyo sa mga partikular na operasyon sa loob ng isang sistema.

Mga Hakbang sa Pag-iwas:

  1. Mahigpit na Permission Check: Laging ipatupad ang mahigpit na protocol ng pahintulot para sa mga function, lalo na sa mga humahawak ng sensitibong operasyon.
  2. Multi-Signature Mechanism: Para sa mga gawaing nangangailangan ng pinagsamang pagpapasya, gumamit ng multi-signature protocol na nangangailangan ng maraming pag-apruba bago isagawa ang mga sensitibong operasyon.

Mga Karaniwang Attack Vector

  • Paglalarawan: Iba't ibang paraan o channel kung saan sinasamantala ng mga attacker ang mga kahinaan sa isang system, pangunahin sa mga smart contract.

Mga Kilalang Halimbawa:

  • Mga FlashLoan Attack: Sinasamantala ang agarang paghiram na feature ng mga decentralized finance system upang magsagawa ng malisyosong aktibidad.
  • Front-Running: Malalaman ng mga attacker ang pending na transaksyon ng ibang user at kikilos dito sa pamamagitan ng pag-aalok ng mas mataas na gas fee.

FlashLoan Attack

  • Paglalarawan: Bagama't hindi likas na isang pag-atake, ang FlashLoan ay isang tampok ng DeFi na nagpapahintulot sa mga user na humiram ng malaking halaga agad nang walang collateral. Sinamantala ito dahil sa mga lohikal na depekto sa mga interaksyon at relasyon ng kontrata.

Mga Kapansin-pansing Pag-atake:

  1. Harves Finance (2020.10.26): Nagresulta sa $38 milyong pagkalugi.
  2. InverseFinance (2022.6.16): Humantong sa pagkawala ng 53.2445 WBTC at 99,976.29 USDT.
  3. NewFreeDAO (2022.9.8): Na-drain ang 4,481 WBNB, katumbas ng humigit-kumulang $1.25 milyon.
  4. Lodestar (2022.12.11): Pinagsamantalahan sa pamamagitan ng manipulasyon ng presyo ng oracle.
  5. 0vix (2023.4.28): Nagresulta sa $2 milyong pagkalugi sa Polygon chain.

Mga Rekomendasyon sa Pag-iwas:

  1. Kilalanin ang mga katangian ng Flashloan sa panahon ng pagbuo ng proyekto.
  2. Para sa tumpak na pagtukoy ng presyo, gumamit ng time-weighted averaging o maraming oracle.

Front-running

  • Paglalarawan: Nakakakuha ng kaalaman ang isang attacker tungkol sa transaksyon ng ibang user mula sa memPool at pinagsasamantalahan ito sa pamamagitan ng pag-aalok ng mas mataas na gas fee.

Mga Kapansin-pansing Pag-atake:

  1. Sushi Badger Digg (2021.1.25): Nagresulta sa pagkawala ng 81.68 ETH.
  2. Sushiswap Ape-ETH pool (2022.5.17): Kumita ang attacker ng humigit-kumulang 0.3 ETH.
  3. Uniswap (2023.4.2): Nagdulot ng humigit-kumulang $25 milyon na pagkalugi sa pamamagitan ng sandwich attack.

Mga Rekomendasyon sa Pag-iwas:

  1. Gumamit ng slippage protection kapag nag-trade.
  2. Isagawa ang mga trade sa mga oras na hindi peak, lalo na sa mga pabagu-bagong market.
  3. Gamitin ang FlashBot rpc ng 1inch upang direktang ipadala ang mga trade sa mga miner, kaya nalalampasan ang memPool.

Buod

Binabati kita! Natapos mo ang Module 2 - Smart Contract Vulnerabilities: A Deep Dive into Reentrancy Attacks and Common Exploits

Balikan natin ang iyong mga natutunan:

Mga Kahinaan sa Reentrancy - Sinasamantala ng mga attacker ang mga puwang, na pumapasok muli sa mga function bago pa man ito ganap na matapos.

  • Single-Function Reentrancy: Pumapasok muli ang isang rogue contract sa isang function sa ibang contract.
  • Cross-Function Reentrancy: Sinasamantala ang mga shared state sa pagitan ng iba't ibang function dahil sa mahinang proteksyon sa reentry.
  • Cross-Contract Reentrancy: Pinagsasamantalahan ang mga shared state sa iba't ibang contract.
  • Read-Only Reentrancy: Pinagsasamantalahan ang isang function na gumagawa ng maling output kapag hindi consistent ang state.

Integer Overflow - Ang mga kalkulasyon na lumalampas sa itinakdang limitasyon ay nagreresulta sa matinding halaga.

Mga Kahinaan sa Access Control - Nagmumula sa kawalan ng mahigpit na access constraints sa mahahalagang function.

Mga Karaniwang Attack Vector - Mga paraan kung paano sinasamantala ng mga attacker ang mga kahinaan ng system.

**FlashLoan Attack **- Isang feature ng DeFi na nagpapahintulot ng agarang malaking paghiram nang walang collateral ngunit sinasamantala dahil sa mga lohikal na depekto.

Front-running Attack- Nakakakuha ng kaalaman ang mga attacker tungkol sa mga pending na transaksyon at kumikita sa pamamagitan ng pag-aalok ng mas mataas na gas fee.

Ang artikulong ito ay hatid sa iyo ng:

Buod — ilustrasyon