Phishing ve Web3: specifika a rizika pro digitální aktiva

Proč je phishing ve web3 odlišný (a nebezpečnější)

Ve web3 neověřujete pouze heslo. Podepisujete zprávy a transakce, které mohou udělit neodvolatelná práva nad vašimi aktivy (např. permit, setApprovalForAll, increaseAllowance, delegate). Phisher nepotřebuje znát vaši seed frázi: často stačí, abyste jednou podepsali škodlivý objekt. Navíc útok bývá multikanálový (DM na Discordu/Telegramu/Twitteru, falešný support, klon webu, škodlivé rozšíření, kompromitovaný oficiální účet), a bývá načasován během událostí (airdropy, minty, governance hlasování).

Mapa hrozeb: co útočník skutečně potřebuje

  • Podpis bez výdajů (EIP-191/EIP-712, SIWE): získání „nevinného“ podpisu, který v kombinaci s backendem otevře dveře (session hijack, API přístup, relay).
  • Schválení převodu (permit, allowance, setApprovalForAll): trvalé právo utrácet vaše tokeny/NFT.
  • Transakce s vedlejším efektem: neintuitivní volání (proxy, multicall, delegatecall) maskované jako „claim“ nebo „bridge“.
  • Únos identity: převzetí komunikačního kanálu (kompromitovaný Twitter/Discord bot) a šíření zavádějících odkazů.
  • Malware/rozšíření: keylogger, injekce do webové peněženky, manipulace UI podpisu.

Kritické podpisy: co musíte vědět i bez znalosti kódu

  • EIP-712 (typed data): čitelný podpis se strukturou. Zkontrolujte doménu (name, version, chainId, verifyingContract). Nesoulad s navštívenou webovou stránkou je červená vlajka.
  • Permit / Permit2: udělení allowance bez on-chain transakce. Zkontrolujte spender, amount, deadline. Pokud nechápete, proč je to potřeba, odmítněte.
  • setApprovalForAll (ERC-721/1155): globální přístup ke všem NFT v kolekci. Nikdy nepovolujte neznámému kontraktu/marketu.
  • SIWE (Sign-In With Ethereum): bezpečné, pokud je správně implementováno. Zkontrolujte origin, statement, nonce, chainId, expiration. Žádné „prázdné“ statementy.
  • Multicall: více volání v jednom podpisu. Peněženka by měla zobrazit každý krok. Pokud vidíte pouze „Contract Interaction“, je to rizikové.

Zavádějící stránky: jak vypadají a proč fungují

  • Doménové triky: vizuálně podobné názvy (l1nks, 0 vs o, .cm/.co/.ai místo .com), subdoménové pasti (app.project.com.attacker.xyz).
  • SEO/Ads hijack: placené reklamní odkazy nad organickým výsledkem, mirror blogy s falešným „Oficiálním linkem“.
  • „Mint/Claim“ landingy: odpočty, FOMO, „jen dnes“; bez odkazů na GitHub/audity; kontrakt bez verifikace.
  • Falešný support: live chat přesměrovaný na Telegram, žádá seed nebo „diagnostický podpis“.

Urgentní DM: sociální inženýrství v praxi

  • „Critical vulnerability – connect wallet to secure funds“: legitimní projekty nikdy nevyžadují připojení peněženky přes DM.
  • „Moderátor“ se stejným avatarem: zkontrolujte user ID, historii příspěvků, roli v oficiálním serveru.
  • „Přijali jste allowlist – potvrďte do 10 minut“: klasický FOMO tlak. Ověřte URL na oficiálních kanálech (připnuté tweety, web).

UI/UX ochrany, které byste měli mít zapnuté

  • Simulace transakcí: používejte peněženky a rozšíření, která simulují volání a zobrazují množství měn/tokenů odcházejících z účtu.
  • Náhled podpisu: čitelné EIP-712, varování při setApprovalForAll/permit. Bez čitelnosti – nepodepisujte.
  • Blocklist/Allowlist: automatické blokování známých drainerů; allowlist důvěryhodných kontraktů/domén.
  • Revoke panel: přímý přístup k odvolání allowances; pravidelný „úklid“.

Prevence na úrovni operační hygieny

  • Oddělení účtů: mint peněženka (nízký zůstatek, bez cenných NFT), trezor (hardware, offline), výplatní (stables). Nepřipojujte je bezdůvodně.
  • Hardware peněženka: vyžaduje fyzické potvrzení; čtěte text na displeji, nikoliv pouze v prohlížeči.
  • Sandbox pro minty: samostatný profil prohlížeče, žádná další rozšíření, čistá cache.
  • Rozšíření: minimalizujte počet, pravidelně provádějte audity, instalujte pouze z ověřených zdrojů.
  • DNS/HTTPS: URL zapisujte ručně nebo používejte záložky; vždy kontrolujte certifikát/doménu.

Incident response: co dělat, když jste něco podepsali

  1. Odpojte se: okamžitě zavřete stránku/rozšíření, přepněte síť v peněžence (zruší pending transakce).
  2. Revoke: pomocí důvěryhodného nástroje odvolejte allowances (ERC-20, ERC-721, ERC-1155), zejména spender z posledních interakcí.
  3. Přesuňte aktiva: z „znečištěné“ adresy na bezpečnou (hardware) – pozor na reentrancy/poison tokeny, posuďte riziko.
  4. Rotujte klíče: pokud máte smart účet s session keys nebo guardians, změňte konfiguraci; u EOAs zvažte migraci.
  5. Oznámení: projektu/komunitě (pro zablokování odkazů), burze (pokud je možnost zmrazení), sledovacím službám.
  6. Forenzika: uložte tx hash, doménu, obsah podpisu (pokud jej máte), screenshoty; pomohou při varování ostatních.

Konkrétní červené vlajky při podpisu

  • Podpis obsahuje neznámý kontrakt v poli verifyingContract nebo jiný chainId než máte v peněžence.
  • Žádá se neomezený allowance (MaxUint256) pro token, se kterým by stránka neměla pracovat.
  • Podpis neobsahuje nonce/deadline (věčná práva), nebo má nesmyslnou expiráci daleko v budoucnu.
  • Peněženka zobrazuje pouze „Contract Interaction“ bez detailů, přestože by měla ukázat rozpis EIP-712.

Phishingové DM: vzorové texty a správné reakce

  • „Hi Admin from <Project>, detected unusual activity. Verify here: <link> within 5 min.“ – ignorujte, nahlaste. Ověřujte pouze na oficiálním webu z vlastní záložky.
  • „You won allowlist! Connect wallet to confirm.“ – ověřte ve oficiálním kanálu (připnutý příspěvek). Nikdy neklikejte na odkazy z DM.
  • „We’re from support, send seed phrase / private key to recover.“ – nikdy. Legitimní support nežádá seed ani soukromý klíč.

Specifika DeFi a NFT útoků

  • DeFi: podvržené „claim rewards“, které obsahují approve pro drainer; falešné „bridge“ dApps s multicall.
  • NFT: klony marketplace požadující setApprovalForAll; airdropy „poison NFT“ s URL v metadatech.

Governance a týmové procesy proti phishingu

  • Komunikační politika: projekt nikdy neposílá odkazy přes DM; všechny oficiální odkazy jsou v one-pageru a připnuté.
  • Change management: před spuštěním mintu/claimu 24–48 hodin dopředu publikujte adresu kontraktu, chain, odkazy na audit.
  • Role a práva: používejte multisig na důležité změny; oddělené účty pro sociální média s 2FA/hardware klíči.
  • Incident drill: připravené šablony oznámení, kontakty na indexery, poskytovatele RPC, monitoring (alerty na nová schválení).

Checklist před kliknutím na „Sign“

  1. URL/doména odpovídá oficiálnímu zdroji? Není to subdoména cizí domény?
  2. Je podpis srozumitelný (EIP-712 čitelný) a rozumím proč ho dávám?
  3. Je spender/verifyingContract známý a auditovaný? Mohu omezit amount a deadline?
  4. Simulace transakce vrací očekávaný výsledek (žádné úniky tokenů, žádná skrytá volání)?
  5. Mám aktivní revoke nástroj a nízký zůstatek v této peněžence?

Dobrý zvyk: pravidelné odvolávání oprávnění (revoke)

Jednou týdně/po větších eventech zkontrolujte a odvolejte nepotřebné allowances/approvals. Sledujte především univerzální schválení (setApprovalForAll) a neomezené allowance vůči kontraktům, které již nepoužíváte.

Vzdělávání týmu a komunity: co komunikovat

  • „Nikdy žádné DM s odkazem od nás.“ – opakujte při každém velkém oznámení.
  • „Žádný support nikdy nežádá seed, private key, remote desktop.“
  • „Pravidelně zveřejňujeme seznam oficiálních odkazů a známých phishingových domén.“
  • „Zveřejníme adresy kontraktů před spuštěním; cokoli jiného je falešné.“

Shrnutí pro rozhodovatele

Phishing ve web3 stojí na podpisech a schváleních, nejen na heslech. Ochrana není jednorázová – je to kombinace technických opatření (simulace, čitelné EIP-712, revoke, oddělené peněženky), procesů (komunikační politika, incident drill, audit rozšíření) a vzdělávání (anti-DM, ověřování odkazů, červené vlajky). Bez ohledu na to, jak lákavý je airdrop či „urgentní nabídka“, platí: pokud si nejste jistí, nepodepisujte.