Analise smart-contract
12.04.2024

Opis detektorja proxy

Daljujemo serijo člankov, namenjenih opisu goljufivih shem v pametnih pogodbah. Danes bomo govorili o pametnih pogodbah s funkcijo proxy nadzora (Proxy).

Proxy pametne pogodbe so zaradi svoje posodobljivosti in prilagodljivosti postale priljubljene na področju veriženja blokov. Vendar pa takšne pogodbe prinašajo tudi veliko nevarnost, zlasti če jih uporabljajo zlonamerni uporabniki. Goljufi pogosto uporabljajo zavajajoče sheme v posredniških pametnih pogodbah, da bi ogoljufali uporabnike. Za prepoznavanje takšnih nevarnosti morate razumeti možna tveganja in biti tehnično podkovani.

Poglejmo si podrobneje opis možnih nevarnosti, pogoste goljufive sheme in kako prepoznati takšne nevarnosti v posredniških pametnih pogodbah.

Nevarnosti posredniških pametnih pogodb:

  1. Nepooblaščena posodobitev:
    Posredniške pogodbe omogočajo lastniku, da posodobi osnovno pogodbo. Če pa ta mehanizem ni varno izveden, lahko privede do nepooblaščenih posodobitev, kar napadalcem omogoča, da v pogodbo vnesejo zlonamerno kodo.

  2. Nepreverjeni zunanji klici:
    Nepošteni programerji lahko uporabljajo zunanje klice v nezaupanja vredne pogodbe brez ustreznega preverjanja. To lahko privede do ranljivosti, vključno z napadi na ponovitev, pri katerih zlonamerne pogodbe večkrat pokličejo posredniško pogodbo, kar lahko izčrpa njena sredstva.

  3. Nepreglednost:
    Izvorna koda pogodbe o upravljanju običajno ni preverjena.

  4. Fake projekti:
    Goljufi ustvarijo lažne projekte, ki obljubljajo privlačne lastnosti, kot so visoki donosi ali edinstvena funkcionalnost. Za ustvarjanje videza zakonitosti lahko uporabijo posredniške pogodbe, pri čemer prikrijejo zlonamerne namene.

  5. Ponzijeve sheme:
    Goljufi na podlagi posredniških pogodb oblikujejo Ponzijeve sheme in uporabnike privabijo z obljubami o visokih donosih. Takšne sheme imajo lahko posodobljive komponente, da ohranijo iluzijo verodostojnosti.

  6. Klonirane pogodbe:
    Goljufi klonirajo zakonite projekte in v klonirano pogodbo vnesejo ranljivosti ali spremembe. Nič hudega sluteči uporabniki lahko komunicirajo s takšnimi kloni in jih zamenjajo za izvirnik.

Kako lahko samostojno ugotovite, ali so v pametnih pogodbah prisotne takšne grožnje?

Vredno je omeniti, da če ciljna koda pametne pogodbe vsebuje sklic na zunanjo pogodbo (Proxy), potem bo v skoraj 100 % primerov ta pogodba Proxy s skrito izvorno kodo. V tem primeru lahko zunanja nadzorna pogodba s ciljno pogodbo izvede popolnoma vsa dejanja (na primer: spreminjanje uporabniških stanj, omogočanje in onemogočanje trgovanja, zagon emisije itd.).

Tudi velja razumeti, da je delo s pametno pogodbo Proxy igra rulete v pravem pomenu besede (igralnica vedno zmaga).

Izvedbo pogodbe Proxy v pametni pogodbi je dovolj enostavno najti. In kot smo že povedali, se zlonamerne funkcije izvajajo v nadzorni pogodbi - pri čemer je ciljna pametna pogodba videti "bela in puhasta" (tj. na splošno nima nobenih metod, ki bi lahko vzbudile sum).

Če želite sami ugotoviti, ali so v pametnih pogodbah prisotne funkcije Proxy, vam bodo v pomoč naslednji nasveti.

  • Izvedite revizijo pogodbe: Preden začnete delati s katero koli pametno pogodbo, preglejte njeno izvorno kodo in funkcionalnost. Bodite pozorni na obstoj dobro dokumentiranih postopkov posodabljanja, mehanizmov za nadzor dostopa in preglednost projekta.

  • Preverite, ali je pametna pogodba opravila zunanjo varnostno revizijo s strani uglednih podjetij. Revizijsko poročilo lahko zagotovi vpogled v morebitne ranljivosti.

  • Preučite razvojno ekipo projekta. Pri preglednih in zaupanja vrednih ekipah je manj verjetno, da bodo sodelovale pri goljufijah.

  • Posvetujte se s skupnostjo projekta in pridobite povratne informacije drugih uporabnikov, ki imajo izkušnje s pogodbo. Prevaranti se pogosto izogibajo javni razpravi.

  • Pri delu s pogodbami uporabljajte znane programe in orodja za denarnice, ki zagotavljajo dodatne varnostne funkcije in zaščito transakcij.

  • Bodite previdni pri delu z novimi in nepreverjenimi pogodbami, zlasti tistimi, ki obljubljajo visoke donose ali kažejo nenavadno vedenje.

  • Če se zdi nekaj v pogodbi preveč dobro, da bi bilo resnično, ali je sumljivo, zaupajte svoji intuiciji in se ji izognite.

  • Sprejemajte najnovejše dogodke v naši skupnosti (kanal Telegram) in najboljše prakse za odkrivanje prevar (naš blog in kanal YouTube).

Varnostni skener podjetja Lotus Market najde vse običajne (tudi skrite) funkcije zunanjega nadzora (Proxy). Uporabite našo premijsko naročnino in zaščitite svoja sredstva pred grožnjami.


V nadaljevanju so navedeni primeri običajnih rdečih zastavic in sumljivih vzorcev, ki jih morate iskati pri pregledovanju pametnih pogodb, da bi prepoznali potencialno zlonamerne funkcije. Pomembno je, da te znake razumete in tako zaščitite sebe in druge pred morebitnimi goljufijami. Oglejmo si nekaj različic vzorcev kode in nasvetov, ki vam bodo pomagali prepoznati sumljivo funkcionalnost v pametni pogodbi:

Glavno pravilo je, da če koda pogodbe vsebuje klic funkcije Call, CallCode ali DelegateCall, to pomeni, da pogodba kliče zunanjo kodo in ji preda nadzor nad svojimi podatki.

tips around proxy

Poglejmo si glavne primere uporabe pogodb Proxy.

1. Neinicializirane spremenljivke shranjevanja.

Ena najpogostejših ranljivosti v pogodbah proxy je napačna uporaba spremenljivk shranjevanja. Ko se pogodba pooblaščenca uporablja s funkcijo DelegateCall za klic funkcij na pogodbi za izvajanje, se spremenijo spremenljivke shranjevanja pogodbe pooblaščenca. Če pa ima shramba pogodbe pooblaščenca neinicializirane vrednosti ali privzete vrednosti, lahko to povzroči nepričakovano obnašanje.


  contract Implementation {
    address public owner;

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

V tem primeru, če je spremenljivka owner v pogodbi proxy neinicializirana, bo klic owner() na pogodbi proxy vrnil spremenljivko owner pogodbe implementation, kar morda ni tisto, kar uporabnik pričakuje.

2. Nepreverjeni zunanji klici.

Zlonamerne pogodbe lahko uporabljajo zunanje klice nezaupljivih pogodb brez ustreznega preverjanja. Če pooblaščena pogodba neposredno ali posredno pokliče zlonamerno pogodbo prek klica DelegateCall, lahko zlonamerna pogodba brez ustreznih zaščitnih ukrepov izvede poljubna dejanja, vključno z napadi s ponovnim vračanjem.


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

Če uporabnik pošlje poljubno pogodbo in zlonamerne podatke kot ciljni naslov, se lahko v njegovem imenu izvedejo nepooblaščena dejanja.

3. Neustrezen nadzor dostopa.

Zlonamerne pogodbe imajo lahko neustrezen nadzor dostopa, kar nepooblaščenim uporabnikom omogoča izvajanje upravnih funkcij. Pri uporabi posredniške pogodbe je treba skrbno nadzorovati, kdo ima dovoljenje za posodabljanje izvedbene pogodbe. Če tega ne storite, lahko pride do nepooblaščenih sprememb obnašanja pogodbe.


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

V tem primeru, če naslov lastnika ni ustrezno nadzorovan ali če ni preverjanja, kdo lahko kliče funkcijo posodobitve, lahko nepooblaščene osebe spremenijo izvajanje v zlonamerno pogodbo.

4. Tveganja glede različic in upravljanja.

Procesne pogodbe pogosto uporabljajo mehanizme različic in upravljanja za posodobitev logike pogodbe. Če ti mehanizmi niso varno izvedeni, lahko postanejo ranljivi za napade ali manipulacije zlonamernih strank.


  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;
    }
}

V tem primeru lahko napadalec ponudi novo "čisto" pogodbo in nato takoj izvede posodobitve, s čimer dejansko začne delovati njegova zlonamerna koda.

tips around proxy

Na kaj moram biti pozoren pri proučevanju pogodb proxy in kakšne grožnje predstavljajo?

  1. Nepooblaščen prenos sredstev:
    Eden najpogostejših načinov, kako goljufi ukradejo denar, je, da imetnik pogodbe brez dovoljenja prenese sredstva nase ali na drug naslov.

  2. Skrita "zadnja vrata":
    Goljufivci lahko zlonamerno kodo skrijejo za zakritimi ali zavajajočimi imeni funkcij, zaradi česar uporabniki težko odkrijejo njihove prave namene. Nejasna ali zavajajoča imena funkcij. Pogojni operatorji, ki določenim naslovom dodeljujejo posebne privilegije.

  3. Fake žetoni in izmenjave:
    Prevaranti pogosto ustvarijo lažne žetone ali lažne platforme za izmenjavo, da bi uporabnike prevarali, da prenesejo svoja sredstva na zlonamerno pogodbo. Bodite pozorni na pogodbe s žetoni, katerih obnašanje je sumljivo, na primer kovanje neomejenega števila žetonov ali sprejemanje nepooblaščenih prenosov.

  4. Nepooblaščene funkcije izdajanja ali prenosa lastništva:
    Zunanja pogodba lahko spremeni imetnika žetona ali sproži novo izdajo, kar povzroči inflacijo cene.

  5. Zavajajoča dokumentacija ali komentarji, ki niso skladni z vedenjem kode:
    Prevaranti lahko v svoji kodi zagotovijo zavajajočo ali netočno dokumentacijo ali komentarje, s čimer uporabnike zavedejo glede resničnega delovanja pogodbe. Dokumentacijo vedno navzkrižno preverite z dejanskim obnašanjem kode.

  6. Poslednje preverjanje varnosti:
    Bodite pozorni na pogodbe, ki nimajo ustreznih varnostnih pregledov, nadzora dostopa ali ne izvajajo zaščite pred pogostimi ranljivostmi, kot je na primer reentrantnost. Ko razmišljate o pametni pogodbi, vedno natančno preglejte kodo, poiščite dobro dokumentirane in pregledne zasnove, preverite zunanje varnostne revizije in preučite povratne informacije skupnosti. Poleg tega bodite previdni pri interakciji s pogodbami, ki imajo katero koli od teh lastnosti, saj so lahko zasnovane za krajo sredstev ali izvajanje drugih zlonamernih dejavnosti.

  7. Zloženi pogojni izrazi:
    Goljufi lahko uporabljajo zapletene pogojne izraze ali logiko, ki ji je težko slediti, zaradi česar je težko razumeti pravo funkcionalnost pogodbe. Poiščite nepotrebno zapleteno kodo: preveč zapleteno ali nejasno logiko ter pogoje, ki niso pomembni za namen pogodbe.

  8. Nejasni vzorci upravljanja in lastništva (Lastništvo):
    Goljufi pogosto uporabljajo posredniške pogodbe z nejasnimi mehanizmi upravljanja ali skritimi lastniškimi strukturami, zaradi česar uporabniki težko določijo, kdo nadzoruje pogodbo.

  9. Odkrivanje znanih projektov:
    Prevaranti pogosto ustvarijo pogodbe, ki posnemajo funkcionalnost ali videz znanih, zakonitih projektov. Vedno preverite pristnost projekta in se prepričajte, da ne gre za ponaredek. Bodite pozorni na manjše razlike v imenih, logotipih ali blagovnih znamkah. Projekti, ki trdijo, da so uradni, vendar nimajo ustrezne potrditve.

  10. Hitra ali anonimna namestitev:
    Goljufi lahko pogodbe nameščajo na hitro, brez jasne identifikacije in z minimalnimi informacijami o projektu ali njegovih razvijalcih. Bodite pozorni na pogodbe, ki so bile razporejene brez potrebne skrbnosti in načrtovanja ter jih je objavila neznana ekipa.

  11. Neobstoj javnega preverjanja ali revizije:
    Če pogodba ne ponuja javnega pregleda izvorne kode ali ni bila podvržena varnostni reviziji tretje osebe, morate k njej pristopiti zelo previdno.

  12. Neobičajno ali skrito shranjevanje podatkov:
    Goljufi lahko uporabljajo neobičajne ali skrite sheme shranjevanja podatkov, da prikrijejo zlonamerne funkcije. Upoštevajte, da so lahko podatki shranjeni na nepričakovanih mestih v pogodbi.

  13. Ponarejeni likvidnostni skladi:
    Pri projektih DeFi bodite previdni pri likvidnostnih bazenih, ki obljubljajo visoke donose. Goljufi lahko ustvarijo ponarejene poole, da bi pritegnili likvidnost, nato pa izkoriščajo uporabnike. Nedosledno visoki prihodki od zagotavljanja likvidnosti. Pomanjkanje preglednosti in dokumentacije o mehanizmu delovanja sklada.

tips around proxy

Za zaščito pred takimi ranljivostmi je treba pogodbe, ki uporabljajo predloge za pooblaščanje in delegateCall, skrbno pregledati in revidirati, izvajati mehanizme za nadzor dostopa in zavarovati zunanje klice. Uporabniki morajo biti previdni pri interakciji s pogodbami, zlasti tistimi s kompleksnimi mehanizmi posodabljanja, in morajo pred interakcijo s pametno pogodbo v verigi blokov vedno opraviti skrbni pregled.

V hitro razvijajočem se svetu verige blokov je nujno, da ostanete pozorni in obveščeni ter tako zaščitite sebe in svoje premoženje pred morebitnimi goljufivimi shemami in ranljivostmi, povezanimi s posredniškimi pogodbami in funkcijami DelegateCall.


Doufamo, da so vam te informacije pomagale bolje razumeti sheme upravljanih (proxy) pametnih pogodb.


Ker so vse informacije v verigi blokov odprte (seveda pod pogojem, da je izvorna koda pogodbe preverjena), lahko oboroženi s tem znanjem samostojno preučite pametne pogodbe in prepoznate različne goljufive sheme.

Vse to smo za vas že storili! Prijavite se na premijsko naročnino in pridobite dostop do ekskluzivnih filtrov o funkcijah pametnih pogodb in sveže analitike. Povečajte svoje možnosti za uspešno vlaganje v donosne žetone.

S spoštovanjem, ekipa Lotus Market.

All posts

Connect to a wallet

Metamask