Blog

Tradus automat · Citește în engleză

SSO Modulul 2 - Vulnerabilități ale contractelor inteligente: O analiză aprofundată a atacurilor de reentranță

Contractele inteligente oferă transparență, dar implică riscuri. Acest articol dezvăluie vulnerabilități precum reentranța, cu pierderea de 150 milioane USD a DAO ca exemplu. Depășirea întregului a dus la pierderea de 900 milioane USD a BeautyChain. DAOMaker a pierdut 4 milioane USD din cauza defectelor de control al accesului. Atacurile FlashLoan au dus la pierderea a 38 milioane USD de către Harves Finance.

De Markos Mebellis

SSO Modulul 2 - Vulnerabilități ale contractelor inteligente: O analiză aprofundată a atacurilor de reentranță
Pe această pagină

Contractele inteligente revoluționează industriile globale prin eficiența, transparența și caracteristicile lor imuabile. Totuși, designul lor deschis și automatizat le expune și riscurilor. Pentru a le maximiza potențialul reducând amenințările, este esențial să le înțelegem vulnerabilitățile și posibilele căi de atac. Crearea și întreținerea acestor contracte necesită atenție deosebită și respectarea celor mai bune practici. Acest articol analizează vulnerabilitățile comune, ilustrându-le cu cazuri reale pentru a îmbunătăți înțelegerea. Să analizăm următorul articol, oferit de Salus Security.

Vulnerabilități cheie:

**Reentranță:** Aici, atacatorii exploatează o breșă, reintrând în funcții înainte ca operațiunile cheie să se finalizeze sau valorile să fie actualizate.

Reentranță pe o singură funcție: Aceasta apare când un contract interacționează cu un contract rău intenționat, permițându-i acestuia din urmă să reintre într-o funcție. De exemplu, contractele rău intenționate pot reintra continuu în funcția „withdrawBalance”, sustrăgând mai mult ether înainte ca soldurile să fie actualizate.

Atacuri notabile:

  • The DAO (2016): După ce a strâns 150 de milioane de dolari, a fost spart din cauza vulnerabilităților de cod. Acest lucru a dus la o scindare a rețelei Ethereum.
  • PolyDex (2021): A pierdut 500k din cauza unui atac de reentranță asupra contractului inteligent PLX Locker.
  • Bacon Protocol (2022): A suferit o pierdere de 1M din cauza unui bug de reentranță în funcția lend().
  • Lendf.Me (2020): A pierdut aproximativ 24,7 milioane $ în mai multe criptomonede.

**Reentranță între funcții:** Apare din stări partajate între diferite funcții și protecție slabă împotriva reentrării. Exemplul „balances” de mai sus indică faptul că, deși „withdrawAll” are protecție, atacatorii pot exploata în continuare funcția „transfer”.

Incidente celebre:

  • DFX Finance (2022): A pierdut peste 7 milioane $ din cauza unui atac care a exploatat o funcție fără protecție împotriva reentrării.
  • Hundred Finance (2022): A pierdut aproximativ 6,5 milioane $ după ce un atac de reentranță a exploatat funcția borrowFresh.
  • Fei Protocol (2022): A pierdut aproximativ 80 de milioane de dolari într-un atac care a exploatat o vulnerabilitate de tip Reentrancy.

**Reentrancy între contracte:** Rezultă din stări partajate între contracte diferite și secvențe greșite de modificare a variabilelor. Chiar dacă funcțiile au protecție, alte funcții, precum „burnAccount”, pot fi totuși exploatate.

Atacuri notabile:

  • Rari Capital (2021): A pierdut aproximativ 10 milioane de dolari (~2600 ETH) în mai puțin de o oră.
  • ValueDefi (2021): A pierdut 5345,314 WBNB din cauza unor calcule invalide ale cotelor, care se bazau pe date externe.

Reentrancy doar în citire:

Read-only reentrancy exploatează o funcție care, deși nu modifică starea contractului, poate produce totuși rezultate eronate când starea nu este consecventă.

Atacuri notabile:

  • QuickSwap (2022): Atacatorii au folosit abuziv un flash loan pentru a modifica prețul spot al activului, sustrăgând 138 ETH și 700 de tokenuri MATIC. Acest lucru a fost posibil din cauza unei vulnerabilități în oracolul Curve LP.
  • dForce (2023): O vulnerabilitate de read-only reentrancy se afla în codul care accesa oracolele de preț pe lanțurile Arbitrum și Optimism cu Curve Finance.
  • Sentimente (2023): Un atac care a exploatat o vulnerabilitate de read-only reentrancy a dus la o sustragere de 1 milion de dolari. Din fericire, 90% a fost returnat de făptuitor.
  • Sturdy (2023): S-au pierdut aproximativ 442 ETH din cauza problemei de reentranță read-only a Balancer, unde prețul B-stETH-STABLE a fost manipulat.

Prevenirea vulnerabilității de reentranță:

  1. Respectați întotdeauna modelul check-effect-interaction.
  2. Folosiți protecție împotriva reentrării pentru toate operațiunile sensibile.
  3. Gestionați cu atenție fiecare apel extern.

Depășire de întreg:

Când calculele depășesc limitele, apare depășirea, ducând adesea la valori fie minuscule, fie uriașe.

Atacuri ilustrative:

  • BeautyChain (2018): Atacatorii au obținut 10^58 BEC-uri printr-un overflow de întreg, vânzându-le pentru o sumă uluitoare de 900 de milioane de dolari.
  • Poolz (2023): A dus la o pierdere de aproximativ 665.000 de dolari pe lanțurile Ethereum, Binance și Polygon.

Contramăsuri pentru overflow de întreg:

  1. Utilizați metode de calcul sigure precum biblioteca safeMath.
  2. Prioritizați verificarea limitelor pentru a vă asigura că rezultatele rămân în interval.
  3. Adoptă versiunea 0.8.0 sau o versiune ulterioară a compilatorului Solidity pentru detectarea integrată a depășirii.

Controlul accesului:
Vulnerabilitățile de control al accesului apar din lipsa unor restricții stricte de acces asupra funcțiilor care gestionează operațiuni cruciale.

  • Atacuri proeminente:
  • DAOMaker (2021): Aproximativ 4 milioane de dolari au fost deturnați după ce init funcția a rămas vulnerabilă.
  • GymNetwork (2022): Exploitatorii au exploatat o neglijență de autentificare în depositFromOtherContract(), facilitând majorarea ilicită a soldului fără nicio plată reală. Pierderea? Aproximativ 2,475.91 WBNB.
  • Tempdao (2023): O abordare laxă a controlului accesului pentru funcția migrateStake a dus la o pierdere ce depășește 2.34 milioane USD.

Vulnerabilitate de control al accesului

  • Descriere: Vulnerabilități care apar din cauza mecanismelor de restricționare inadecvate ce guvernează accesul și privilegiile pentru operațiuni specifice într-un sistem.

Măsuri de prevenire:

  1. Verificare strictă a permisiunilor: Aplicați întotdeauna protocoale stricte de permisiuni pentru funcții, în special pentru cele care gestionează operațiuni sensibile.
  2. Mecanism cu semnătură multiplă: Pentru activitățile care necesită decizii comune, utilizați protocoale cu semnătură multiplă care necesită mai multe aprobări înainte de executarea operațiunilor sensibile.

Vectori de atac comuni

  • Descriere: Diverse metode sau canale prin care atacatorii exploatează vulnerabilități într-un sistem, în principal în contracte inteligente.

Exemple notabile:

  • Atacuri FlashLoan: Exploatează funcția de împrumut instantaneu a sistemelor de finanțe descentralizate pentru a executa activități malițioase.
  • Front-Running: Atacatorii află despre o tranzacție în așteptare a altui utilizator și acționează pe baza ei oferind un comision de gas mai mare.

Atac FlashLoan

  • Descriere: Deși nu este în sine un atac, FlashLoan este o funcționalitate DeFi care le permite utilizatorilor să împrumute sume substanțiale instantaneu, fără garanții. A fost exploatată din cauza unor deficiențe logice în interacțiunile și relațiile dintre contracte.

Atacuri notabile:

  1. Harves Finance (2020.10.26): A dus la o pierdere de 38 de milioane de dolari.
  2. InverseFinance (2022.6.16): A dus la o pierdere de 53,2445 WBTC și 99.976,29 USDT.
  3. NewFreeDAO (2022.9.8): S-au drenat 4.481 WBNB, echivalentul a aproximativ 1,25 milioane $.
  4. Lodestar (2022.12.11): Exploatat prin manipularea prețului oracle.
  5. 0vix (2023.4.28): A dus la o pierdere de 2 milioane $ pe lanțul Polygon.

Recomandări de prevenire:

  1. Recunoașteți caracteristicile Flashloan în timpul dezvoltării proiectului.
  2. Pentru o determinare precisă a prețului, utilizați media ponderată în timp sau mai multe oracole.

Front-running

  • Descriere: Un atacator află despre tranzacția altui utilizator din memPool și profită de acest lucru oferind un comision de gas mai mare.

Atacuri notabile:

  1. Sushi Badger Digg (2021.1.25): A dus la o pierdere de 81.68 ETH.
  2. Pool-ul Sushiswap Ape-ETH (2022.5.17): Atacatorul a obținut un profit de aproximativ 0.3 ETH.
  3. Uniswap (2023.4.2): a cauzat o pierdere de aproximativ 25 de milioane de dolari printr-un atac sandwich.

Recomandări de prevenire:

  1. Folosește protecția împotriva slippage-ului la tranzacționare.
  2. Execută tranzacții în afara orelor de vârf, mai ales pe piețele volatile.
  3. Folosește FlashBot rpc de la 1inch pentru a trimite tranzacții direct minerilor, ocolind astfel memPool-ul.

Rezumat

Felicitări! Ai finalizat Modulul 2 - Vulnerabilități ale contractelor inteligente: o analiză aprofundată a atacurilor de reentrancy și a exploit-urilor comune

Să recapitulăm ce ai învățat:

Vulnerabilități de reentranță - Atacatorii exploatează lacune, reintrând în funcții înainte ca acestea să se finalizeze complet.

  • Reentranță într-o singură funcție: Un contract rău intenționat reintră într-o funcție din alt contract.
  • Reentranță între funcții: Stările partajate între funcții diferite sunt exploatate din cauza protecției slabe împotriva reintrării.
  • Reentranță între contracte: Exploatează stările partajate între contracte diferite.
  • Reentranță în regim doar-citire: Exploatează o funcție care produce rezultate eronate când starea nu este consecventă.

Depășire de întreg - Calcule care depășesc limitele stabilite, rezultând valori extreme.

Vulnerabilități de control al accesului - Apar din lipsa unor restricții stricte de acces asupra funcțiilor esențiale.

Vectori de atac comuni - Metode prin care atacatorii exploatează vulnerabilitățile sistemului.

**FlashLoan Attack **- O funcționalitate DeFi care permite împrumuturi mari instantanee fără garanții, dar este exploatată din cauza unor defecte logice.

Atac de tip front-running- Atacatorii află despre tranzacțiile în așteptare și profită oferind taxe de gas mai mari.

Acest articol vă este oferit de:

Rezumat — ilustrație