Što se zapravo dogodi kad negdje "potpišete"?
Zamislite da vam na adresu stigne token koji niste tražili. U novčaniku ćete vidjeti recimo "1 000 $REWARD" i uz to web koji obećava da ćete to u par klikova preuzeti. Vi web otvorite, spojite novčanik i kliknete na gumb "Claim". Iskoči prozor sa zahtjevom za potpis. I tu se odlučuje.
U kriptu postoje dvije različite vrste "potpisa", koje izgledaju gotovo isto, ali znače nešto drugo:
- Transakcija je jednokratna radnja. Nešto pošaljete, nešto zamijenite, i gotovo je.
- Approval (odobrenje) je trajno dopuštenje. Pametnom ugovoru kažete: "od sada smiješ iz mog novčanika baratati ovim tokenom."
Approval sam po sebi ništa ne krade. To je samo dopuštenje. Novac nestane tek kasnije, kad napadač to dopuštenje iskoristi, klidno i dugo nakon što ste na prijevarni web odavno zaboravili. Zato to zovemo "potpis koji će isprazniti novčanik kasnije".
Kako konkretno izgleda approval scam korak po korak?
Uzmimo modelni tijek. Brojevi su ilustrativni, imaju pokazati mehaniku, ne stvarni slučaj.
- U novčanik vam dođe nepoznati token, na primjer "AirdropX". Pojavio se sam, vi niste ništa radili.
- Token u nazivu ili u "opisu" upućuje na web. Web izgleda kao službena stranica projekta.
- Kliknete na "Claim reward". Novčanik prikaže zahtjev za potpis.
- Potpišete. No to što ste potpisali nije bilo preuzimanje nagrade. Bio je to
approveilisetApprovalForAll, dakle neograničeno dopuštenje tuđem ugovoru da raspolaže vašim stablecoinom ili cijelom zbirkom NFT-ova. - Ništa se odmah ne dogodi. Novčanik izgleda normalno.
- Tri dana kasnije napadač pozove funkciju
transferFromi pošalje vaš saldo negdje drugdje. Vi vidite samo to da su tokeni nestali.
Druga varijanta su takozvani phishing potpisi tipa Permit. Tamo ne potpisujete transakciju, nego poruku (potpis je besplatan, ne plaćate naknadu za njega). Upravo je to podmuklo: budući da za potpis ne plaćate, nedostaje vam onaj trenutak kad se u novčaniku pokaže cijena. O naknadi i o tome zašto obična transakcija košta, pišemo u našem rječniku pod pojmom gas-fee.
Zašto je opasniji "approval" nego obični prijenos?
Zato što je obični prijenos zatvoren. Pošaljete deset tokena, ode deset tokena, kraj. Kod approvala potpisujete opseg za budućnost.
Mnoga dopuštenja se osim toga dodjeljuju kao neograničena (u praksi je riječ o tehnički najvišem mogućem broju). To znači da ugovor smije posegnuti ne samo za onim što imate sada, nego i za onim što vam stigne sljedeći put. Kad si za mjesec dana na tu istu adresu pošaljete plaću u stablecoinu, staro dopuštenje i dalje vrijedi i napadač je može isto odsisati.
Bitno je ovo: prisutnost approvala još ne znači krađu. Puno legitimnih aplikacija (burze, mjenjačnice, protokoli za posudbu) approval trebaju za normalno funkcioniranje. Problem nije approval kao takav, problem je approval dodijeljen nekome kome nemate razloga vjerovati, ili approval koji vam odavno više ne treba pa ste ga ostavili da visi.
Kako proći svoja dopuštenja i kako ih opozvati?
Revokacija (opoziv) approvala znači poslati novu transakciju koja to staro dopuštenje smanji na nulu. Od tog trenutka dotični ugovor više nema pravo baratati vašim tokenom.
Opći postupak izgleda ovako:
| Korak | Što radite | Na što paziti |
|---|---|---|
| 1 | Utvrdite kakva dopuštenja vaša adresa ima | Koristite alat koji čita podatke izravno s blockchaina prema vašoj javnoj adresi. Nikad nigdje ne upisujte seed frazu ni privatni ključ. |
| 2 | Prođete popis | Tražite prije svega neograničena dopuštenja i dopuštenja za ugovore koje ne prepoznajete. |
| 3 | Sumnjivo dopuštenje revokirate | Revokacija je zasebna transakcija, pa ćete za nju platiti mrežnu naknadu. |
| 4 | Provjerite rezultat | Nakon potvrde dopuštenje bi trebalo biti na nuli. |
Dvije stvari koje je pošteno reći naglas:
- Revokacija košta naknadu. Nije besplatna, jer je to stvarna transakcija u mreži. Koliko točno, ovisi o trenutnom stanju mreže, a to mi ovdje ne predviđamo.
- Revokacija ne vraća ono što je već ukradeno. Opoziv dopuštenja je prevencija i zaustavljanje daljnjeg odsisavanja. Ako je napadač saldo već poslao, revokacija ga natrag neće donijeti.
Kako prepoznati sumnjivi potpis prije nego ga potvrdite?
Ne postoji stopostotni vizualni znak, ali nekoliko signala se ponavlja:
- Gumb obećava "claim" ili "reward", ali novčanik pokazuje zahtjev za
approve,increaseAllowanceilisetApprovalForAll. To je proturječje. - Potpis je "besplatan" i riječ je o poruci tipa
Permit, pri čemu vas web tjera u žurbu. - Token koji vas je na radnju naveo stigao je nezatraženo.
- Adresa kojoj dopuštenje dodjeljuje prava nije adresa aplikacije koju stvarno koristite.
Moderni novčanici danas nastoje kod rizičnih potpisa prikazati upozorenje i prevesti tehnički sadržaj u ljudski jezik. Shvatite to kao pomoć, ne kao jamstvo. Odluka o potpisu i dalje je na vama.
Što biste sada trebali znati, a što ostaje neizvjesno
Nakon ove lekcije trebali biste razlikovati jednokratnu transakciju od trajnog approvala, shvaćati zašto se novčanik može isprazniti tek s odgodom, i znati da approval možete proći i opozvati zasebnom transakcijom.
Što ostaje neizvjesno i što vam nitko pošteno neće obećati:
- Koliko će revokacija koštati. Naknada ovisi o mreži u danom trenutku, nikakav fiksni iznos ovdje ne navodimo.
- Je li konkretni ugovor prijevaran ili nije. Alat će vam pokazati kome ste što dopustili, ali naljepnicu "lopov" uz to automatski neće dodati. Procjena vjerodostojnosti uvijek je na vama.
- Hoće li revokacija pomoći na vrijeme. Ako je dopuštenje zloupotrijebio napadač prije nego ste ga stigli opozvati, prevencija više ne funkcionira.
Ovo je edukativna lekcija iz charliedesk Classroom. Ne govorimo vam što kupovati ili prodavati. Pokazujemo kako mehanika funkcionira, da se odlučujete otvorenih očiju.

