Analise smart-contract
12.04.2024

Proxy detektora apraksts

Turpinām rakstu sēriju, kas veltīta krāpniecisko shēmu aprakstam viedajos līgumos. Šodien mēs runāsim par viedajiem līgumiem ar proxy kontroles (Proxy) funkciju.

Proxy viedie līgumi ir ieguvuši popularitāti blokķēžu jomā, pateicoties to modernizējamībai un elastībai. Tomēr šādi līgumi ir arī ļoti bīstami, jo īpaši, ja tos izmanto ļaunprātīgi lietotāji. Krāpnieki bieži izmanto maldinošas shēmas proxy viedlīgumos, lai apkrāptu lietotājus. Lai atpazītu šādus draudus, ir jāizprot iespējamie riski un jābūt tehniski zinošam.

Nokaitīgāk aplūkosim iespējamo briesmu aprakstu, biežāk sastopamās krāpšanas shēmas un to, kā atpazīt šādus draudus proxy viedlīgumos.

Proxy viedlīgumu briesmas:

  1. Nesankcionēts atjauninājums:
    Proxy līgumi ļauj īpašniekam atjaunināt pamatā esošo līgumu. Tomēr, ja šis mehānisms nav īstenots droši, tas var novest pie nesankcionētiem atjauninājumiem, ļaujot uzbrucējiem ievadīt līgumā ļaunprātīgu kodu.

  2. Nepārbaudīti ārējie izsaukumi:
    Negodīgi programmētāji var izmantot ārējos izsaukumus neuzticamiem līgumiem bez pienācīgas pārbaudes. Tas var novest pie ievainojamībām, tostarp reentrancesijas uzbrukumiem, kad ļaunprātīgi līgumi atkārtoti izsauc pilnvaroto līgumu, kas var izsmelt tā līdzekļus.

  3. Pārredzamības trūkums:
    . Pārvaldības līguma pirmkods parasti netiek pārbaudīts.

  4. Fake projekti:
    . Krāpnieki rada viltotus projektus, kas sola pievilcīgas iezīmes, piemēram, lielu peļņu vai unikālu funkcionalitāti. Viņi var izmantot starpnieku līgumus, lai radītu likumības šķietamību, vienlaikus slēpjot ļaunprātīgus nodomus.

  5. Ponzi shēmas:
    Krāpnieki veido Ponzi shēmas, pamatojoties uz starpniekservera līgumiem, vilinot lietotājus ar solījumiem par lielu peļņu. Šādām shēmām var būt atjaunināmas sastāvdaļas, lai saglabātu ticamības ilūziju.

  6. Klonētie līgumi:
    . Krāpnieki klonē likumīgus projektus un klonētajā līgumā ievieš ievainojamības vai izmaiņas. Neuzticīgi lietotāji var mijiedarboties ar šādiem kloniem, sajaucot tos ar oriģināliem.

Kā patstāvīgi noteikt, vai viedlīgumos ir šādi draudi?

Vērtīgi atzīmēt, ka, ja viedlīguma mērķkodā ir atsauce uz ārēju līgumu (Proxy), tad gandrīz 100% gadījumu šis Proxy līgums būs ar slēptu pirmkodu. Šādā gadījumā ārējais vadības līgums var veikt pilnīgi jebkuras darbības ar mērķa līgumu (piemēram, mainīt lietotāja bilances, ieslēgt un izslēgt tirdzniecību, uzsākt emisiju u. c.)

Tāpēc ir vērts saprast, ka darbs ar Proxy viedo līgumu ir ruletes spēle šī vārda tiešā nozīmē (kazino vienmēr uzvar).

Atrast Proxy izsaukumus viedajā līgumā ir pietiekami viegli. Un, kā jau minējām iepriekš, ļaunprātīgo funkciju implementācija atrodas kontroles līgumā - mērķa viedlīgums izskatās "balts un pūkains" (t. i., tajā parasti nav nekādu metožu, kas varētu radīt aizdomas).

Ja vēlaties paši noteikt, vai viedlīgumos ir Proxy funkcijas, jums noderēs šādi padomi.

  • Izveikt līguma auditu: Pirms darba ar jebkuru viedo līgumu pārskatiet tā pirmkodu un funkcionalitāti. Pievērsiet uzmanību tam, vai pastāv labi dokumentēti atjaunināšanas procesi, piekļuves kontroles mehānismi un projekta pārredzamība.

  • Pārliecinieties, vai viedajam līgumam ir veikts ārējais drošības audits, ko veicis cienījams uzņēmums. Audita ziņojums var sniegt ieskatu par iespējamām ievainojamībām.

  • Izpētiet projekta izstrādes komandu. Pārredzamas un uzticamas komandas ir mazāk tendētas uz krāpšanu.

  • Konsultējieties ar projekta kopienu un iegūstiet atsauksmes no citiem lietotājiem, kuriem ir pieredze ar līgumu. Krāpnieki bieži izvairās no publiskām diskusijām.

  • Darbojoties ar līgumiem, izmantojiet labi zināmas maku programmas un rīkus, kas nodrošina papildu drošības un darījumu aizsardzības funkcijas.

  • Būsiet uzmanīgi, strādājot ar jauniem un nepārbaudītiem līgumiem, īpaši tiem, kas sola lielu peļņu vai uzrāda neparastu uzvedību.

  • Ja kaut kas līgumā šķiet pārāk labs, lai būtu patiesība, vai ir aizdomīgs, uzticies intuīcijai un izvairies no tā.

  • Sekojiet līdzi jaunākajām norisēm mūsu kopienā (Telegram kanāls) un labākajai krāpšanas atklāšanas praksei (mūsu emuārs un YouTube kanāls).

Lotus Market drošības skeneris atrod visas izplatītās (tostarp slēptās) ārējās kontroles (Proxy) funkcijas. Izmantojiet mūsu premium abonementu un pasargājiet savus līdzekļus no apdraudējumiem.


Tālāk ir minēti piemēri ar biežāk sastopamajiem sarkanajiem karodziņiem un aizdomīgiem modeļiem, uz kuriem vajadzētu pievērst uzmanību, pārbaudot viedos līgumus, lai identificētu potenciāli ļaunprātīgu funkcionalitāti. Ir svarīgi izprast šīs pazīmes, lai pasargātu sevi un citus no iespējamas krāpšanas. Aplūkosim dažus koda paraugu variantus un padomus, kas palīdzēs jums identificēt aizdomīgu funkcionalitāti viedajā līgumā:

Galvenais noteikums ir tāds, ka, ja līguma kods satur Call, CallCode vai DelegateCall funkciju izsaukumu, tas nozīmē, ka līgums izsauc ārējo kodu un nodod tam savu datu kontroli.

tips around proxy

Izskatīsim galvenos Proxy līgumu izmantošanas piemērus.

1. Neinicializēti glabāšanas mainīgie.

Viena no visbiežāk sastopamajām proxy līgumu ievainojamībām ir glabāšanas mainīgo nepareiza izmantošana. Ja proxy līgums tiek izmantots ar DelegateCall, lai izsauktu implementācijas līguma funkcijas, tiek modificēti proxy līguma glabāšanas mainīgie. Tomēr, ja proxy līguma krātuvē ir neinicializētas vērtības vai noklusējuma vērtības, tas var novest pie neparedzētas uzvedības.


  contract Implementation {
    address public owner;

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

Šinī piemērā, ja īpašnieka mainīgais proxy līgumā nav inicializēts, izsaucot owner() proxy līgumā, tiks atgriezts implementācijas līguma īpašnieka mainīgais, kas var nebūt tas, ko lietotājs sagaida.

2. Nepārbaudīti ārējie izsaukumi

Krāpnieciski līgumi var izmantot ārējos izsaukumus neuzticamiem līgumiem bez pienācīgām pārbaudēm. Ja pilnvarotā līgums tieši vai netieši izsauc ļaunprātīgu līgumu, izmantojot DelegateCall, ļaunprātīgais līgums var veikt patvaļīgas darbības, tostarp reentrancy uzbrukumus, bez pienācīgiem aizsardzības pasākumiem.


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

Ja lietotājs nosūta patvaļīgu līgumu un ļaunprātīgus datus kā mērķa adresi, tā rezultātā lietotāja vārdā var tikt veiktas nesankcionētas darbības.

3. Nepareiza piekļuves kontrole.

Nepareiziem līgumiem var būt neatbilstoša piekļuves kontrole, kas ļauj nesankcionētiem lietotājiem veikt administratīvās funkcijas. Izmantojot starpnieka līgumu, rūpīgi jākontrolē, kam ir tiesības atjaunināt īstenošanas līgumu. Ja tas netiek darīts, līguma uzvedībā var tikt veiktas neatļautas izmaiņas.


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

Šajā piemērā, ja īpašnieka adrese netiek pienācīgi kontrolēta vai netiek pārbaudīts, kas var izsaukt atjaunināšanas funkciju, neautorizētas personas var mainīt implementāciju uz ļaunprātīgu līgumu.

4. Versionēšanas un pārvaldības riski.

Proxy līgumi bieži izmanto versionēšanas un pārvaldības mehānismus līguma loģikas atjaunināšanai. Ja šie mehānismi nav droši īstenoti, tie var kļūt neaizsargāti pret ļaunprātīgu pušu uzbrukumiem vai manipulācijām.


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

Šādā gadījumā uzbrucējs var piedāvāt jaunu "tīru" līgumu un pēc tam nekavējoties veikt atjauninājumus, efektīvi iedarbinot savu ļaunprātīgo kodu.

tips around proxy

Kam jāpievērš uzmanība, pētot proxy līgumus, un kādus draudus tie rada?

    1. Nesankcionēts līdzekļu pārskaitījums:
      Viens no izplatītākajiem veidiem, kā krāpnieki izkrāpj naudu, ir līguma īpašniekam bez atļaujas pārskaitot līdzekļus sev vai uz citu adresi.

    2. Slēptie "aizmugurējie vārti":
      . Krāpnieki var slēpt ļaunprātīgu kodu aiz aizsegtiem vai maldinošiem funkciju nosaukumiem, tādējādi apgrūtinot lietotājiem atklāt viņu patiesos nodomus. Neskaidri vai maldinoši funkciju nosaukumi. Nosacījuma operatori, kas piešķir īpašas privilēģijas noteiktām adresēm.

    3. Viltus žetoni un apmaiņa:
      Krāpnieki bieži rada viltotus žetonus vai viltotas apmaiņas platformas, lai maldinātu lietotājus nodot savus aktīvus ļaunprātīgam līgumam. Pievērsiet uzmanību žetonu līgumiem, kuru uzvedība ir aizdomīga, piemēram, neierobežota žetonu kalšana vai neatļautu pārskaitījumu pieņemšana.

    4. Nepatiesātas emisijas vai īpašumtiesību nodošanas funkcijas:
      Ārējs līgums var mainīt žetona īpašnieku vai izraisīt jaunu emisiju, izraisot cenu inflāciju.

    5. Maldinoša dokumentācija vai komentāri, kas neatbilst koda uzvedībai:
      Krāpnieki var sniegt maldinošu vai neprecīzu dokumentāciju vai komentārus savā kodā, lai maldinātu lietotājus par līguma patieso funkcionalitāti. Vienmēr salīdziniet dokumentāciju ar faktisko koda uzvedību.

    6. Drošības pārbaužu trūkums:
      Uzmanieties no līgumiem, kuros trūkst pienācīgu drošības pārbaužu, piekļuves kontroles vai kuros nav īstenota aizsardzība pret tādām bieži sastopamām ievainojamībām kā atkārtota atkārtošanās. Apsverot viedo līgumu, vienmēr rūpīgi pārbaudiet kodu, meklējiet labi dokumentētu un pārredzamu dizainu, pārbaudiet ārējos drošības auditus un izpētiet kopienas atsauksmes. Turklāt esiet piesardzīgi, mijiedarbojoties ar līgumiem, kuriem piemīt kāda no šīm pazīmēm, jo tie var būt izstrādāti, lai nozagtu līdzekļus vai veiktu citas ļaunprātīgas darbības.

    7. Sarežģītas nosacījuma izteiksmes:
      Krāpnieki var izmantot sarežģītas nosacījuma izteiksmes vai loģiku, kurai ir grūti sekot, tādējādi apgrūtinot līguma patiesās funkcionalitātes izpratni. Meklējiet nevajadzīgi sarežģītu kodu: pārāk sarežģītu vai neskaidru loģiku, kā arī noteikumus un nosacījumus, kas neatbilst līguma mērķim.

    8. Neskaidri pārvaldības un īpašumtiesību modeļi (Ownership):
      Krāpnieki bieži izmanto starpnieku līgumus ar neskaidriem pārvaldības mehānismiem vai slēptām īpašumtiesību struktūrām, tādējādi lietotājiem ir grūti noteikt, kas kontrolē līgumu.

    9. Zināmu projektu nenorādīšana:
      Krāpnieki bieži izveido līgumus, kas imitē zināmu, likumīgu projektu funkcionalitāti vai izskatu. Vienmēr pārbaudiet projekta autentiskumu un pārliecinieties, ka tas nav viltojums. Pievērsiet uzmanību nelielām atšķirībām nosaukumos, logotipos vai zīmolvedībā. Projekti, kas apgalvo, ka ir oficiāli, bet kuriem trūkst pienācīga apstiprinājuma.

    10. Stauša vai anonīma izvietošana:
      . Krāpnieki līgumus var izvietot sasteigti, bez skaidras identifikācijas un ar minimālu informāciju par projektu vai tā izstrādātājiem. Pievērsiet uzmanību līgumiem, kas izvietoti bez pienācīgas rūpības un plānošanas, kurus izlaidusi nezināma komanda.

    11. Veiktas publiskas pārbaudes vai audita trūkums:
      Ja līgums nepiedāvā publisku pirmkoda pārbaudi vai tam nav veikts trešās puses drošības audits, pret to jāizturas ļoti piesardzīgi.

    12. Neparastas vai slēptas datu glabāšanas iespējas:
      Krāpnieki var izmantot netradicionālas vai slēptas datu glabāšanas shēmas, lai maskētu ļaunprātīgu funkcionalitāti. Ņemiet vērā, ka dati var tikt glabāti neparedzētās līguma vietās.

    13. Fiktīvi likviditātes pūliņi:
      DeFi projektu gadījumā jāuzmanās no likviditātes pūliem, kas sola lielu peļņu. Krāpnieki var izveidot viltotus pūlus, lai piesaistītu likviditāti, un pēc tam izmantot lietotājus. Nepastāvīgi augsti ieņēmumi no likviditātes nodrošināšanas. Pūla darbības mehānisma pārredzamības un dokumentācijas trūkums.

    tips around proxy

    Lai pasargātu no šādām ievainojamībām, līgumi, kuros izmanto proxy veidnes un DelegateCall, ir rūpīgi jāpārskata un jāauditē, jāievieš piekļuves kontroles mehānismi un jānodrošina ārējo izsaukumu drošība. Lietotājiem jābūt piesardzīgiem, mijiedarbojoties ar līgumiem, jo īpaši tiem, kuros ir sarežģīti atjaunināšanas mehānismi, un vienmēr jāveic pienācīga pārbaude pirms mijiedarbības ar viedo līgumu blokķēdē.

    Blokķēdes strauji mainīgajā pasaulē ir obligāti jāsaglabā modrība un informētība, lai aizsargātu sevi un savus aktīvus no iespējamām krāpnieciskām shēmām un ievainojamībām, kas saistītas ar proxy līgumiem un DelegateCall funkcijām.


    Mēs ceram, ka šī informācija ir palīdzējusi jums labāk izprast pārvaldīto (Proxy) viedo līgumu shēmas.


    Tā kā visa informācija blokķēdē ir atklāta (protams, ar nosacījumu, ka līguma pirmkods ir pārbaudīts), bruņojies ar šīm zināšanām, jūs varat patstāvīgi izpētīt viedos līgumus un identificēt dažādas krāpnieciskās shēmas.

    Vis to mēs jau esam izdarījuši jūsu vietā! Pierakstieties uz premium abonementu un iegūstiet piekļuvi ekskluzīviem viedo līgumu funkciju filtriem un svaigai analīzei. Palielini savas izredzes veiksmīgi investēt ienesīgos žetonos.

    Regards, Lotus Market komanda.

All posts

Connect to a wallet

Metamask