බ්ලොග්

ස්වයංක්‍රීයව පරිවර්තනය කරන ලදි · ඉංග්‍රීසියෙන් කියවන්න

SSO මොඩියුලය 2 - ස්මාර්ට් කොන්ට්‍රැක්ට් අවුල්‍යතා: Reentrancy ප්‍රහාර පිළිබඳ ගැඹුරු විමර්ශනයක්

ස්මාර්ට් කොන්ට්‍රැක්ට් විනිවිදභාවය ලබා දෙන නමුත් අවදානම් ද රැගෙන එයි. මෙම ලිපිය Reentrancy වැනි අවුල්‍යතා හෙළිදරව් කරයි; උදාහරණයක් ලෙස DAO හි ඩොලර් මිලියන 150ක පාඩුව. Integer Overflow නිසා BeautyChain හි ඩොලර් මිලියන 900ක පසුබෑමක් සිදු විය. Access Control දෝෂ නිසා DAOMaker ඩොලර් මිලියන 4ක් අහිමි කර ගත්තේය. FlashLoan ප්‍රහාර නිසා Harves Finance ඩොලර් මිලියන 38ක් අහිමි කර ගත්තේය.

විසින් Markos Mebellis

SSO මොඩියුලය 2 - ස්මාර්ට් කොන්ට්‍රැක්ට් අවුල්‍යතා: Reentrancy ප්‍රහාර පිළිබඳ ගැඹුරු විමර්ශනයක්
මෙම පිටුවේ

ස්මාර්ට් කොන්ට්‍රැක්ට් ඒවායේ කාර්යක්ෂමතාව, විනිවිදභාවය සහ වෙනස් කළ නොහැකි ලක්ෂණ සමඟ ගෝලීය කර්මාන්ත විප්ලවීය ලෙස වෙනස් කරමින් පවතී. එහෙත්, ඒවායේ විවෘත සහ ස්වයංක්‍රීය සැලසුම ඒවා අවදානම්වලට ද නිරාවරණය කරයි. ඒවායේ හැකියාව උපරිම කරමින් තර්ජන අවම කිරීමට, ඒවායේ අවුල්‍යතා සහ හැකි ප්‍රහාර මාර්ග අවබෝධ කර ගැනීම අත්‍යවශ්‍යය. මෙම කොන්ට්‍රැක්ට් සකස් කිරීම සහ නඩත්තු කිරීම සැලකිලිමත් අවධානයක් සහ හොඳම ක්‍රියාමාර්ගවලට අනුකූල වීම අවශ්‍ය කරයි. මෙම ලිපිය සාමාන්‍ය අවුල්‍යතා ගැඹුරින් සොයා බලා, අවබෝධය වැඩිදියුණු කිරීම සඳහා සැබෑ ලෝකයේ අවස්ථා සමඟ ඒවා නිරූපණය කරයි. Salus Security විසින් ලබා දෙන පහත ලිපිය බලමු.

ප්‍රධාන අවුල්‍යතා:

**Reentrancy:** මෙහිදී ප්‍රහාරකයින් ප්‍රධාන මෙහෙයුම් අවසන් වීමට හෝ අගයන් යාවත්කාලීන වීමට පෙර ශ්‍රිතවලට නැවත ඇතුළු වෙමින් පරතරයක් භාවිතා කරයි.

තනි ශ්‍රිත Reentrancy: මෙය සිදු වන්නේ කොන්ට්‍රැක්ට් එකක් දුෂ්ට කොන්ට්‍රැක්ට් එකක් සමඟ අන්තර්ක්‍රියා කරන විට වන අතර, එයින් දෙවැන්නාට ශ්‍රිතයකට නැවත ඇතුළු වීමට ඉඩ ලැබේ. උදාහරණයක් ලෙස, දුෂ්ට කොන්ට්‍රැක්ට් 'withdrawBalance' ශ්‍රිතයට නිරන්තරයෙන් නැවත ඇතුළු වී, ශේෂ යාවත්කාලීන වීමට පෙර තවත් ඊතර් උපුටා ගත හැක.

කැපී පෙනෙන ප්‍රහාර:

  • The DAO (2016): ඩොලර් මිලියන 150ක් රැස් කිරීමෙන් පසු, කේතන දුර්වලතා හේතුවෙන් එය හැක් කරන ලදී. මෙය Ethereum ජාලයේ බෙදීමකට හේතු විය.
  • PolyDex (2021): PLX Locker Smart Contract මත සිදු වූ reentrancy ප්‍රහාරයක් හේතුවෙන් ඩොලර් 500kක් අහිමි විය.
  • Bacon Protocol (2022): lend() ශ්‍රිතයේ reentrancy දෝෂයක් හේතුවෙන් ඩොලර් මිලියන 1ක පාඩුවක් සිදු විය.
  • Lendf.Me (2020): විවිධ ක්‍රිප්ටෝ මුදල් වර්ග හරහා ආසන්න වශයෙන් ඩොලර් මිලියන 24.7ක් අහිමි විය.

**හරස්-කාර්ය පුනර්ප්‍රවේශය:** විවිධ කාර්යයන් අතර බෙදාගත් තත්ත්වයන් සහ දුර්වල නැවත ඇතුළුවීම් ආරක්ෂණය හේතුවෙන් පැන නගී. ඉහත 'balances' උදාහරණය පෙන්නුම් කරන්නේ 'withdrawAll' සඳහා ආරක්ෂණය තිබියදීත්, ආක්‍රමණිකයන්ට තවමත් 'transfer' කාර්යය අයුතු ලෙස භාවිත කළ හැකි බවයි.

කුප්‍රකට සිදුවීම්:

  • DFX Finance (2022): පුනර්ප්‍රවේශ ආරක්ෂණයක් නොමැති කාර්යයක් අයුතු ලෙස භාවිත කළ ප්‍රහාරයක් හේතුවෙන් ඩොලර් මිලියන 7කට වැඩි ප්‍රමාණයක් අහිමි විය.
  • Hundred Finance (2022): borrowFresh කාර්යය අයුතු ලෙස භාවිත කළ පුනර්ප්‍රවේශ ප්‍රහාරයකින් පසු ආසන්න වශයෙන් ඩොලර් මිලියන 6.5ක් අහිමි විය.
  • Fei Protocol (2022): Reentrancy දෝෂයක් භාවිතා කළ ප්‍රහාරයකින් ඩොලර් මිලියන 80ක් පමණ අහිමි විය.

**හරස්-කොන්ත්‍රාත් Reentrancy:** විවිධ කොන්ත්‍රාත්තු හරහා බෙදාගත් තත්ත්වයන් සහ වැරදි විචල්‍ය වෙනස් කිරීමේ අනුපිළිවෙලවල් නිසා සිදු වේ. ශ්‍රිතවලට ආරක්ෂාව තිබුණත්, 'burnAccount' වැනි වෙනත් ශ්‍රිත තවමත් අපයෝජනය කළ හැක.

ප්‍රමුඛ ප්‍රහාර:

  • Rari Capital (2021): පැයකට අඩු කාලයකදී ඩොලර් මිලියන 10ක් පමණ (~2600 ETH) අහිමි විය.
  • ValueDefi (2021): බාහිර දත්ත මත රඳා පැවති වලංගු නොවන කොටස් ගණනය කිරීම් නිසා 5345.314 WBNB අහිමි විය.

කියවීමට පමණක් Reentrancy:

Read-only reentrancy ක්‍රියාත්මක වන්නේ කොන්ත්‍රාත්තුවේ තත්ත්වය වෙනස් නොකරන, නමුත් තත්ත්වය අනුකූල නොවන විට වැරදි ප්‍රතිදාන ලබා දිය හැකි ශ්‍රිතයක් හරහා ය.

සැලකිය යුතු ප්‍රහාර:

  • QuickSwap (2022): අපයෝජකයින් flash loan එකක් වැරදි ලෙස භාවිතා කර වත්කමේ spot මිල වෙනස් කර 138 ETH සහ 700 MATIC ටෝකන වංචා කළහ. මෙය Curve LP oracle හි දෝෂයක් නිසා හැකි විය.
  • dForce (2023): Arbitrum සහ Optimism ජාලවල Curve Finance සමඟ මිල oracles වෙත ප්‍රවේශ වන කේතයේ read-only reentrancy දෝෂයක් තිබුණි.
  • Sentimente (2023): read-only reentrancy දෝෂයක් අපයෝජනය කළ ප්‍රහාරයක් ඩොලර් මිලියන 1ක සොරකමකට හේතු විය. වාසනාවකට, 90% ප්‍රහාරකයා විසින් ආපසු ලබා දෙන ලදී.
  • Sturdy (2023): Balancer හි කියවීමට පමණක් වන reentrancy ගැටලුවක් හේතුවෙන් B-stETH-STABLE හි මිල වෙනස් කරන ලද අවස්ථාවක දළ වශයෙන් 442 ETH අහිමි විය.

Reentrancy අවදානම වැළැක්වීම:

  1. සැමවිටම check-effect-interaction රටාව අනුගමනය කරන්න.
  2. සියලු සංවේදී ක්‍රියාකාරකම් සඳහා re-entry ආරක්ෂණය භාවිත කරන්න.
  3. සෑම බාහිර ඇමතුමක්ම ඉතා ප්‍රවේශමෙන් හසුරුවන්න.

පූර්ණ සංඛ්‍යා උඩුගැලීම:

ගණනය කිරීම් සීමාවන් ඉක්මවා යන විට ඒවා උඩුගැලේ; එය බොහෝ විට ඉතා කුඩා හෝ අති විශාල අගයන්ට හේතු වේ.

නිදර්ශනාත්මක ප්‍රහාර:

  • BeautyChain (2018): ප්‍රහාරකයින් පූර්ණ සංඛ්‍යා උපරිප්‍රවාහයක් හරහා 10^58 BEC ලබා ගනිමින් විස්මිත ඩොලර් මිලියන 900ක් බැහැර කළහ.
  • Poolz (2023): Ethereum, Binance සහ Polygon හි on-chain හරහා ආසන්න වශයෙන් ඩොලර් 665,000ක පාඩුවක් සිදු විය.

පූර්ණ සංඛ්‍යා උපරිප්‍රවාහ ප්‍රතික්‍රියා:

  1. safeMath පුස්තකාලය වැනි ආරක්ෂිත ගණනය කිරීමේ ක්‍රම භාවිත කරන්න.
  2. ප්‍රතිඵල පරාසය තුළම පවතින බව තහවුරු කිරීමට සීමා පරීක්ෂාවට ප්‍රමුඛත්වය දෙන්න.
  3. ආවේණික overflow හඳුනාගැනීම සඳහා Solidity compiler අනුවාදය 0.8.0 හෝ ඊට පසු අනුවාදය භාවිත කරන්න.

ප්‍රවේශ පාලනය:
තීරණාත්මක මෙහෙයුම් හසුරුවන ශ්‍රිත සඳහා දැඩි ප්‍රවේශ සීමා නොමැති වීම නිසා ප්‍රවේශ පාලන දුර්වලතා ඇති වේ.

  • ප්‍රධාන ප්‍රහාර:
  • DAOMaker (2021): init ශ්‍රිතය දුර්වල තත්ත්වයේ ඉතිරි වූ පසු ආසන්න වශයෙන් $4M ක් අහිමි විය.
  • GymNetwork (2022): අනාථකරණ දෝෂයක් depositFromOtherContract() හි භාවිතා කරමින් සූරාකන්නන් සැබෑ ගෙවීමකින් තොරව අනවසර ශේෂ වැඩි කර ගත්හ. පාඩුව? ආසන්න වශයෙන් 2,475.91 WBNB.
  • Tempdao (2023): migrateStake ශ්‍රිතය සඳහා ප්‍රවේශ පාලනයේ ලිහිල් ප්‍රවේශයක් හේතුවෙන් ඩොලර් මිලියන 2.34 ඉක්මවන පාඩුවක් සිදු විය.

ප්‍රවේශ පාලන අවදානම

  • විස්තරය: පද්ධතියක් තුළ නිශ්චිත මෙහෙයුම් සඳහා ප්‍රවේශය සහ වරප්‍රසාද පාලනය කරන ප්‍රමාණවත් නොවන සීමා කිරීමේ යාන්ත්‍රණ නිසා පැන නගින අවදානම්.

වැළැක්වීමේ පියවර:

  1. දැඩි අවසර පරීක්ෂාව: සෑම විටම ශ්‍රිත සඳහා දැඩි අවසර ප්‍රොටෝකෝල බලාත්මක කරන්න, විශේෂයෙන් සංවේදී මෙහෙයුම් හසුරුවන ඒවා සඳහා.
  2. බහු අත්සන් යාන්ත්‍රණය: ඒකාබද්ධ තීරණ ගැනීම අවශ්‍ය කාර්යයන් සඳහා, සංවේදී මෙහෙයුම් ක්‍රියාත්මක කිරීමට පෙර බහු අනුමැතියක් අවශ්‍ය වන බහු අත්සන් ප්‍රොටෝකෝල භාවිත කරන්න.

පොදු ප්‍රහාරක දෛශික

  • විස්තරය: පද්ධතියක, ප්‍රධාන වශයෙන් ස්මාර්ට් කොන්ත්‍රාත්තු වල ඇති දුර්වලතා ප්‍රයෝජනයට ගැනීමට ප්‍රහාරකයින් භාවිතා කරන විවිධ ක්‍රම හෝ මාර්ග.

කැපී පෙනෙන උදාහරණ:

  • FlashLoan ප්‍රහාර: හානිකර ක්‍රියාකාරකම් සිදු කිරීම සඳහා විමධ්‍යගත මූල්‍ය පද්ධතිවල ක්ෂණික ණය ගැනීමේ විශේෂාංගය ප්‍රයෝජනයට ගනී.
  • Front-Running: ප්‍රහාරකයින් වෙනත් පරිශීලකයෙකුගේ විසඳුමට යටත් නොවූ ගනුදෙනුවක් පිළිබඳ දැනුම ලබා ගෙන, ඉහළ ගෑස් ගාස්තුවක් ඉදිරිපත් කිරීමෙන් ඒ මත ක්‍රියා කරයි.

FlashLoan ප්‍රහාරය

  • විස්තරය: ආවේණිකව ප්‍රහාරයක් නොවුවද, FlashLoan යනු පරිශීලකයින්ට ඇපකරයක් නොමැතිව විශාල මුදලක් ක්ෂණිකව ණයට ගැනීමට ඉඩ සලසන DeFi විශේෂාංගයකි. ගිවිසුම් අන්තර්ක්‍රියා සහ සම්බන්ධතාවල තාර්කික දෝෂ හේතුවෙන් එය අපයෝජනයට ලක් වී ඇත.

කැපී පෙනෙන ප්‍රහාර:

  1. Harves Finance (2020.10.26): ඩොලර් මිලියන 38ක පාඩුවක් ඇති කළේය.
  2. InverseFinance (2022.6.16): 53.2445 WBTC සහ 99,976.29 USDT පාඩුවක් ඇති කළේය.
  3. NewFreeDAO (2022.9.8): WBNB 4,481ක් ඉවත් කරන ලද අතර එය ආසන්න වශයෙන් ඩොලර් මිලියන 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): ETH 81.68ක පාඩුවක් සිදු විය.
  2. Sushiswap Ape-ETH pool (2022.5.17): ප්‍රහාරකයා ආසන්න වශයෙන් ETH 0.3ක ලාභයක් ලැබීය.
  3. Uniswap (2023.4.2): සැන්ඩ්විච් ප්‍රහාරයක් හරහා මිලියන 25ක පමණ පාඩුවක් සිදු විය.

වැළැක්වීමේ නිර්දේශ:

  1. වෙළඳාම් කිරීමේදී ස්ලිපේජ් ආරක්ෂණය භාවිත කරන්න.
  2. උච්ච නොවන වේලාවන්හිදී වෙළඳාම් ක්‍රියාත්මක කරන්න, විශේෂයෙන් අස්ථිර වෙළඳපොලවල්වල.
  3. memPool මඟ හරිමින් වෙළඳාම් සෘජුවම මයිනර්වරුන්ට යැවීමට 1inch හි FlashBot rpc භාවිත කරන්න.

සාරාංශය

සුබ පැතුම්! ඔබ මොඩියුලය 2 - ස්මාර්ට් කොන්ට්‍රැක්ට් අවදානම්: රීඑන්ට්‍රන්සි ප්‍රහාර සහ පොදු අනිෂ්ට ක්‍රියා පිළිබඳ ගැඹුරු විමර්ශනය සම්පූර්ණ කළා.

ඔබේ ඉගෙනීම් සමාලෝචනය කරමු:

නැවත ඇතුළුවීමේ අවදානම් - ප්‍රහාරකයින් ශ්‍රිත සම්පූර්ණයෙන් අවසන් වීමට පෙර නැවත ඇතුළු වීමෙන් හිඩැස් භාවිතා කරයි.

  • තනි ශ්‍රිත නැවත ඇතුළුවීම: අනිෂ්ට ගිවිසුමක් තවත් ගිවිසුමක ශ්‍රිතයකට නැවත ඇතුළු වේ.
  • හරස් ශ්‍රිත නැවත ඇතුළුවීම: දුර්වල නැවත ඇතුළුවීම් ආරක්ෂණය හේතුවෙන් විවිධ ශ්‍රිත අතර බෙදාගත් තත්ත්ව භාවිතා කරනු ලැබේ.
  • හරස් ගිවිසුම් නැවත ඇතුළුවීම: විවිධ කොන්ත්‍රාත්තු හරහා බෙදාගත් තත්ත්වයන් අයුතු ලෙස භාවිත කරයි.
  • කියවීමට පමණක් පුනර්භාවය: තත්ත්වය ස්ථාවර නොවන විට වැරදි ප්‍රතිදාන නිපදවන ශ්‍රිතයක් අයුතු ලෙස භාවිත කරයි.

පූර්ණ සංඛ්‍යා උතිරේකය - නියම කළ සීමා ඉක්මවන ගණනය කිරීම්, අන්ත අගයන් ඇති කරයි.

ප්‍රවේශ පාලන දුර්වලතා - අත්‍යවශ්‍ය ශ්‍රිත සඳහා දැඩි ප්‍රවේශ සීමා නොමැති වීමෙන් පැන නගී.

පොදු ප්‍රහාරක ක්‍රම - පද්ධති දුර්වලතා භාවිතා කරමින් ප්‍රහාරකයින් සිදු කරන ක්‍රම.

**FlashLoan ප්‍රහාරය** - ඇපකරයක් නොමැතිව ක්ෂණිකව විශාල ණයක් ලබා ගැනීමට ඉඩ දෙන DeFi විශේෂාංගයක් වන නමුත් තර්කානුකූල දෝෂ නිසා අනිසි ලෙස භාවිතා වේ.

ඉදිරි-දිවීමේ ප්‍රහාරය- ප්‍රහාරකයින්ට විසඳුමට යන ගනුදෙනු පිළිබඳ දැනුම ලැබෙන අතර ඉහළ ගෑස් ගාස්තු ඉදිරිපත් කිරීමෙන් එයින් ප්‍රයෝජන ගනී.

මෙම ලිපිය ඔබ වෙත ගෙන ආවේ:

සාරාංශය — නිදර්ශනය