Analise smart-contract
12.04.2024

Proxy detektor leírása

Folytatjuk az okosszerződések csalárd sémáinak leírásával foglalkozó cikksorozatot. Ma a proxy-ellenőrzés (Proxy) funkcióval rendelkező okosszerződésekről lesz szó.

A proxy okosszerződések modernizálhatóságuk és rugalmasságuk miatt egyre népszerűbbek a blokklánc területén. Az ilyen szerződések azonban nagy veszélyt is hordoznak magukban, különösen, ha rosszindulatú felhasználók használják őket. A csalók gyakran használnak megtévesztő sémákat a proxy-okos szerződésekben, hogy becsapják a felhasználókat. Az ilyen veszélyek felismeréséhez meg kell értenie a lehetséges kockázatokat, és műszaki ismeretekkel kell rendelkeznie.

Nézzük meg közelebbről a lehetséges veszélyek leírását, a gyakori megtévesztő sémákat, és azt, hogyan ismerheti fel ezeket a veszélyeket a proxy-okosszerződésekben.

A proxy-okosszerződések veszélyei:

  1. A jogosulatlan frissítés:
    A proxy szerződések lehetővé teszik, hogy a tulajdonos frissítse a mögöttes szerződést. Ha azonban ez a mechanizmus nincs biztonságosan implementálva, akkor jogosulatlan frissítésekhez vezethet, ami lehetővé teszi a támadók számára, hogy rosszindulatú kódot juttassanak a szerződésbe.

  2. El nem ellenőrzött külső hívások:
    A csaló programozók megfelelő ellenőrzés nélkül használhatnak külső hívásokat nem megbízható szerződésekhez. Ez sebezhetőségekhez vezethet, beleértve a reentrancia-támadásokat, ahol a rosszindulatú szerződések ismételten hívnak egy proxy-szerződést, ami kimerítheti annak pénzeszközeit.

  3. Az átláthatóság hiánya:
    A kezelési szerződés forráskódját általában nem ellenőrzik.

  4. Hamis projektek:
    A csalók hamis projekteket hoznak létre, amelyek vonzó tulajdonságokat ígérnek, például magas hozamot vagy egyedi funkciókat. Használhatnak proxy szerződéseket, hogy a törvényesség látszatát keltsék, miközben elrejtik a rosszindulatú szándékot.

  5. Ponzi-sémák:
    A csalók proxy-szerződésekre épülő Ponzi-rendszereket építenek, magas hozam ígéretével csalogatva a felhasználókat. Az ilyen rendszerek frissíthető komponensekkel rendelkezhetnek, hogy fenntartsák a hihetőség illúzióját.

  6. Klónozott szerződések:
    A csalók törvényes projekteket klónoznak, és a klónozott szerződésbe sebezhetőségeket vagy módosításokat visznek be. A gyanútlan felhasználók interakcióba léphetnek az ilyen klónokkal, összetévesztve azokat az eredetivel.

Hogyan lehet önállóan megállapítani, hogy az okosszerződésekben jelen vannak-e ilyen fenyegetések?

Az okosszerződés célkódja egy külső szerződésre (Proxy) való hivatkozást tartalmaz, akkor ez a Proxy-szerződés az esetek majdnem 100%-ában rejtett forráskóddal rendelkezik. Ebben az esetben a külső vezérlő szerződés abszolút bármilyen műveletet elvégezhet a célszerződéssel (például: felhasználói egyenlegek módosítása, kereskedés engedélyezése és letiltása, kibocsátás indítása stb.).

Ezért érdemes megérteni, hogy a Proxy okosszerződéssel való munka a szó legszorosabb értelmében vett rulettjáték (mindig a kaszinó nyer).

A Proxy meghívások megtalálása egy okosszerződésben elég egyszerű. És ahogy korábban említettük, a rosszindulatú funkciók implementálása a vezérlőszerződésben történik - a célzott okosszerződés pedig "fehérnek és bolyhosnak" tűnik (azaz általában mentes minden olyan módszertől, amely gyanút kelthet).

Ha saját maga szeretné megállapítani, hogy a Proxy funkciók jelen vannak-e az okosszerződésekben, a következő tippek hasznosak lehetnek.

  • Végezzen szerződésauditot: Mielőtt bármilyen okosszerződéssel dolgozna, vizsgálja át annak forráskódját és funkcionalitását. Fordítson figyelmet a jól dokumentált frissítési folyamatok, a hozzáférés-ellenőrzési mechanizmusok és a projekt átláthatóságának meglétére.

  • Győződjön meg arról, hogy az okosszerződés neves cégek által végzett külső biztonsági auditáláson esett át. Az auditjelentés betekintést nyújthat a lehetséges sebezhetőségekbe.

  • Kutassa át a projektfejlesztő csapatot. Az átlátható és megbízható csapatok kisebb valószínűséggel követnek el csalást.

  • Kérdezze meg a projekt közösségét, és szerezzen visszajelzést más felhasználóktól, akiknek van tapasztalatuk a szerződéssel kapcsolatban. A csalók gyakran kerülik a nyilvános vitát.

  • A szerződésekkel való munka során használjon jól ismert pénztárcaprogramokat és eszközöket, amelyek további biztonsági és tranzakcióvédelmi funkciókat biztosítanak.

  • Legyen óvatos, ha új és nem bizonyított szerződésekkel dolgozik, különösen azokkal, amelyek magas hozamot ígérnek vagy szokatlan viselkedést mutatnak.

  • Ha valami a szerződésben túl szépnek tűnik ahhoz, hogy igaz legyen, vagy gyanús, bízzon az intuíciójában, és kerülje el.

  • Tartsd magad naprakészen a közösségünk legújabb fejleményeiről (Telegram-csatorna) és a csalások felderítésének legjobb gyakorlatairól (blogunk és YouTube-csatornánk).

A Lotus Market biztonsági szkennere minden gyakori (beleértve a rejtett) külső vezérlő (Proxy) funkciót megtalál. Használja prémium előfizetésünket, és védje meg pénzeszközeit a fenyegetésektől.


A következőkben példákat találunk a gyakori piros zászlókra és gyanús mintákra, amelyeket az intelligens szerződések vizsgálatakor érdemes keresni a potenciálisan rosszindulatú funkciók azonosítása érdekében. Fontos, hogy megértse ezeket a jeleket, hogy megvédje magát és másokat a potenciális csalástól. Nézzünk meg néhány kódminta-variációt és tippet, amelyek segítenek azonosítani a gyanús funkciókat egy okosszerződésben:

A fő szabály az, hogy ha egy szerződés kódja Call, CallCode vagy DelegateCall funkciók hívását tartalmazza, az azt jelenti, hogy a szerződés külső kódot hív, és átadja neki az adatok feletti ellenőrzést.

tips around proxy

Nézzük meg a proxy szerződések használatának főbb példáit.

1. Nem inicializált tárolási változók.

A proxy-szerződések egyik leggyakoribb sebezhetőségét a tárolási változókkal való visszaélés jelenti. Amikor egy proxy-szerződést a DelegateCall segítségével egy implementációs szerződés függvényeinek hívására használnak, a proxy-szerződés tárolási változói módosulnak. Ha azonban a proxy-szerződés tárolója inicializálatlan értékeket vagy alapértelmezett értékeket tartalmaz, ez váratlan viselkedéshez vezethet.


    contract Implementation {
      address public owner;

      constructor() {
          owner = msg.sender;
      }
  }

Ebben a példában, ha a proxy szerződés owner változója nem inicializált, a proxy szerződés owner() hívása a végrehajtási szerződés owner változóját adja vissza, ami nem biztos, hogy az, amire a felhasználó számít.

2. Ellenőrizetlen külső hívások.

A csalárd szerződések megfelelő ellenőrzések nélkül használhatnak külső hívásokat nem megbízható szerződésekhez. Ha egy proxy-szerződés közvetlenül vagy közvetve meghív egy rosszindulatú szerződést a DelegateCall-on keresztül, a rosszindulatú szerződés megfelelő biztosítékok nélkül tetszőleges műveleteket hajthat végre, beleértve a reentrancia-támadásokat is.


    contract Proxy {
      function execute(address target, bytes memory data) external {
          target.delegatecall(data);
      }
  }

Ha egy felhasználó egy tetszőleges szerződést és rosszindulatú adatokat küld célcímként, az a felhasználó nevében jogosulatlan műveletek végrehajtását eredményezheti.

3. Nem megfelelő hozzáférés-ellenőrzés.

A csalárd szerződések nem megfelelő hozzáférés-ellenőrzéssel rendelkezhetnek, ami lehetővé teszi, hogy jogosulatlan felhasználók adminisztrációs funkciókat hajtsanak végre. Ha proxy-szerződést használunk, gondosan ellenőrizni kell, hogy kinek van jogosultsága a végrehajtási szerződés frissítésére. Ennek elmulasztása a szerződés viselkedésének jogosulatlan megváltoztatását eredményezheti.


    contract Proxy {
      address public owner;
      address public implementation;
                                      
      function upgrade(address newImplementation) external {
          require(msg.sender == owner, "Only the owner can upgrade.");
          implementation = newImplementation;
      }
  }

Ebben a példában, ha a tulajdonosi cím nincs megfelelően ellenőrizve, vagy nincs ellenőrzés arra vonatkozóan, hogy ki hívhatja meg a frissítési függvényt, az illetéktelen felek megváltoztathatják az implementációt egy rosszindulatú szerződésre.

4. A verziókezelés és a kezelés kockázatai.

A proxy-szerződések gyakran használnak verziókezelési és kezelési mechanizmusokat a szerződés logikájának frissítésére. Ha ezeket a mechanizmusokat nem biztonságosan valósítják meg, akkor sebezhetővé válhatnak a rosszindulatú felek támadásával vagy manipulációjával szemben.


    contract Proxy {
      address public owner;
      address public implementation;
      address public pendingImplementation;
          
      function upgrade(address newImplementation) external {
          require(msg.sender == owner, "Only the owner can upgrade.");
          pendingImplementation = newImplementation;
      }
      function claimUpgrade() external {
          require(msg.sender == owner, "Only the owner can claim the upgrade.");
          implementation = pendingImplementation;
      }
  }

Ez esetben a támadó felajánlhat egy új, "tiszta" szerződést, majd azonnal frissítéseket végezhet, és ezzel gyakorlatilag működésbe hozhatja a rosszindulatú kódját.

tips around proxy

Mire kell figyelni a proxy szerződések tanulmányozása során, és milyen veszélyeket rejtenek magukban?

  1. A pénzeszközök jogosulatlan átutalása:
    A csalók egyik leggyakoribb módja a pénz ellopásának az, hogy a szerződéstulajdonos saját magának vagy egy másik címre utalja át a pénzeszközöket engedély nélkül.

  2. Rejtett "hátsó ajtók":
    A csalók rosszindulatú kódot rejthetnek elfedett vagy félrevezető funkciónevek mögé, megnehezítve ezzel a felhasználók számára a valódi szándékaik felismerését. Nem egyértelmű vagy félrevezető funkciónevek. Feltételes operátorok, amelyek különleges jogosultságokat biztosítanak bizonyos címeknek.

  3. Hamis tokenek és cserék:
    A csalók gyakran hoznak létre hamis tokeneket vagy hamis csereplatformokat, hogy becsapják a felhasználókat, hogy átutalják vagyonukat egy rosszindulatú szerződésbe. Figyeljen azokra a tokenszerződésekre, amelyek viselkedése gyanús, például korlátlan számú tokenek verése vagy jogosulatlan átutalások elfogadása.

  4. Hivatalos kibocsátási vagy tulajdonjog-átruházási funkciók:
    Egy külső szerződés megváltoztathatja a token tulajdonosát vagy új kibocsátást indíthat el, ami árinflációt okozhat.

  5. Megtévesztő dokumentáció vagy a kód viselkedésével összeegyeztethetetlen megjegyzések:
    A csalók félrevezető vagy pontatlan dokumentációt vagy megjegyzéseket adhatnak meg a kódjukban, hogy megtévesszék a felhasználókat a szerződés valódi működésével kapcsolatban. Mindig ellenőrizzük a dokumentációt a kód tényleges viselkedésével.

  6. A biztonsági ellenőrzések hiánya:
    Óvakodjon az olyan szerződésektől, amelyekből hiányoznak a megfelelő biztonsági ellenőrzések, hozzáférés-ellenőrzések, vagy nem valósítanak meg védelmet az olyan gyakori sebezhetőségek ellen, mint például a reentrancia. Amikor egy okos szerződést fontolgat, mindig vizsgálja meg a kódot, keressen jól dokumentált és átlátható terveket, ellenőrizze a külső biztonsági auditokat, és tanulmányozza a közösség visszajelzéseit. Emellett legyen óvatos, amikor olyan szerződésekkel lép kapcsolatba, amelyek az említett jellemzők bármelyikét mutatják, mivel lehet, hogy pénzeszközök ellopására vagy más rosszindulatú tevékenységek végrehajtására tervezték őket.

  7. Bonyolult feltételes kifejezések:
    A csalók összetett feltételes kifejezéseket vagy nehezen követhető logikát használhatnak, ami megnehezíti a szerződés valódi működésének megértését. Keresse a szükségtelenül bonyolult kódot: a túlságosan összetett vagy nem egyértelmű logikát, valamint a szerződés célja szempontjából irreleváns feltételeket.

  8. Az irányítás és a tulajdonlás (Ownership) nem egyértelmű mintái:
    A csalók gyakran használnak olyan proxy szerződéseket, amelyek irányítási mechanizmusai vagy rejtett tulajdonosi struktúrái nem egyértelműek, így a felhasználók számára nehéz meghatározni, hogy ki ellenőrzi a szerződést.

  9. Az ismert projektek elhallgatása:
    A csalók gyakran olyan szerződéseket hoznak létre, amelyek ismert, törvényes projektek működését vagy megjelenését utánozzák. Mindig ellenőrizze a projekt hitelességét, és győződjön meg róla, hogy nem hamisítványról van szó. Figyeljen a nevekben, logókban vagy márkajelzésekben lévő apró különbségekre. Olyan projektek, amelyek hivatalosnak mondják magukat, de hiányzik a megfelelő hitelesítés.

  10. Sietős vagy névtelen telepítés:
    A csalók a szerződéseket sietve, egyértelmű azonosítás nélkül és minimális információval a projektről vagy annak fejlesztőiről telepíthetik. Fordítson figyelmet a kellő körültekintés és tervezés nélkül telepített, ismeretlen csapat által kiadott szerződésekre.

  11. A nyilvános ellenőrzés vagy audit hiánya:
    Ha a szerződés nem kínál nyilvános forráskód-ellenőrzést, vagy nem esett át harmadik fél által végzett biztonsági auditon, akkor rendkívül óvatosan közelítsen hozzá.

  12. Szokatlan vagy rejtett adattárolás:
    A csalók szokatlan vagy lopakodó adattárolási sémákat használhatnak a rosszindulatú funkciók elrejtésére. Vegye figyelembe, hogy az adatokat a szerződésen belül váratlan helyeken tárolhatják.

  13. Hamis likviditási poolok:
    A DeFi projektek esetében óvakodjon a magas hozamot ígérő likviditási pooloktól. A csalók hamis poolokat hozhatnak létre, hogy likviditást vonzzanak, majd kihasználják a felhasználókat. A likviditás biztosításából származó, következetlenül magas bevételek. A pool működési mechanizmusának átláthatóságának és dokumentációjának hiánya.

tips around proxy

Az ilyen sebezhetőségek elleni védelem érdekében a proxy-sablonokat és a DelegateCallt használó szerződéseket gondosan felül kell vizsgálni és auditálni kell, hozzáférés-ellenőrzési mechanizmusokat kell bevezetni, és biztosítani kell a külső hívásokat. A felhasználóknak óvatosnak kell lenniük a szerződésekkel való interakció során, különösen azokkal, amelyek összetett frissítési mechanizmusokkal rendelkeznek, és mindig kellő körültekintéssel kell eljárniuk, mielőtt a blokkláncon egy okos szerződéssel interakcióba lépnek.

A blokklánc gyorsan fejlődő világában elengedhetetlen, hogy éberek és tájékozottak maradjunk, hogy megvédjük magunkat és eszközeinket a proxy-szerződésekkel és a DelegateCall funkciókkal kapcsolatos lehetséges csalárd rendszerektől és sebezhetőségektől.


Reméljük, hogy ez az információ segített Önnek jobban megérteni a menedzselt (Proxy) okosszerződések sémáit.


Mivel a blokkláncban minden információ nyílt (feltéve természetesen, hogy a szerződés forráskódja ellenőrzött), ezzel a tudással felvértezve önállóan tanulmányozhatja az okosszerződéseket és azonosíthatja a különböző átverési sémákat.

Mivel azonban már mindent megtettünk Önért! Iratkozzon fel prémium előfizetésre, és hozzáférhet az intelligens szerződések jellemzőire vonatkozó exkluzív szűrőkhöz és friss elemzésekhez. Növelje az esélyét, hogy sikeresen fektessen be nyereséges tokenekbe.

Regards, Lotus Market team.

All posts

Connect to a wallet

Metamask