Od zdravila do strupa: Zakaj je dovoljenje postalo vir tveganja

1. Kaj je dovoljenje?

Začnimo z majhno zgodbo o izposojanju denarja:

Predstavljajte si, da si želim od prijatelja Jacka Ma izposoditi 1 milijon evrov. Jack brez oklevanja dvigne telefon in pokliče banko, potrdi svojo identiteto in ji naroči, naj mi odobri limit za izplačilo v višini 1 milijona. Banka to pooblastilo zabeleži in vse, kar moram storiti, je, da obiščem banko, se identificiram in dvignem odobreni znesek. Če banka pooblastila ne najde, je moja zahteva zavrnjena.

Zdaj pa raziščimo, kako se ta postopek spremeni z drugačno metodo – dovoljenjem. V tem scenariju, ko od Jacka zahtevam 1 milijon, on mimogrede izvleče ček, vpiše znesek, ga podpiše in mi ga izroči. Ček odnesem v banko in banka ga na podlagi Jackovega podpisa unovči tudi brez zapisa o odobritvi.

To ponazarja razliko med možnostma Odobriti in Dovoliti. Odobritev, ki je bistvena značilnost ERC-20, se pogosto uporablja že od začetka delovanja Ethereuma. Toda zakaj je bilo dovoljenje uvedeno pozneje z ERC-2612, da bi dosegli enak učinek?

2. Zakaj je bilo dovoljenje potrebno?

Predlog ERC-2612 je bil predstavljen marca 2019 in dokončan oktobra 2022. Njegov razvoj je sovpadal z več skoki cen plina Ethereum. Zaradi besa na trgu v času bikovskih tekov so uporabniki porabili več za pristojbine za plin za hitrejše transakcije, pri katerih je lahko že prednost enega bloka pomenila znaten dobiček.

Vendar je ta pojav pomenil breme za uporabnike, saj je postopek dveh transakcij, potreben za odobritev, postal drag, zlasti za tiste z manjšimi sredstvi. Uvedba funkcije Dovoljenje je omogočila podpisovanje brez povezave, kar je odpravilo potrebo po takojšnji avtorizaciji na verigi. Ta sprememba je pomenila, da je bilo dovoljenje mogoče zagotoviti skupaj s prenosom žetona, podobno kot pri unovčenju čeka, ne da bi bila potrebna predhodna odobritev banke.

Čeprav se je to zdelo koristno, saj je Jack prihranil telefonski klic in zmanjšal stroške uporabniških transakcij, je nehote odprlo Pandorino skrinjico.

3. Hitro naraščanje tveganj

Pred Permitom so se hekerji pogosto zanašali na metode goljufanja, ki so od uporabnikov zahtevale, da podpišejo transakcije Odobritev, kar je povzročilo stroške za plin in sprožilo opozorila. Tudi če so uporabniki pomotoma kliknili, jim je časovni zamik za transakcije na verigi omogočal, da so dejanje spremenili z novo transakcijo.

Dovoljenje pa je spremenilo igro. Odpravlja pristojbine za plin in zahteva le podpis, kar zmanjšuje pazljivost uporabnikov. Ker je podpisovanje brez povezave, lahko hekerji prevzamejo nadzor in izkoristijo situacijo, kadar koli se odločijo, ter tako povečajo svoje koristi.

Vpliv te spremembe se kaže v naraščajočem številu žrtev ribarjenja in ukradenih zneskih. Po podatkih @ScamSniffer:

  • Leta 2023 so izgube zaradi ribarjenja dosegle 295 milijonov dolarjev.
  • Do sredine leta 2024 je ta znesek že presegel 314 milijonov dolarjev.
  • V tretjem četrtletju leta 2024 je pomemben incident vključeval denarnico, ki je bila žrtev phishing napada Permit, zaradi česar je bilo izgubljenih 12.000 $spWETH v vrednosti približno 30 milijonov USD.

Takšnih rezultatov razvijalci, ki so predlagali dovoljenje, verjetno niso predvideli, saj je bil njihov prvotni cilj zmanjšati stroške plina in izboljšati uporabniško izkušnjo. Kar je bilo mišljeno kot dvorezen meč, se je izkazalo za oster nož, ki je prerezal zaščitne ovire okoli sredstev uporabnikov.

Pojavile so se podobne metode podpisovanja brez povezave, kot je Permit2 iz Uniswap, kar povečuje odvisnost od podpisovanja brez povezave in povečuje tveganja za ribarjenje.

Kaj je dovoljenje?

4. Kako se zaščititi

Ob tej grozeči nevarnosti lahko uporabniki sprejmejo več previdnostnih ukrepov za zmanjšanje izgub:

1. Povečanje ozaveščenosti

  • Bodite previdni pri skušnjavah s padajočimi zrakoplovi: Vsiljivke so lahko privlačne, vendar so mnoge od njih poskusi goljufanja. Pred sodelovanjem v akciji vedno preverite legitimnost akcije z več viri.
  • Izogibajte se slepemu podpisovanju: Če nenamerno vstopite na spletno stran, kjer se prikaže okno za transakcijo, natančno preverite podrobnosti transakcije. Izrazi, kot so Permit, Permit2, Approve ali IncreaseAllowance, kažejo na morebitne težave z avtorizacijo, zato je treba biti previden. Strojne denarnice, kot je Keystone, lahko pomagajo z razčlenjevanjem in prikazom podrobnosti o transakcijah ter tako preprečijo impulzivna dejanja.

2. Uporaba orodij

  • ScamSniffer: Ta razširitev brskalnika opozarja uporabnike pred vnosom sumljivih URL-jev in jim omogoča, da takoj prekinejo interakcije.
  • Preklic: Revoke.cash prikaže zapise o avtorizaciji žetonov v vaši denarnici in svetuje uporabnikom, da prekličejo vse sumljive ali neomejene avtorizacije. Redno čiščenje pooblastil zmanjšuje tveganja.

3. Izolacija sredstev in denarnice z več podpisi

Tudi za kriptožetone velja rek “ne daj vseh jajc v eno košarico”. Pomembna sredstva hranite v hladnih denarnicah, kot je Keystone, za dnevne transakcije pa uporabljajte majhne vroče denarnice. Tako tudi v primeru ogrožanja ene denarnice ne bo ogroženo vse premoženje.

Za večjo varnost lahko dodatno zaščito zagotavljajo denarnice z več podpisi. Dostop do sredstev je mogoč le z vnaprej določenim številom potrditev denarnice, kar zagotavlja, da ena sama ogrožena denarnica ne bo povzročila popolne izgube.

5. Zaključek

Čeprav ne moremo zanikati vrednosti, ki jo prinaša dovoljenje, pa vse večje število tatvin kaže, da so tveganja morda večja od njegovih koristi. Podobno kot nekoč razširjena metoda ethsign, ki je bila nazadnje opuščena zaradi varnostnih pomislekov, se tudi dovoljenje zdaj sooča s kritičnim trenutkom. Razvijalci morajo premišljeno razmisliti, ali naj to metodo v prihodnje izboljšajo ali opustijo.