Phishing na zatwierdzenia tokenów: cichy złodziej portfela
Phishing na zatwierdzenia opróżnia portfel, nie dotykając nigdy frazy seed. Podpisujesz uprawnienie, a atakujący później przenosi twoje tokeny. Oto jak to działa i jak się bronić.
Pogłęb temat z AI
Kliknij → prompt skopiowany → wklej w czacie AI
Phishing na zatwierdzenia opróżnia portfel, nie dotykając nigdy frazy seed. Gdy "zatwierdzasz" (approve) token dla smart kontraktu, nadajesz temu kontraktowi prawo do przenoszenia tych tokenów w twoim imieniu. Oszuści nakłaniają cię do zatwierdzenia złośliwego kontraktu, a potem — w dogodnym dla siebie momencie — wyprowadzają wszystko. Twoja fraza odzyskiwania nie zostaje w żaden sposób ujawniona. Kradzież to uprawnienie, które sam podpisałeś.
To krótka odpowiedź. Reszta tej strony wyjaśnia mechanizm stojący za tym uprawnieniem, dlaczego niektóre zatwierdzenia wyglądają całkowicie niewinnie i jak zamknąć te drzwi.
Dlaczego zatwierdzenie to nie to samo co przelew
Na Ethereum i każdym łańcuchu EVM tokeny ERC-20 nie leżą "w" twoim portfelu tak, jak gotówka w kieszeni. Salda żyją wewnątrz kontraktu tokena, przypisane do twojego adresu. Aby pozwolić aplikacji dApp — giełdzie DEX, rynkowi pożyczkowemu, stronie mintingu — przenosić twoje tokeny, wysyłasz transakcję approve, która ustawia allowance: kwotę, jaką kontrakt-wydawca może od ciebie pobrać.
To normalne i konieczne. Uniswap nie wymieni twojego USDC, dopóki go nie zatwierdzisz. Problem w tym, że allowance trwa dalej po zakończeniu transakcji. Pozostaje aktywne, dopóki go nie cofniesz lub nie wyczerpiesz. A jeśli wydawca jest złośliwy, allowance to stałe prawo do wypłaty z twojego salda.
Dla NFT odpowiednikiem jest setApprovalForAll. Zamiast kwoty przełącza ono wartość logiczną, która nadaje kontraktowi prawo do przenoszenia każdego NFT, jakie masz w danej kolekcji — obecnego i przyszłego. Jeden podpis, cała kolekcja.
Nielimitowane zatwierdzenia i podpisy bez gazu
Dwa ułatwienia projektowe czynią to znacznie groźniejszym, niż być musi.
Pierwsze to nielimitowane zatwierdzenie. Aby uniknąć płacenia gazu za nowe zatwierdzenie przed każdą transakcją, większość aplikacji dApp domyślnie prosi o 2^256 - 1 — praktycznie nieskończone allowance. Wygodne, a zarazem czek in blanco. Jeśli ten wydawca kiedykolwiek zostanie przejęty lub był złośliwy od początku, może opróżnić całe saldo tego tokena, a nie tylko kwotę, którą chciałeś wymienić.
Drugie to Permit i Permit2. Pozwalają zatwierdzić tokeny przez podpisanie wiadomości off-chain zamiast wysyłania transakcji on-chain — to zatwierdzenie bez gazu. I właśnie dlatego są niebezpieczne. Złośliwa strona pokazuje coś, co wygląda na niewinne "podpisz, aby kontynuować" lub "podpisz, aby się zalogować". Nie ma opłaty za gaz, żadnego widocznego przelewu, niczego, co krzyczy "transakcja". Ale ten podpis to ważne, wielokrotnego użytku uprawnienie, które pozwala kontraktowi atakującego pobrać twoje tokeny później. Wiele zestawów drainerów prowadzi dziś atak właśnie od podpisów Permit2.
Jak oszustwo do ciebie trafia
Kontrakt to tylko połowa sprawy. Atakujący nadal musi postawić cię przed oknem zatwierdzenia, byś uwierzył, że jest ono legalne. Najczęstsze metody dostarczenia:
- Fałszywe strony mintingu — "limitowany drop" z odliczaniem, gdzie przycisk mintingu w rzeczywistości prosi o
setApprovalForAlllub podpis Permit. - Fałszywe odbiory airdropów — "kwalifikujesz się, połącz i odbierz", gdzie odbiór zatwierdza drainer.
- Sklonowane aplikacje dApp — idealna kopia prawdziwej giełdy lub mostu na łudząco podobnej domenie, często promowana reklamami lub przez przejęty Discord.
- Okna "weryfikacji portfela" — wyskakujące okienko twierdzące, że twój portfel musi być "zweryfikowany", "zsynchronizowany" lub "ponownie zwalidowany", które jest po prostu zatwierdzeniem w przebraniu.
Wspólny mianownik to pośpiech plus prośba o podpis. Zobacz klony stron phishingowych, by poznać, jak fałszowany jest front-end, oraz zestawy drainerów portfeli, by zrozumieć branżę stojącą za zapleczem.
Co tak naprawdę nadaje każdy podpis
| Typ podpisu / zatwierdzenia | Co nadaje | Ryzyko |
|---|---|---|
ERC-20 approve (limitowane) | Wydawca może pobrać do ustalonej kwoty jednego tokena | Ograniczone do tej kwoty |
ERC-20 approve (nielimitowane) | Wydawca może pobrać całe saldo jednego tokena, bezterminowo | Pełna strata tego tokena |
| Podpis Permit / Permit2 | Zatwierdzenie off-chain, bez gazu — ta sama moc co approve, często nielimitowane | Wysokie: wygląda jak niewinny podpis |
setApprovalForAll (NFT) | Wydawca może przenieść każde NFT w kolekcji, teraz i w przyszłości | Pełna strata tej kolekcji |
| Zwykła transakcja przelewu | Przenosi określoną kwotę jednorazowo | Widzisz dokładnie, co opuszcza portfel |
Wzorzec jest prosty: im bardziej prośba ukrywa to, co autoryzuje — brak kwoty, brak widocznego przelewu, brak gazu — tym bardziej zasługuje na podejrzliwość.
Jak się bronić
- Czytaj to, co podpisujesz. Nowoczesne portfele dekodują zatwierdzenia i wiadomości Permit. Jeśli okno pokazuje
setApprovalForAll, nielimitowaną kwotę lub nieznanego wydawcę, zatrzymaj się. - Wybieraj zatwierdzenia limitowane. Gdy dApp pozwala ustawić własne allowance, zatwierdzaj tylko tyle, ile wymaga transakcja. Kosztuje to z czasem nieco więcej gazu, ale usuwa czek in blanco.
- Używaj narzędzia do cofania zatwierdzeń. Usługi z tej kategorii — revoke.cash oraz weryfikatory zatwierdzeń tokenów w eksploratorach bloków (na przykład w Etherscan) — pokazują każde allowance nadane przez twój adres i pozwalają je cofnąć.
- Cofaj okresowo nieaktualne zatwierdzenia. Zatwierdzenia dla aplikacji dApp, których już nie używasz, to czyste stałe ryzyko. Wyczyść je.
- Mintuj z osobnego gorącego portfela. Trzymaj portfel z małym saldem do mintingu i odbierania. Jeśli zatwierdzi coś złego, strata jest ograniczona. Nigdy nie mintuj z portfela z głównymi środkami.
Uczciwe ograniczenia
Cofanie nie jest darmowe. Każde cofnięcie to transakcja on-chain i kosztuje gaz — dlatego ludzie pozwalają zatwierdzeniom się kumulować.
Co ważniejsze, to broni tylko przed przyszłą kradzieżą. Jeśli drainer już pobrał twoje tokeny, cofanie nic nie da — wykonanego przelewu nie da się odwrócić. Okno na działanie jest zanim atakujący uruchomi pobranie, a nie po.
I punkt, który zaskakuje: portfel sprzętowy tego nie powstrzyma. Portfele sprzętowe chronią klucz prywatny przed wyciągnięciem. Nie powstrzymają cię przed podpisaniem złośliwego zatwierdzenia, bo podpisujesz je dobrowolnie. Urządzenie pokazuje okno, ty je zatwierdzasz. Jedyną obroną jest zrozumienie, co okno autoryzuje — co jest też ostatnią linią obrony dla bezpieczeństwa twojej frazy seed.
FAQ
Czy phishing na zatwierdzenia może ukraść moje krypto bez frazy seed? Tak. To cały mechanizm. Nigdy nie ujawniasz frazy. Podpisujesz zatwierdzenie lub wiadomość Permit, która nadaje kontraktowi prawo do przenoszenia twoich tokenów, a atakujący wykorzystuje to uprawnienie później. Fraza seed pozostaje prywatna przez cały czas.
Czym jest nielimitowane zatwierdzenie? To allowance ustawione na maksymalną możliwą wartość, więc kontrakt-wydawca może przenosić całe twoje saldo tego tokena, wielokrotnie, bez limitu i bez wygaśnięcia. Wiele aplikacji dApp prosi o nie domyślnie, by oszczędzić ci gazu — ale to czek in blanco, jeśli wydawca okaże się złośliwy.
Czy podpisy Permit bez gazu są niebezpieczne? Mogą być. Podpis Permit lub Permit2 niesie tę samą władzę co zatwierdzenie on-chain, ale przychodzi jako zwykłe okno "podpisz tę wiadomość" bez opłaty za gaz, więc wygląda niewinnie. Traktuj każdą prośbę o podpis, która wspomina token, wydawcę lub Permit, tak poważnie jak transakcję.
Jak cofnąć zatwierdzenia tokenów? Połącz portfel z narzędziem do cofania zatwierdzeń, takim jak revoke.cash, lub użyj weryfikatora zatwierdzeń tokenów w swoim eksploratorze bloków (na przykład w Etherscan). Przejrzyj listę allowance nadanych przez twój adres i cofnij wszystko nielimitowane, nieznane lub należące do aplikacji dApp, której już nie używasz. Każde cofnięcie kosztuje gaz.
Przeczytaj też
Zestawy drainerów portfeli: gospodarka scam-as-a-service
Drainer portfela to złośliwy kod sprzedawany jako gotowy zestaw, który opróżnia portfel w chwili, gdy podpiszesz spreparowaną transakcję. Oto jak działa ten biznes i jak się przed nim bronić.
Fałszywe airdropy — jak je rozpoznać
Fałszywy airdrop kusi darmowymi tokenami, by zwabić Cię na stronę, która opróżnia portfel — przez złośliwe zatwierdzenie, opłatę z góry albo zatruty token scamowy leżący już na Twoim adresie. Oto jak działa każdy wariant i jak się chronić.
Jak bezpiecznie przechowywać seed phrase (bez frazesów)
Seed phrase to 12 lub 24 słowa kontrolujące każdą monetę w portfelu. Oto realny model zagrożeń — pożar, kradzież, przymus, wycieki z chmury — i przed czym chroni każda metoda.