ဘလော့ဂ်

အလိုအလျောက် ဘာသာပြန်ထားသည် · အင်္ဂလိပ်လို ဖတ်ရန်

SSO Module 2 - Smart Contract Vulnerabilities: A Deep Dive into Reentrancy Attacks

Smart contract များသည် ပွင့်လင်းမြင်သာမှုကို ပေးစွမ်းသော်လည်း အန္တရာယ်များလည်း ရှိပါသည်။ ဤဆောင်းပါးသည် Reentrancy ကဲ့သို့သော အားနည်းချက်များကို DAO ၏ ဒေါ်လာ သန်း 150 ဆုံးရှုံးမှုကို ဖြစ်ရပ်လေ့လာမှုအဖြစ် ဖော်ထုတ်ထားပါသည်။ Integer Overflow ကြောင့် BeautyChain သည် ဒေါ်လာ သန်း 900 ဆုံးရှုံးခဲ့သည်။ DAOMaker သည် Access Control ချို့ယွင်းချက်များကြောင့် ဒေါ်လာ 4 သန်း ဆုံးရှုံးခဲ့သည်။ FlashLoan Attacks ကြောင့် Harves Finance သည် ဒေါ်လာ 38 သန်း ဆုံးရှုံးခဲ့သည်။

ရေးသားသူ Markos Mebellis

SSO Module 2 - Smart Contract Vulnerabilities: A Deep Dive into Reentrancy Attacks
ဤစာမျက်နှာတွင်

Smart contract များသည် ၎င်းတို့၏ ထိရောက်မှု၊ ပွင့်လင်းမြင်သာမှုနှင့် ပြောင်းလဲ၍မရသော လက္ခဏာများဖြင့် ကမ္ဘာ့စက်မှုလုပ်ငန်းများကို တော်လှန်ပြောင်းလဲနေပါသည်။ သို့သော် ၎င်းတို့၏ ပွင့်လင်းပြီး အလိုအလျောက် ဒီဇိုင်းသည် ၎င်းတို့ကို အန္တရာယ်များနှင့် ထိတွေ့စေပါသည်။ ခြိမ်းခြောက်မှုများကို လျှော့ချရင်း ၎င်းတို့၏ အလားအလာကို အမြင့်ဆုံးရရှိရန် ၎င်းတို့၏ အားနည်းချက်များနှင့် ဖြစ်နိုင်သော တိုက်ခိုက်မှုလမ်းကြောင်းများကို နားလည်ထားရန် အရေးကြီးပါသည်။ ဤ contract များကို ဖန်တီးခြင်းနှင့် ထိန်းသိမ်းခြင်းသည် ဂရုတစိုက် အာရုံစိုက်မှုနှင့် အကောင်းဆုံး လုပ်ထုံးလုပ်နည်းများကို လိုက်နာရန် လိုအပ်ပါသည်။ ဤဆောင်းပါးသည် နားလည်မှုကို မြှင့်တင်ရန် လက်တွေ့ကမ္ဘာ ဖြစ်ရပ်များဖြင့် သရုပ်ဖော်ကာ အဖြစ်များသော အားနည်းချက်များကို စူးစမ်းလေ့လာထားပါသည်။ Salus Security မှ ပံ့ပိုးသော အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

အဓိက အားနည်းချက်များ:

**Reentrancy:** ဤနေရာတွင် တိုက်ခိုက်သူများသည် အဓိက လုပ်ဆောင်ချက်များ မပြီးမီ သို့မဟုတ် တန်ဖိုးများ မွမ်းမံမီ function များထဲသို့ ပြန်ဝင်ရောက်ကာ ကွက်လပ်ကို အလွဲသုံးစားလုပ်ကြသည်။

Single-Function Reentrancy: ဤအခြေအနေသည် contract တစ်ခုသည် အန္တရာယ်ရှိ contract တစ်ခုနှင့် အပြန်အလှန် ဆက်သွယ်သောအခါ ဖြစ်ပေါ်ပြီး ထို contract အား function တစ်ခုထဲသို့ ပြန်ဝင်ရောက်ခွင့်ပြုသည်။ ဥပမာအားဖြင့် အန္တရာယ်ရှိ contract များသည် 'withdrawBalance' function ထဲသို့ အဆက်မပြတ် ပြန်ဝင်ရောက်ကာ လက်ကျန်ငွေများ မွမ်းမံမီ ether ပိုမို ထုတ်ယူနိုင်သည်။

ထင်ရှားသော တိုက်ခိုက်မှုများ-

  • The DAO (2016): ဒေါ်လာ သန်း 150 ရရှိပြီးနောက် ကုဒ်အားနည်းချက်များကြောင့် ဟက်ခ်ခံခဲ့ရသည်။ ၎င်းက Ethereum ကွန်ရက်ကို ကွဲအက်စေခဲ့သည်။
  • PolyDex (2021): PLX Locker Smart Contract အပေါ် reentrancy တိုက်ခိုက်မှုကြောင့် ဒေါ်လာ 500k ဆုံးရှုံးခဲ့သည်။
  • Bacon Protocol (2022): lend() လုပ်ဆောင်ချက်ရှိ reentrancy bug ကြောင့် ဒေါ်လာ 1M ဆုံးရှုံးခဲ့သည်။
  • Lendf.Me (2020): ကွဲပြားသော cryptocurrency များတွင် ခန့်မှန်းခြေ $24.7 သန်း ဆုံးရှုံးခဲ့သည်။

**Cross-Function Reentrancy:** မတူညီသော function များကြား မျှဝေထားသော state များနှင့် အားနည်းသော reentry ကာကွယ်မှုတို့မှ ဖြစ်ပေါ်သည်။ အထက်ပါ 'balances' ဥပမာက 'withdrawAll' တွင် ကာကွယ်မှုရှိသော်လည်း တိုက်ခိုက်သူများသည် 'transfer' function ကို အသုံးချနိုင်သေးကြောင်း ဖော်ပြသည်။

နာမည်ဆိုးဖြင့် ကျော်ကြားသော ဖြစ်ရပ်များ:

  • DFX Finance (2022): reentrancy ကာကွယ်မှုမရှိသော function တစ်ခုကို အသုံးချသည့် တိုက်ခိုက်မှုကြောင့် $7 သန်းကျော် ဆုံးရှုံးခဲ့သည်။
  • Hundred Finance (2022): reentrancy တိုက်ခိုက်မှုက borrowFresh function ကို အသုံးချပြီးနောက် $6.5 သန်းခန့် ဆုံးရှုံးခဲ့သည်။
  • Fei Protocol (2022): Reentrancy အားနည်းချက်ကို အသုံးချတိုက်ခိုက်မှုကြောင့် ဒေါ်လာ သန်း ၈၀ ခန့် ဆုံးရှုံးခဲ့သည်။

**Cross-Contract Reentrancy:** မတူညီသော စာချုပ်များအကြား မျှဝေထားသော အခြေအနေများနှင့် မှားယွင်းသော variable ပြောင်းလဲမှု အစီအစဉ်များကြောင့် ဖြစ်ပေါ်သည်။ function များတွင် ကာကွယ်မှုရှိသော်လည်း 'burnAccount' ကဲ့သို့သော အခြား function များကို အသုံးချနိုင်သေးသည်။

ထင်ရှားသော တိုက်ခိုက်မှုများ:

  • Rari Capital (2021): တစ်နာရီအတွင်း ဒေါ်လာ ၁၀ သန်းခန့် (~2600 ETH) ဆုံးရှုံးခဲ့သည်။
  • ValueDefi (2021): ပြင်ပဒေတာများကို မှီခိုထားသော မမှန်ကန်သည့် share တွက်ချက်မှုများကြောင့် 5345.314 WBNB ဆုံးရှုံးခဲ့သည်။

Read-Only Reentrancy:

Read-only reentrancy သည် စာချုပ်၏အခြေအနေကို မပြောင်းလဲသော်လည်း အခြေအနေမတည်ငြိမ်သည့်အခါ မှားယွင်းသော ရလဒ်များ ထုတ်ပေးနိုင်သည့် function တစ်ခုကို အလွဲသုံးစားလုပ်သည်။

မှတ်သားဖွယ် တိုက်ခိုက်မှုများ:

  • QuickSwap (2022): အလွဲသုံးစားလုပ်သူများသည် flash loan ကို အလွဲသုံးစားလုပ်ပြီး ပိုင်ဆိုင်မှု၏ spot ဈေးနှုန်းကို ပြောင်းလဲကာ 138 ETH နှင့် 700 MATIC token များကို လိမ်လည်ရယူခဲ့သည်။ ဤအရာသည် Curve LP oracle ၏ ချို့ယွင်းချက်ကြောင့် ဖြစ်နိုင်ခဲ့သည်။
  • dForce (2023): Arbitrum နှင့် Optimism chain များတွင် Curve Finance နှင့်အတူ ဈေးနှုန်း oracle များကို ဝင်ရောက်အသုံးပြုသည့် code တွင် read-only reentrancy ချို့ယွင်းချက် တစ်ခု ရှိခဲ့သည်။
  • Sentimente (2023): read-only reentrancy ချို့ယွင်းချက်ကို အလွဲသုံးစားလုပ်သည့် တိုက်ခိုက်မှုတစ်ခုကြောင့် ဒေါ်လာ ၁ သန်း ခိုးယူခံခဲ့ရသည်။ ကံကောင်းထောက်မစွာ 90% ကို ကျူးလွန်သူက ပြန်လည်ပေးအပ်ခဲ့သည်။
  • Sturdy (2023): Balancer ၏ read-only reentrancy ပြဿနာကြောင့် B-stETH-STABLE ၏ ဈေးနှုန်းကို ပြောင်းလဲခံရပြီး ခန့်မှန်းခြေ 442 ETH ဆုံးရှုံးခဲ့သည်။

Reentrancy အားနည်းချက် ကာကွယ်ခြင်း:

  1. check-effect-interaction ပုံစံကို အမြဲလိုက်နာပါ။
  2. အရေးကြီးသော လုပ်ဆောင်ချက်အားလုံးအတွက် re-entry ကာကွယ်မှုကို အသုံးပြုပါ။
  3. ပြင်ပ ခေါ်ဆိုမှုတိုင်းကို သေချာစွာ ကိုင်တွယ်ပါ။

Integer Overflow:

တွက်ချက်မှုများ ကန့်သတ်ချက်ကျော်လွန်သောအခါ overflow ဖြစ်ပြီး များသောအားဖြင့် အလွန်သေးငယ်သော သို့မဟုတ် အလွန်ကြီးမားသော တန်ဖိုးများကို ဖြစ်ပေါ်စေသည်။

သရုပ်ပြသဖြင့် တိုက်ခိုက်မှုများ:

  • BeautyChain (2018): တိုက်ခိုက်သူများသည် integer overflow မှတစ်ဆင့် BEC 10^58 ကို ရယူခဲ့ပြီး ဒေါ်လာ သန်း 900 ခန့် ဆုံးရှုံးစေခဲ့သည်။
  • Poolz (2023): Ethereum၊ Binance နှင့် Polygon ၏ on-chain တွင် ခန့်မှန်းခြေ $665,000 ဆုံးရှုံးခဲ့သည်။

Integer Overflow ကာကွယ်ရေးနည်းလမ်းများ:

  1. safeMath library ကဲ့သို့သော လုံခြုံသော တွက်ချက်မှုနည်းလမ်းများကို အသုံးပြုပါ။
  2. ရလဒ်များ သတ်မှတ်အပိုင်းအခြားအတွင်း ရှိနေကြောင်း သေချာစေရန် bounds checking ကို ဦးစားပေးပါ။
  3. ပါဝင်တည်ဆောက်ထားသော overflow ရှာဖွေမှုအတွက် Solidity compiler ဗားရှင်း 0.8.0 သို့မဟုတ် နောက်ပိုင်းကို အသုံးပြုပါ။

အသုံးပြုခွင့် ထိန်းချုပ်မှု:
အရေးကြီးသော လုပ်ငန်းဆောင်တာများကို ကိုင်တွယ်သည့် function များတွင် တင်းကျပ်သော အသုံးပြုခွင့် ကန့်သတ်ချက်များ မရှိခြင်းကြောင့် အသုံးပြုခွင့် ထိန်းချုပ်မှု အားနည်းချက်များ ဖြစ်ပေါ်လာသည်။

  • ထင်ရှားသော တိုက်ခိုက်မှုများ:
  • DAOMaker (2021): ခန့်မှန်းခြေ $4M ကျော်ကို ထိုးထွင်းခိုးယူခံခဲ့ရပြီးနောက် init function သည် အားနည်းချက်ရှိနေခဲ့သည်။
  • GymNetwork (2022): ကွန်ထရက်အခြားမှ အပ်ငွေလုပ်ဆောင်မှု depositFromOtherContract() တွင် အတည်ပြုစစ်ဆေးမှု လျစ်လျူရှုချက်ကို အလွဲသုံးစားလုပ်သူများ အသုံးချခဲ့ပြီး အမှန်တကယ် ငွေပေးချေမှုမရှိဘဲ တရားမဝင် လက်ကျန်ငွေ တိုးမြှင့်နိုင်ခဲ့သည်။ ဆုံးရှုံးမှုမှာ ခန့်မှန်းခြေ 2,475.91 WBNB ဖြစ်သည်။
  • Tempdao (2023): migrateStake လုပ်ဆောင်ချက်အတွက် ဝင်ရောက်ခွင့် ထိန်းချုပ်မှုကို ပေါ့ဆစွာ ချဉ်းကပ်ခြင်းကြောင့် ဒေါ်လာ 2.34 သန်းကျော် ဆုံးရှုံးခဲ့သည်။

ဝင်ရောက်ခွင့် ထိန်းချုပ်မှု အားနည်းချက်

  • ဖော်ပြချက်: စနစ်တစ်ခုအတွင်း သီးခြားလုပ်ဆောင်ချက်များအတွက် ဝင်ရောက်ခွင့်နှင့် အခွင့်ထူးများကို ထိန်းချုပ်သည့် ကန့်သတ်ချက် ယန္တရားများ မလုံလောက်ခြင်းကြောင့် ဖြစ်ပေါ်လာသော အားနည်းချက်များ။

ကာကွယ်ရေး အစီအမံများ:

  1. တင်းကျပ်သော ခွင့်ပြုချက် စစ်ဆေးမှု: အထူးသဖြင့် အရေးကြီးသော လုပ်ဆောင်ချက်များကို ကိုင်တွယ်သည့် function များအတွက် တင်းကြပ်သော ခွင့်ပြုချက် ပရိုတိုကောများကို အမြဲတမ်း ကျင့်သုံးပါ။
  2. Multi-Signature ယန္တရား: ပူးပေါင်းဆုံးဖြတ်ချက် လိုအပ်သော လုပ်ငန်းများအတွက် အရေးကြီးသော လုပ်ဆောင်ချက်များကို မလုပ်ဆောင်မီ အတည်ပြုချက် အများအပြား လိုအပ်သည့် multi-signature ပရိုတိုကောများကို အသုံးပြုပါ။

အဖြစ်များသော တိုက်ခိုက်မှု နည်းလမ်းများ

  • ဖော်ပြချက်: တိုက်ခိုက်သူများသည် စနစ်တစ်ခုအတွင်း အားနည်းချက်များကို အသုံးချသည့် နည်းလမ်းများ သို့မဟုတ် လမ်းကြောင်းအမျိုးမျိုး၊ အဓိကအားဖြင့် smart contract များတွင်။

ထင်ရှားသော ဥပမာများ:

  • FlashLoan တိုက်ခိုက်မှုများ: မကောင်းသော လုပ်ဆောင်ချက်များ ဆောင်ရွက်ရန် decentralized finance စနစ်များ၏ ချက်ချင်းချေးယူနိုင်သည့် လက္ခဏာကို အသုံးချသည်။
  • ရှေ့ပြေးခြင်း: တိုက်ခိုက်သူများသည် အခြားအသုံးပြုသူတစ်ဦး၏ ဆောင်ရွက်ဆဲ အရောင်းအဝယ်ကို သိရှိပြီး ပိုမိုမြင့်မားသော gas ကြေးကို ကမ်းလှမ်းခြင်းဖြင့် ၎င်းအပေါ် ဆောင်ရွက်သည်။

FlashLoan တိုက်ခိုက်မှု

  • ဖော်ပြချက်: မူလသဘောအရ တိုက်ခိုက်မှုမဟုတ်သော်လည်း FlashLoan သည် အပေါင်ပစ္စည်းမလိုဘဲ အသုံးပြုသူများကို ငွေပမာဏကြီးမားစွာ ချက်ချင်းချေးယူနိုင်စေသည့် DeFi အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ စာချုပ်အပြန်အလှန်တုံ့ပြန်မှုများနှင့် ဆက်စပ်မှုများရှိ ယုတ္တိချို့ယွင်းချက်များကြောင့် ၎င်းကို အလွဲသုံးစားလုပ်ခံခဲ့ရသည်။

ထင်ရှားသော တိုက်ခိုက်မှုများ:

  1. Harves Finance (2020.10.26): ဒေါ်လာ ၃၈ သန်း ဆုံးရှုံးမှုဖြစ်ပေါ်ခဲ့သည်။
  2. InverseFinance (2022.6.16): WBTC 53.2445 နှင့် USDT 99,976.29 ဆုံးရှုံးမှုဖြစ်ပေါ်ခဲ့သည်။
  3. NewFreeDAO (2022.9.8): 4,481 WBNB ကို ညှစ်ထုတ်ခဲ့ပြီး ခန့်မှန်းတန်ဖိုးမှာ ဒေါ်လာ 1.25 သန်းခန့် ဖြစ်သည်။
  4. Lodestar (2022.12.11): oracle စျေးနှုန်းကို ခြယ်လှယ်ခြင်းဖြင့် အလွဲသုံးစားလုပ်ခံခဲ့ရသည်။
  5. 0vix (2023.4.28): Polygon ကွင်းဆင်းတွင် ဒေါ်လာ 2 သန်း ဆုံးရှုံးမှု ဖြစ်ပေါ်ခဲ့သည်။

ကာကွယ်ရေး အကြံပြုချက်များ:

  1. ပရောဂျက် ဖွံ့ဖြိုးတည်ဆောက်စဉ် Flashloan ၏ သဘောသဘာဝများကို ဖော်ထုတ်သိရှိပါ။
  2. စျေးနှုန်းကို တိကျစွာ သတ်မှတ်ရန် အချိန်အလိုက် အလေးချိန်ပေးတွက်ချက်မှု သို့မဟုတ် oracle အများအပြားကို အသုံးပြုပါ။

ရှေ့ပြေးလုပ်ဆောင်မှု

  • ဖော်ပြချက်: တိုက်ခိုက်သူတစ်ဦးသည် အခြားအသုံးပြုသူတစ်ဦး၏ ငွေလွှဲမှုကို memPool မှ သိရှိပြီး ပိုမိုမြင့်မားသော gas ကြေးကို ကမ်းလှမ်းခြင်းဖြင့် အခွင့်အရေးယူသည်။

ထင်ရှားသော တိုက်ခိုက်မှုများ:

  1. Sushi Badger Digg (2021.1.25): 81.68 ETH ဆုံးရှုံးမှု ဖြစ်ပေါ်ခဲ့သည်။
  2. Sushiswap Ape-ETH pool (2022.5.17): တိုက်ခိုက်သူသည် ခန့်မှန်းခြေ 0.3 ETH အမြတ်ရရှိခဲ့သည်။
  3. Uniswap (2023.4.2): ဆန်ဒဝစ်တိုက်ခိုက်မှုမှတစ်ဆင့် ဒေါ်လာ ၂၅ သန်းခန့် ဆုံးရှုံးမှုဖြစ်စေခဲ့သည်။

ကာကွယ်ရေးအကြံပြုချက်များ:

  1. ကုန်သွယ်သည့်အခါ slippage ကာကွယ်မှုကို အသုံးပြုပါ။
  2. အထူးသဖြင့် မတည်ငြိမ်သော စျေးကွက်များတွင် အလုပ်များချိန်မဟုတ်သော အချိန်များ၌ ကုန်သွယ်မှုများကို ဆောင်ရွက်ပါ။
  3. memPool ကို ကျော်လွှားပြီး ကုန်သွယ်မှုများကို မိုင်းတွင်းလုပ်သားများထံ တိုက်ရိုက်ပို့ရန် 1inch ၏ FlashBot rpc ကို အသုံးပြုပါ။

အကျဉ်းချုပ်

ဂုဏ်ယူပါသည်။ သင်သည် Module 2 - Smart Contract Vulnerabilities: A Deep Dive into Reentrancy Attacks and Common Exploits ကို ပြီးမြောက်ခဲ့ပါပြီ။

သင့်သင်ယူမှုများကို ပြန်လည်သုံးသပ်ကြည့်ရအောင်-

ပြန်လည်ဝင်ရောက်နိုင်သော အားနည်းချက်များ - တိုက်ခိုက်သူများသည် လုပ်ဆောင်ချက်များ အပြည့်အစုံမပြီးမီ ပြန်လည်ဝင်ရောက်ရန် ကွက်လပ်များကို အလွဲသုံးစားလုပ်ကြသည်။

  • လုပ်ဆောင်ချက်တစ်ခုတည်း ပြန်လည်ဝင်ရောက်မှု- မသမာသော စာချုပ်တစ်ခုသည် အခြားစာချုပ်ရှိ လုပ်ဆောင်ချက်တစ်ခုသို့ ပြန်လည်ဝင်ရောက်သည်။
  • လုပ်ဆောင်ချက်များကြား ပြန်လည်ဝင်ရောက်မှု- ပြန်လည်ဝင်ရောက်မှု ကာကွယ်မှု အားနည်းခြင်းကြောင့် မတူညီသော လုပ်ဆောင်ချက်များကြား မျှဝေထားသော အခြေအနေများကို အလွဲသုံးစားလုပ်ခံရသည်။
  • စာချုပ်များကြား ပြန်လည်ဝင်ရောက်မှု- မတူညီသော စာချုပ်များအကြား မျှဝေထားသော အခြေအနေများကို အလွဲသုံးစားလုပ်သည်။
  • ဖတ်ရှုရုံသာ ပြန်လည်ဝင်ရောက်မှု- အခြေအနေ မကိုက်ညီသည့်အခါ မှားယွင်းသော ရလဒ်များ ထုတ်ပေးသော လုပ်ဆောင်ချက်ကို အလွဲသုံးစားလုပ်သည်။

ကိန်းပြည့် ပိုလျှံမှု - သတ်မှတ်ထားသော ကန့်သတ်ချက်များကို ကျော်လွန်သော တွက်ချက်မှုများက လွန်ကဲသော တန်ဖိုးများကို ဖြစ်ပေါ်စေသည်။

ဝင်ရောက်ခွင့် ထိန်းချုပ်မှု အားနည်းချက်များ - အရေးကြီးသော လုပ်ဆောင်ချက်များအပေါ် တင်းကျပ်သော ဝင်ရောက်ခွင့် ကန့်သတ်ချက်များ မရှိခြင်းကြောင့် ဖြစ်ပေါ်သည်။

အဖြစ်များသော တိုက်ခိုက်မှု လမ်းကြောင်းများ - တိုက်ခိုက်သူများသည် စနစ်အားနည်းချက်များကို အသုံးချသည့် နည်းလမ်းများ။

**FlashLoan တိုက်ခိုက်မှု** - အပေါင်ပစ္စည်းမပါဘဲ ချက်ချင်း ကြီးမားစွာ ချေးယူနိုင်စေသော DeFi အင်္ဂါရပ်ဖြစ်ပြီး ယုတ္တိဆိုင်ရာ ချို့ယွင်းချက်များကြောင့် အသုံးချခံရခြင်း။

ရှေ့ပြေးတိုက်ခိုက်မှု- တိုက်ခိုက်သူများသည် ဆောင်ရွက်ဆဲ အရောင်းအဝယ်များကို သိရှိပြီး ပိုမိုမြင့်မားသော gas ကြေးများ ကမ်းလှမ်းခြင်းဖြင့် အကျိုးအမြတ်ရယူသည်။

ဤဆောင်းပါးကို ပံ့ပိုးပေးသူ -

အကျဉ်းချုပ် — သရုပ်ဖော်ပုံ