Analise smart-contract
12.04.2024

Proxy detektori kirjeldus

Jätame artiklite sarja, mis on pühendatud nutilepingute pettuste kirjeldamisele. Täna räägime proxy kontrolli (Proxy) funktsiooniga nutilepingutest.

Proxy nutilepingud on plokiahela ruumis populaarsust kogunud tänu nende moderniseeritavusele ja paindlikkusele. Kuid sellised lepingud kätkevad endas ka suurt ohtu, eriti kui neid kasutavad pahatahtlikud kasutajad. Petturid kasutavad sageli kasutajate petmiseks proxy-intelligentsete lepingute pettusekavasid. Selliste ohtude tuvastamiseks peate mõistma võimalikke riske ja olema tehniliselt taibukas.

Lugem lähemalt võimalike ohtude kirjeldust, levinud pettuskeeme ja seda, kuidas selliseid ohte proxy-intellektilepingutes tuvastada.

Proxy-intellektilepingute ohud:

  1. Volitamata uuendus:
    Proxy lepingud võimaldavad omanikul uuendada aluseks olevat lepingut. Kui see mehhanism ei ole turvaliselt rakendatud, võib see viia volitamata uuendusteni, mis võimaldavad ründajatel lepingusse pahatahtlikku koodi süstida.

  2. Kontrollimata välised kutsungid:
    Pahatahtlikud programmeerijad võivad kasutada väliseid kutsungeid usaldamata lepingutele ilma nõuetekohase kontrollita. See võib viia haavatavusteni, sealhulgas uuesti sisenemise rünnakuteni, kus pahatahtlikud lepingud kutsuvad korduvalt esile proxy lepingut, mis võib selle rahalisi vahendeid ammendada.

  3. Läbipaistvuse puudumine:
    Juhtimislepingu lähtekoodi tavaliselt ei kontrollita.

  4. Võltsprojektid:
    Petturid loovad võltsprojekte, mis lubavad atraktiivseid funktsioone, nagu kõrged tulud või ainulaadsed funktsioonid. Nad võivad kasutada proxy lepinguid, et luua seaduslikkuse illusioon, varjates samal ajal pahatahtlikku kavatsust.

  5. Ponzi skeemid:
    Petturid loovad proxy lepingutel põhinevaid Ponzi skeeme, meelitades kasutajaid kõrgete tulude lubadustega. Sellistel skeemidel võib olla uuendatavad komponendid, et säilitada usutavuse illusioon.

  6. Kloonitud lepingud:
    Petturid kloonivad seaduslikke projekte ja lisavad kloonitud lepingule haavatavusi või muudatusi. Kahtlustamata kasutajad võivad selliste kloonidega suhelda, pidades neid originaaliks.

Kuidas saab iseseisvalt kindlaks teha, kas sellised ohud on nutilepingutes olemas?

Väärib märkimist, et kui nutilepingu sihtkood sisaldab viidet välisele lepingule (Proxy), siis peaaegu 100% juhtudel on see Proxy leping varjatud lähtekoodiga. Sellisel juhul saab väline kontrollleping teha sihtlepinguga absoluutselt mis tahes toiminguid (näiteks: kasutaja saldode muutmine, kauplemise lubamine ja keelamine, emissiooni käivitamine jne).

Sellest tulenevalt tasub mõista, et töö Proxy nutilepinguga on sõna otseses mõttes rulettmäng (kasiino võidab alati).

Proxy-kutsete leidmine nutilepingus on piisavalt lihtne. Ja nagu me juba ütlesime, on pahatahtlike funktsioonide rakendamine kontrolllepingus - kusjuures sihtotstarbeline nutileping paistab "valge ja kohev" (st selles ei ole üldiselt mingeid meetodeid, mis võiksid kahtlust äratada).

Kui soovite ise kindlaks teha, kas nutilepingutes on Proxy-funktsioonid olemas, on abiks järgmised näpunäited.

  • Valmista lepingu audit: Enne tööd mõne aruka lepinguga, vaadake läbi selle lähtekood ja funktsionaalsus. Pöörake tähelepanu hästi dokumenteeritud uuendamisprotsesside, juurdepääsukontrolli mehhanismide ja projekti läbipaistvuse olemasolule.

  • Kinnitage tähelepanu sellele, et nutileping on läbinud välise turvaauditi, mille on teinud mainekad ettevõtted. Auditiaruanne võib anda ülevaate võimalikest haavatavustest.

  • Uurige projekti arendusmeeskonda. Läbipaistvad ja usaldusväärsed meeskonnad tegelevad harvemini pettustega.

  • Konsulteerige projekti kogukonnaga ja hankige tagasisidet teistelt kasutajatelt, kellel on lepinguga kogemusi. Kelmid väldivad sageli avalikku arutelu.

  • Kasutage lepingutega töötades tuntud rahakottprogramme ja vahendeid, mis pakuvad täiendavaid turva- ja tehingukaitsefunktsioone.

  • Olge ettevaatlik, kui tegelete uute ja tõestamata lepingutega, eriti nendega, mis lubavad suurt tulu või näitavad ebatavalist käitumist.

  • Kui midagi lepingus tundub liiga hea, et olla tõsi või on kahtlane, usaldage oma intuitsiooni ja vältige seda.

  • Hoidke end kursis meie kogukonna viimaste arengutega (Telegrami kanal) ja pettuste avastamise parimate tavadega (meie blogi ja YouTube'i kanal).

Lotus Market'i turvaskanner leiab kõik levinud (sh varjatud) välise kontrolli (Proxy) funktsioonid. Kasutage meie premium-tellimust ja kaitske oma raha ohtude eest.


Järgnevalt on toodud näited tavalistest punastest lipukestest ja kahtlastest mustritest, mida peaksite otsima, kui uurite arukaid lepinguid, et tuvastada potentsiaalselt pahatahtlikku funktsionaalsust. Oluline on neid märke mõista, et kaitsta ennast ja teisi võimalike pettuste eest. Vaatleme mõningaid koodimustrite variante ja näpunäiteid, mis aitavad teil tuvastada kahtlast funktsionaalsust nutilepingus:

Peamine reegel on, et kui lepingu kood sisaldab Call-, CallCode- või DelegateCall-funktsioonide kutsumist, tähendab see, et leping kutsub välist koodi ja annab sellele kontrolli oma andmete üle.

tips around proxy

Vaatame üle peamised näited proxy lepingute kasutamisest.

1. Initsialiseerimata salvestusmuutujad.

Üksikontraktide üks levinumaid haavatavusi on salvestusmuutujate väärkasutamine. Kui proxy-lepingut kasutatakse koos DelegateCall'iga rakenduslepingu funktsioonide kutsumiseks, muudetakse proxy-lepingu salvestusmuutujaid. Kui aga proxy-lepingu salvestusvariantidel on initsialiseerimata väärtused või vaikeväärtused, võib see viia ootamatu käitumiseni.


  contract Implementation {
    address public owner;

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

Selles näites, kui proxy-lepingu owner-muutuja on initsialiseerimata, tagastab owner() kutsumine proxy-lepingul implementatsioonilepingu owner-muutuja, mis ei pruugi olla see, mida kasutaja ootab.

2. Kontrollimata väliskutsed.

Pettused võivad kasutada usaldamata lepingute väliskutseid ilma nõuetekohase kontrollita. Kui proxy leping kutsub otse või kaudselt pahatahtlikku lepingut DelegateCall'i kaudu, võib pahatahtlik leping ilma nõuetekohaste kaitsemeetmeteta sooritada suvalisi tegevusi, sealhulgas reentrancy rünnakuid.


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

Kui kasutaja saadab suvalise lepingu ja pahatahtlikud andmed sihtaadressina, võib see kaasa tuua kasutaja nimel volitamata toimingute sooritamise.

3. Ebakorrektne juurdepääsukontroll.

Pettuslike lepingute puhul võib olla ebasobiv juurdepääsukontroll, mis võimaldab volitamata kasutajatel täita haldusfunktsioone. Vahendamislepingu kasutamisel tuleks hoolikalt kontrollida, kellel on õigus rakenduslepingut uuendada. Kui seda ei tehta, võivad lepingu käitumist omavoliliselt muuta.

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

Selles näites, kui omaniku aadressi ei kontrollita korralikult või ei kontrollita, kes võib uuendamisfunktsiooni kutsuda, võivad volitamata isikud muuta rakendust pahatahtlikuks lepinguks.

4. Versioonimise ja haldamise riskid.

Proxy-lepingud kasutavad sageli lepingu loogika uuendamiseks versioonimis- ja haldusmehhanisme. Kui neid mehhanisme ei ole turvaliselt rakendatud, võivad need muutuda haavatavaks pahatahtlike osapoolte rünnaku või manipuleerimise suhtes.


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

Sellisel juhul saab ründaja pakkuda uut "puhast" lepingut ja seejärel teha kohe uuendusi, rakendades sisuliselt oma pahatahtliku koodi.

tips around proxy

Milleks peaksin proxy-lepinguid uurides tähelepanu pöörama ja milliseid ohte need kujutavad endast?

  1. Vahendite volitamata ülekandmine:
    Üks levinumaid viise, kuidas petturid raha varastavad, on raha ülekandmine lepinguomaniku poolt endale või teisele aadressile ilma loata.

  2. Peitletud "tagauksed":
    Petturid võivad peita pahatahtlikku koodi varjatud või eksitavate funktsiooninimetuste taha, mis muudab kasutajate jaoks nende tegelike kavatsuste tuvastamise keeruliseks. Ebaselged või eksitavad funktsiooninimed. Tingimuslikud operaatorid, mis annavad teatud aadressidele erilisi privileege.

  3. Võltsitud märgid ja vahetused:
    Kelmid loovad sageli võltsitud märgid või võltsitud vahetusplatvormid, et petta kasutajaid oma varade ülekandmiseks pahatahtlikule lepingule. Pöörake tähelepanu sümboolsetele lepingutele, mille käitumine on kahtlane, nagu näiteks piiramatu arvu sümboolsete müntide vermimine või volitamata ülekannete vastuvõtmine.

  4. Volitamata emissiooni või omandiõiguse ülekandmise funktsioonid:
    Väline leping võib muuta tokeni omanikku või käivitada uue emissiooni, põhjustades hinna inflatsiooni.

  5. Määratluslik dokumentatsioon või kommentaarid, mis ei ole kooskõlas koodi käitumisega:
    Petturid võivad oma koodis esitada eksitavat või ebatäpset dokumentatsiooni või kommentaare, et eksitada kasutajaid lepingu tegeliku funktsionaalsuse kohta. Kontrollige alati dokumentatsiooni ja koodi tegelikku käitumist.

  6. Kindluse kontrollimise puudumine:
    Hoiduge lepingutest, millel puuduvad nõuetekohased turvakontrollid, juurdepääsukontrollid või ei ole rakendatud kaitsemeetmeid levinud haavatavuste, näiteks reentrantsionaalsuse vastu. Kui kaalute arukat lepingut, kontrollige alati koodi, otsige hästi dokumenteeritud ja läbipaistvaid disainilahendusi, kontrollige väliseid turvaauditeid ja uurige kogukonna tagasisidet. Lisaks olge ettevaatlik, kui suhtlete lepingutega, millel on mõni neist omadustest, sest need võivad olla kavandatud raha varastamiseks või muude pahatahtlike tegevuste teostamiseks.

  7. Komplekssed tingimusavaldused:
    Petturid võivad kasutada keerulisi tingimusavaldusi või loogikat, mida on raske järgida, mistõttu on raske mõista lepingu tegelikku funktsionaalsust. Otsige tarbetult keerulist koodi: liiga keerulist või ebaselget loogikat ning lepingu eesmärgi seisukohast ebaolulisi tingimusi.

  8. Etäpne juhtimis- ja omandimudel (Ownership):
    Petturid kasutavad sageli ebaselgete juhtimismehhanismide või varjatud omandistruktuuridega asenduslepinguid, mistõttu on kasutajatel raske kindlaks teha, kes lepingut kontrollib.

  9. Tuntud projektide väljajätmine:
    Kelmid loovad sageli lepinguid, mis jäljendavad tuntud, seadusliku projekti funktsionaalsust või välimust. Kontrollige alati projekti ehtsust ja veenduge, et tegemist ei ole võltsinguga. Pöörake tähelepanu väikestele erinevustele nimedes, logodes või kaubamärgis. Projektid, mis väidavad end olevat ametlikud, kuid millel puudub nõuetekohane valideerimine.

  10. Kiire või anonüümne kasutuselevõtt:
    Petturid võivad lepinguid kasutusele võtta kiirustades, ilma selge identifitseerimiseta ja minimaalse teabega projekti või selle arendajate kohta. Pöörake tähelepanu lepingutele, mis on kasutusele võetud ilma nõuetekohase hoolsuse ja planeerimiseta, mille on välja andnud tundmatu meeskond.

  11. Pärase avaliku kontrolli või auditi puudumine:
    Kui leping ei paku avalikku lähtekoodi ülevaatust või ei ole läbinud kolmanda osapoole turvaauditit, peaksite sellesse suhtuma äärmiselt ettevaatlikult.

  12. Seotud või varjatud andmete säilitamine:
    Petturid võivad kasutada ebatraditsioonilisi või varjatud andmesalvestusskeeme, et varjata pahatahtlikku funktsionaalsust. Pange tähele, et andmeid võidakse salvestada lepingu sees ootamatutes kohtades.

  13. Võltsitud likviidsusbasseinid:
    DeFi-projektide puhul olge ettevaatlik likviidsuspuulide suhtes, mis lubavad suurt tootlust. Petturid võivad luua võltsitud basseinid, et meelitada ligi likviidsust ja seejärel kasutajaid ära kasutada. Likviidsuse pakkumisest saadav ebajärjekindlalt kõrge tulu. Pooli toimimismehhanismi läbipaistvuse ja dokumentatsiooni puudumine.

tips around proxy

Kaitseks selliste haavatavuste eest tuleks hoolikalt läbi vaadata ja auditeerida lepingud, milles kasutatakse proxy-malle ja DelegateCall, rakendada juurdepääsu kontrollimise mehhanisme ja kindlustada väliskutsed. Kasutajad peaksid lepingute, eriti keeruliste uuendamismehhanismidega lepingute puhul olema ettevaatlikud ning peaksid alati enne plokiahelas aruka lepinguga suhtlemist tegema nõuetekohast hoolt.

Selles kiiresti arenevas plokiahela maailmas on hädavajalik jääda valvsaks ja teadlikuks, et kaitsta end ja oma vara võimalike pettuslike skeemide ja haavatavuste eest, mis on seotud proxy-lepingute ja DelegateCall-funktsioonidega.


Me loodame, et see teave aitas teil paremini mõista hallatud (proxy) nutilepingute skeeme.


Kui kogu teave plokiahelas on avatud (muidugi tingimusel, et lepingu lähtekood on kontrollitud), saate nende teadmistega relvastatud iseseisvalt uurida nutilepinguid ja tuvastada erinevaid kelmusskeeme.

Mina aga olen seda kõike juba teie eest teinud! Registreeruge lisatellimuseks ja saate juurdepääsu eksklusiivsetele filtritele nutilepingute funktsioonide ja värske analüüsi kohta. Suurendage oma võimalusi investeerida edukalt kasumlikesse tokenitesse.

Regards, Lotus Market team.

All posts

This website uses cookies to improve your experience. By continuing to use this website, you agree to its Confidentiality Policy

GOT IT

Connect to a wallet

Metamask