Phishing ve Web3: Detekce podvodných podpisů, falešných webů a naléhavých zpráv

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

Ve web3 neověřujete pouze heslo. Podpisujete 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á podpora, 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 reálně potřebuje

  • Podpis bez výdajů (EIP-191/EIP-712, SIWE): vyžádá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í klamavých odkazů.
  • Malware/rozšíření: keylogger, injekce do webové peněženky, manipulace UI podpisu.

Podpisy, které jsou kritické: co musíte vědět i bez kódu

  • EIP-712 (typed data): čitelný podpis se strukturou. Zkontrolujte doménu (name, version, chainId, verifyingContract). Nesoulad s navštíveným webem je červená vlajka.
  • Permit / Permit2: udělení allowance bez on-chain transakce. Podívejte se na 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é.

Klamavé 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 odkazem“.
  • „Mint/Claim“ landingy: odpočet, FOMO, „jen dnes“; bez přesměrování na GitHub/audity; kontrakt bez verifikace.
  • Falešná podpora: Live chat přesměrovaný na Telegram, žádají seed nebo „diagnostický podpis“.

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

  • „Critical vulnerability – connect wallet to secure funds“: legitimní projekty nikdy nežádají připojení peněženky přes DM.
  • „Moderator“ se stejným avatarem: zkontrolujte user ID, historii příspěvků, roli v oficiálním serveru.
  • „Byli jste přijati do allowlistu – 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í měny/tokeny odcházející z účtu.
  • Náhled podpisu: čitelné EIP-712, varování u 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í (stablecoiny). Nepřipojujte je bezdůvodně.
  • Hardware peněženka: vyžaduje fyzické potvrzení; čtěte text na displeji, ne 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ě auditujte, instalujte pouze z ověřených zdrojů.
  • DNS/HTTPS: ručně zapisujte URL 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).
  2. Revoke: přes důvěryhodný nástroj odvolejte allowances (ERC-20, ERC-721, ERC-1155), zejména spender z posledních interakcí.
  3. Přesuňte aktiva: ze „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 se session keys nebo guardians, změňte konfiguraci; u EOAs zvažte migraci.
  5. Oznamte: projektu/komunitě (pro zablokování odkazů), burze (pokud je šance na zmrazení), sledovacím službám.
  6. Forenzika: uložte tx hash, doménu, obsah podpisu (pokud máte), screenshoty; pomohou při varování ostatních.

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

  • Podpis zmiňuje 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 expiraci daleko v budoucnosti.
  • Peněženka zobrazuje pouze „Contract Interaction“ bez detailů, přestože by měla zobrazit rozepsaný 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 v oficiálním kanálu (připnutý příspěvek). Nikdy neklikejte na odkaz v DM.
  • „We’re from support, send seed phrase / private key to recover.“ – Nikdy. Legitimní podpora nežádá seed ani soukromý klíč.

Specifika DeFi a NFT útoků

  • DeFi: podvržené „claim rewards“, které obsahují approve na drainer; falešné „bridge“ dApps se multicall.
  • NFT: klony marketplace, které vyžadují 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 předem zveřejněte adresu kontraktu, chain, odkazy na audity.
  • Role a práva: používejte multisig pro 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ý (čitelné EIP-712) a rozumím, proč ho dávám?
  3. Je spender/verifyingContract známý a auditovaný? Můžu omezit amount a deadline?
  4. Simulace transakce vrací očekávaný výsledek (žádné odlivy tokenů, žádná skrytá volání)?
  5. Mám aktivní revoke nástroj a nízký zůstatek v této peněžence?

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

Jednou týdně/po větších událostech zkontrolujte a odvolejte nepotřebná allowances/approvals. Sledujte zejména 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 neposílat DM s odkazem od nás.“ – opakujte to při každém důležitém oznámení.
  • „Žádná podpora nepožaduje seed, private key nebo vzdálený desktop.“
  • „Pravidelně publikujeme seznam oficiálních odkazů a známých phishing domén.“
  • „Zveřejňujeme adresy kontraktů před spuštěním; cokoli jiného je falešné.“

Shrnutí pro rozhodovatele

Phishing ve web3 se opírá o podpisy a schválení, nikoliv pouze o hesla. 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 jisti, nepodepisujte.