Analise smart-contract
12.04.2024

Popis detektoru proxy

Pokračujeme v sérii článků věnovaných popisu podvodných schémat v chytrých kontraktech. Dnes si povíme něco o chytrých smlouvách s funkcí proxy řízení (Proxy).

Proxy chytré smlouvy si v oblasti blockchainu získaly oblibu díky své modernizovatelnosti a flexibilitě. Takové kontrakty však s sebou nesou také velké nebezpečí, zejména pokud je používají zlomyslní uživatelé. Podvodníci často používají podvodná schémata v proxy chytrých smlouvách, aby podvedli uživatele. Abyste takové hrozby identifikovali, musíte rozumět možným rizikům a být technicky zdatní.

Podívejme se blíže na popis možných nebezpečí, běžných podvodných schémat a na to, jak takové hrozby v proxy chytrých smlouvách identifikovat.

Nebezpečí proxy chytrých smluv:

  1. Neautorizovaná aktualizace:
    Podívejte se na popis možných nebezpečí, běžných podvodných schémat a na to, jak takové hrozby v proxy chytrých smlouvách identifikovat. Proxy kontrakty umožňují vlastníkovi aktualizovat podkladový kontrakt. Pokud však tento mechanismus není implementován bezpečně, může vést k neautorizovaným aktualizacím, což útočníkům umožní injektovat do kontraktu škodlivý kód.

  2. Neověřená externí volání:
    . Nepoctiví programátoři mohou používat externí volání nedůvěryhodných smluv bez řádného ověření. To může vést ke zranitelnostem, včetně reentrancy útoků, kdy škodlivé smlouvy opakovaně volají proxy smlouvu, což může vyčerpat její prostředky.

  3. Nedostatek transparentnosti:
    Zdrojový kód smlouvy o správě obvykle není ověřen.

  4. Falešné projekty:
    . Podvodníci vytvářejí falešné projekty, které slibují atraktivní vlastnosti, jako jsou vysoké výnosy nebo jedinečné funkce. Mohou používat zástupné smlouvy, aby vytvořili zdání legitimity a zároveň skryli nekalé úmysly.

  5. Ponziho schémata:
    Podvodníci vytvářejí Ponziho schémata založená na zprostředkovatelských smlouvách a lákají uživatele sliby vysokých výnosů. Taková schémata mohou mít aktualizovatelné součásti, aby se zachovala iluze věrohodnosti.

  6. Klonované smlouvy:
    Podvodníci klonují legitimní projekty a do klonované smlouvy zavádějí zranitelnosti nebo změny. Nic netušící uživatelé mohou s takovými klony interagovat a mylně je považovat za originál.

Jak můžete samostatně určit, zda jsou v chytrých kontraktech přítomny takové hrozby?

Stojí za zmínku, že pokud cílový kód chytrého kontraktu obsahuje odkaz na externí kontrakt (Proxy), pak v téměř 100% případů bude tento Proxy kontrakt mít skrytý zdrojový kód. V tomto případě může externí kontrolní kontrakt provádět s cílovým kontraktem naprosto jakékoli akce (například: změna zůstatků uživatelů, povolení a zakázání obchodování, zahájení emise atd.).

Proto stojí za to pochopit, že práce s Proxy chytrým kontraktem je skutečnou hrou rulety (kasino vždy vyhrává).

Najít volání Proxy v chytrém kontraktu je dost snadné. A jak jsme již zmínili dříve, implementace škodlivých funkcí je v kontrolním kontraktu - zatímco cílový chytrý kontrakt vypadá "čistě a nevinně" (tj. obecně je bez jakýchkoli metod, které by mohly vzbudit podezření).

Pokud chcete sami určit, zda jsou v chytrých kontraktech přítomny funkce Proxy, následující tipy vám budou užitečné.

  • Provedete audit smlouvy: Před prací s jakoukoli chytrou smlouvou zkontrolujte její zdrojový kód a funkce. Věnujte pozornost existenci dobře zdokumentovaných aktualizačních procesů, mechanismů řízení přístupu a transparentnosti projektu.

  • Ujistěte se, že chytrá smlouva prošla externím bezpečnostním auditem renomovaných společností. Zpráva z auditu může poskytnout přehled o potenciálních zranitelnostech.

  • Prozkoumejte tým vývojářů projektu. U transparentních a důvěryhodných týmů je menší pravděpodobnost, že se dopustí podvodu.

  • Poraďte se s komunitou projektu a získejte zpětnou vazbu od ostatních uživatelů, kteří mají s kontraktem zkušenosti. Podvodníci se často vyhýbají veřejné diskusi.

  • Při práci se smlouvami používejte známé peněženkové programy a nástroje, které poskytují dodatečné funkce zabezpečení a ochrany transakcí.

  • Buďte opatrní při práci s novými a neověřenými smlouvami, zejména s těmi, které slibují vysoké výnosy nebo vykazují neobvyklé chování.

  • Pokud se vám něco ve smlouvě zdá příliš dobré na to, aby to byla pravda, nebo je to podezřelé, důvěřujte své intuici a vyhněte se tomu.

  • Sledujte aktuální informace o nejnovějším vývoji v naší komunitě (kanál Telegram) a osvědčené postupy pro odhalování podvodů (náš blog a kanál YouTube).

Skener zabezpečení služby Lotus Market najde všechny běžné (včetně skrytých) externí ovládací prvky (Proxy). Využívejte naše prémiové předplatné a chraňte své prostředky před hrozbami.

Následující příklady jsou běžnými červenými vlajkami a podezřelými vzory, na které byste se měli zaměřit při zkoumání chytrých smluv, abyste identifikovali potenciálně škodlivé funkce. Je důležité těmto příznakům porozumět, abyste sebe i ostatní ochránili před potenciálními podvody. Podívejme se na některé varianty vzorů kódu a tipy, které vám pomohou identifikovat podezřelou funkcionalitu v chytrém kontraktu:

Hlavním pravidlem je, že pokud kód kontraktu obsahuje volání funkcí Call, CallCode nebo DelegateCall, znamená to, že kontrakt volá externí kód a předává mu kontrolu nad svými daty.

tips around proxy

Podívejme se na hlavní příklady použití proxy kontraktů.

1. Proxy kontrakty se používají v praxi. Neinicializované proměnné úložiště.

Jednou z nejčastějších chyb v proxy kontraktech je zneužití proměnných úložiště. Když je proxy kontrakt použit s DelegateCall k volání funkcí implementačního kontraktu, jsou modifikovány úložné proměnné proxy kontraktu. Pokud však úložiště proxy kontraktu obsahuje neinicializované hodnoty nebo výchozí hodnoty, může to vést k neočekávanému chování.


    contract Implementation {
        address public owner;

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

V tomto příkladu, pokud je proměnná owner v proxy kontraktu neinicializovaná, volání owner() na proxy kontraktu vrátí proměnnou owner implementačního kontraktu, což nemusí být to, co uživatel očekává.

2. Neověřená externí volání.

Falešné kontrakty mohou používat externí volání nedůvěryhodných kontraktů bez řádné kontroly. Pokud proxy smlouva přímo nebo nepřímo vyvolá škodlivou smlouvu prostřednictvím DelegateCall, může tato škodlivá smlouva bez řádného zabezpečení provádět libovolné akce, včetně útoků na reentranci.


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

Pokud uživatel odešle libovolnou smlouvu a škodlivá data jako cílovou adresu, může to mít za následek provedení neoprávněných akcí jménem uživatele.

3. Nesprávné řízení přístupu.

Podvodné smlouvy mohou mít nevhodné řízení přístupu, což umožňuje neoprávněným uživatelům provádět funkce správy. Při použití smlouvy v zastoupení by mělo být pečlivě kontrolováno, kdo má oprávnění aktualizovat prováděcí smlouvu. Pokud tak neučiníte, může dojít k neoprávněným změnám chování kontraktu.


  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 tomto příkladu, pokud není adresa vlastníka řádně kontrolována nebo není kontrolováno, kdo může funkci aktualizace vyvolat, mohou neoprávněné strany změnit implementaci na škodlivou smlouvu.

4. Rizika verzování a správy

Proxy smlouvy často používají mechanismy verzování a správy k aktualizaci logiky smlouvy. Pokud tyto mechanismy nejsou implementovány bezpečně, mohou se stát zranitelnými vůči útokům nebo manipulaci ze strany zlomyslných stran.


  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 tomto případě může útočník nabídnout novou "čistou" smlouvu a poté okamžitě provést aktualizace, čímž efektivně uvede svůj škodlivý kód do provozu.

tips around proxy

Na co si mám dát pozor při studiu smluv o proxy a jaké hrozby představují?

  1. Nepovolený převod finančních prostředků:
    Jedním z nejčastějších způsobů, jak podvodníci kradou peníze, je neoprávněný převod finančních prostředků majitelem smlouvy na sebe nebo na jinou adresu.

  2. Skrytá "zadní vrátka":
    Podvodníci mohou skrývat škodlivý kód za zastřenými nebo zavádějícími názvy funkcí, což uživatelům ztěžuje odhalení jejich skutečných záměrů. Nejasné nebo zavádějící názvy funkcí. Podmíněné operátory udělující zvláštní oprávnění určitým adresám.

  3. Falešné tokeny a výměny:
    . Podvodníci často vytvářejí falešné tokeny nebo falešné výměnné platformy, aby uživatele oklamali a přiměli je převést svá aktiva na škodlivou smlouvu. Věnujte pozornost smlouvám o tokenech, jejichž chování je podezřelé, například ražení neomezeného počtu tokenů nebo přijímání neoprávněných převodů.

  4. Neoprávněné vydávání nebo funkce převodu vlastnictví:
    Externí smlouva může změnit držitele tokenu nebo spustit novou emisi, což způsobí inflaci ceny.

  5. Zavádějící dokumentace nebo komentáře neodpovídající chování kódu:
    Podvodníci mohou ve svém kódu uvádět zavádějící nebo nepřesnou dokumentaci nebo komentáře, aby uživatele uvedli v omyl ohledně skutečné funkčnosti kontraktu. Vždy zkontrolujte dokumentaci se skutečným chováním kódu.

  6. Nedostatek bezpečnostních kontrol:
    Podrobné vysvětlení. Dávejte si pozor na kontrakty, které postrádají řádné bezpečnostní kontroly, kontroly přístupu nebo neimplementují ochranu proti běžným zranitelnostem, jako je například reentrace. Při zvažování inteligentní smlouvy vždy pečlivě kontrolujte kód, hledejte dobře zdokumentované a transparentní návrhy, ověřujte externí bezpečnostní audity a studujte zpětnou vazbu komunity. Kromě toho buďte obezřetní při interakci se smlouvami, které vykazují některý z těchto atributů, protože mohou být navrženy za účelem krádeže finančních prostředků nebo provádění jiných škodlivých činností.

  7. Složité podmíněné výrazy:
    Podvodníci mohou používat složité podmíněné výrazy nebo obtížně sledovatelnou logiku, což ztěžuje pochopení skutečné funkčnosti smlouvy. Hledejte zbytečně složitý kód: příliš složitou nebo nejasnou logiku a podmínky, které neodpovídají účelu smlouvy.

  8. Nejasné vzorce řízení a vlastnictví (Ownership):
    Podle vašeho názoru je třeba, abyste se zaměřili na to, zda je smlouva uzavřena v souladu s účelem smlouvy. Podvodníci často používají zástupné smlouvy s nejasnými mechanismy řízení nebo skrytou vlastnickou strukturou, což uživatelům ztěžuje určení toho, kdo smlouvu ovládá.

  9. Upomínání známých projektů:
    Podvodníci často vytvářejí smlouvy, které napodobují funkčnost nebo vzhled známých, legitimních projektů. Vždy si ověřte pravost projektu a ujistěte se, že se nejedná o podvrh. Věnujte pozornost drobným rozdílům v názvech, logu nebo značce. Projekty, které o sobě tvrdí, že jsou oficiální, ale postrádají řádné ověření.

  10. Hasty nebo anonymní nasazení:
    Podvodníci mohou nasazovat smlouvy narychlo, bez jasné identifikace a s minimem informací o projektu nebo jeho vývojářích. Pozornost věnujte smlouvám nasazeným bez řádné kontroly a plánování, uvolněným neznámým týmem.

  11. Nedostatek veřejného ověření nebo auditu:
    Pokud smlouva nenabízí veřejnou kontrolu zdrojového kódu nebo neprošla bezpečnostním auditem třetí strany, měli byste k ní přistupovat s maximální obezřetností.

  12. Neobvyklé nebo skryté ukládání dat:
    Podvodníci mohou používat netradiční nebo skrytá schémata ukládání dat, aby zamaskovali škodlivé funkce. Všimněte si, že data mohou být uložena na neočekávaných místech v rámci smlouvy.

  13. Podvodné fondy likvidity:
    V případě projektů DeFi buďte obezřetní vůči poolům likvidity, které slibují vysoké výnosy. Podvodníci mohou vytvářet falešné pooly, aby přilákali likviditu a následně zneužili uživatele. Nesoustavně vysoké výnosy z poskytování likvidity. Nedostatek transparentnosti a dokumentace mechanismu fungování poolu.

tips around proxy

Pro ochranu před těmito zranitelnostmi by měly být smlouvy využívající šablony proxy a DelegateCall pečlivě přezkoumány a auditovány, měly by být implementovány mechanismy řízení přístupu a externí volání by měla být zabezpečena. Uživatelé by měli být při interakci se smlouvami, zejména se složitými mechanismy aktualizace, opatrní a vždy by měli před interakcí s inteligentní smlouvou v blockchainu provést náležitou kontrolu.

V rychle se vyvíjejícím světě Blockchainu je nutné zůstat ostražitý a informovaný, abyste ochránili sebe a svůj majetek před potenciálními podvodnými schématy a zranitelnostmi souvisejícími s proxy smlouvami a funkcemi DelegateCall.


Doufáme, že vám tyto informace pomohly lépe porozumět schématům řízených (proxy) chytrých smluv.


Jelikož jsou všechny informace v blockchainu otevřené (samozřejmě za předpokladu, že je ověřen zdrojový kód smlouvy), můžete vyzbrojeni těmito znalostmi nezávisle studovat chytré smlouvy a identifikovat různá podvodná schémata.

Však my už jsme to všechno udělali za vás! Přihlaste se k prémiovému předplatnému a získejte přístup k exkluzivním filtrům funkcí chytrých kontraktů a čerstvým analýzám. Zvyšte své šance na úspěšné investování do výnosných tokenů.

S pozdravem, tým Lotus Market.

All posts

Connect to a wallet

Metamask