Co se vlastně stane, když někde "podepíšete"?
Představte si, že vám na adresu přistane token, o který jste nežádali. V peněžence uvidíte třeba "1 000 $REWARD" a k tomu web, který slibuje, že si to za pár kliknutí vyzvednete. Vy web otevřete, připojíte peněženku a odkliknete tlačítko "Claim". Vyskočí okno s žádostí o podpis. A tady se rozhoduje.
V kryptu existují dva různé typy "podpisu", které vypadají skoro stejně, ale znamenají něco jiného:
- Transakce je jednorázová akce. Něco pošlete, něco vyměníte, a je hotovo.
- Approval (schválení) je trvalé povolení. Řeknete chytrému kontraktu: "od teď smíš z mé peněženky manipulovat s tímto tokenem."
Approval sám o sobě nic neukradne. Je to jen povolení. Peníze zmizí až později, když si útočník to povolení použije, klidně dlouho poté, co jste na podvodný web dávno zapomněli. Proto tomu říkáme "podpis, který vysaje peněženku později".
Jak konkrétně vypadá approval scam krok za krokem?
Vezměme si modelový průběh. Čísla jsou ilustrativní, mají ukázat mechaniku, ne reálný případ.
- Do peněženky vám přijde neznámý token, například "AirdropX". Objevil se sám, vy jste nic nedělali.
- Token v názvu nebo v "popisu" odkazuje na web. Web vypadá jako oficiální stránka projektu.
- Kliknete na "Claim reward". Peněženka zobrazí žádost o podpis.
- Podepíšete. Jenže to, co jste podepsali, nebyl výběr odměny. Byl to
approvenebosetApprovalForAll, tedy neomezené povolení pro cizí kontrakt nakládat s vaším stablecoinem nebo s celou sbírkou NFT. - Nic se hned nestane. Peněženka vypadá normálně.
- O tři dny později útočník zavolá funkci
transferFroma odešle si váš zůstatek pryč. Vy vidíte jen to, že tokeny jsou fuč.
Druhá varianta jsou takzvané phishingové podpisy typu Permit. Tam nepodepisujete transakci, ale zprávu (podpis je zdarma, neplatíte za něj poplatek). Právě to je zrádné: protože za podpis neplatíte, chybí vám ten okamžik, kdy se v peněžence ukáže cena. O poplatku a o tom, proč běžná transakce stojí peníze, píšeme v našem slovníčku u hesla gas-fee.
Proč je nebezpečnější "approval" než obyčejný převod?
Protože obyčejný převod je uzavřený. Pošlete deset tokenů, odejde deset tokenů, konec. U approvalu podepisujete rozsah do budoucna.
Mnoho povolení se navíc uděluje jako neomezené (v praxi jde o technicky nejvyšší možné číslo). To znamená, že kontrakt smí sáhnout nejen na to, co máte teď, ale i na to, co vám přijde příště. Když si za měsíc na tu samou adresu pošlete výplatu ve stablecoinu, staré povolení pořád platí a útočník ji může odčerpat taky.
Podstatné je toto: přítomnost approvalu ještě neznamená krádež. Spousta legitimních aplikací (burzy, směnárny, půjčovací protokoly) approval potřebuje k běžnému fungování. Problém není approval jako takový, problém je approval udělený někomu, komu nemáte důvod věřit, nebo approval, který jste dávno přestali potřebovat a nechali ho viset.
Jak si svá povolení projít a jak je odvolat?
Revokovat (odvolat) approval znamená poslat novou transakci, která to staré povolení sníží na nulu. Od té chvíle už daný kontrakt nemá právo s vaším tokenem hýbat.
Obecný postup vypadá takto:
| Krok | Co děláte | Na co si dát pozor |
|---|---|---|
| 1 | Zjistíte, jaká povolení vaše adresa má | Použijte nástroj, který čte data přímo z blockchainu podle vaší veřejné adresy. Nikdy nikam nezadávejte seed frázi ani privátní klíč. |
| 2 | Projdete seznam | Hledáte hlavně neomezená povolení a povolení pro kontrakty, které nepoznáváte. |
| 3 | Podezřelé povolení revokujete | Revokace je samostatná transakce, takže za ni zaplatíte poplatek za síť. |
| 4 | Ověříte výsledek | Po potvrzení by povolení mělo být na nule. |
Dvě věci, které je poctivé říct nahlas:
- Revokace stojí poplatek. Není zadarmo, protože je to reálná transakce v síti. Kolik přesně, závisí na aktuálním stavu sítě, a to my tady nepredikujeme.
- Revokace nevrací, co už bylo ukradeno. Odvolání povolení je prevence a zastavení dalšího odčerpávání. Pokud útočník zůstatek už odeslal, revokace ho zpět nepřinese.
Jak poznáte podezřelý podpis dřív, než ho potvrdíte?
Neexistuje stoprocentní vizuální znak, ale pár signálů se opakuje:
- Tlačítko slibuje "claim" nebo "reward", ale peněženka ukazuje žádost o
approve,increaseAllowancenebosetApprovalForAll. To je rozpor. - Podpis je "zdarma" a jde o zprávu typu
Permit, přičemž web vás tlačí do spěchu. - Token, který vás na akci navedl, přišel nevyžádaně.
- Adresa, které povolení uděluje práva, není adresa aplikace, kterou skutečně používáte.
Moderní peněženky se dnes snaží u rizikových podpisů zobrazit varování a přeložit technický obsah do lidské řeči. Berte to jako pomoc, ne jako záruku. Rozhodnutí podepsat je pořád na vás.
Co byste teď měli umět, a co zůstává nejisté
Po této lekci byste měli rozeznat rozdíl mezi jednorázovou transakcí a trvalým approvalem, chápat, proč se peněženka může vysát až se zpožděním, a vědět, že approval jde projít a odvolat samostatnou transakcí.
Co zůstává nejisté a co vám nikdo poctivě neslíbí:
- Kolik bude revokace stát. Poplatek závisí na síti v daný okamžik, žádnou fixní částku tu neuvádíme.
- Zda konkrétní kontrakt je, nebo není podvodný. Nástroj vám ukáže, komu jste co povolili, ale nálepku "zloděj" k tomu automaticky nedodá. Posouzení důvěryhodnosti je vždy na vás.
- Zda revokace pomůže včas. Pokud povolení zneužil útočník dříve, než jste ho stihli odvolat, prevence už nefunguje.
Toto je vzdělávací lekce z charliedesk Classroom. Neříkáme vám, co kupovat nebo prodávat. Ukazujeme, jak mechanika funguje, abyste se rozhodovali s otevřenýma očima.

