Zrušení bezpečnostních oprávnění v dashboardu

Proč provádět pravidelný audit peněženky

Ekosystém kryptoměn je dynamický a povolení (approvals) udělených smart kontraktům se v průběhu času hromadí. Mnohá z nich jsou „nekonečná“ (unlimited), navázaná na nepřehledné proxy a samotný kód se v čase mění (upgradeable implementace). Pravidelný audit peněženky pomocí bezpečnostních dashboardů a nástrojů typu revoke minimalizuje riziko vyprázdnění peněženky při exploitu dApp, phishingu nebo chybné integraci. Tento článek popisuje, co přesně kontrolovat, jak číst výsledky a jaká rozhodnutí činit.

Co jsou approvals a proč představují riziko

  • ERC-20 allowance: povolení, aby adresovaný kontrakt (spender) mohl utrácet vaše tokeny. Typicky je nastaveno na „max uint“ (nekonečné) pro pohodlí uživatelského prostředí.
  • ERC-721/1155 setApprovalForAll: globální oprávnění přesouvat všechny NFT/partie jednoho kontraktu. Při útoku postačí jediný transferFrom.
  • Permit / Permit2: podpisem (EIP-2612, Permit2) udělujete off-chain schválení, které se on-chain uplatní později. Výborné pro UX, ale lákavé pro phishery (nekonečné a bez interakce peněženky při samotné úhradě).
  • Session/Delegation: herní dApps a nástroje používají dočasné „session keys“, delegace nebo relayer schémata. Pokud expirace nebo rozsah oprávnění nejsou přísné, riziko přetrvává.

Jaké události sledovat na blockchainu

Při ruční validaci v explorere věnujte pozornost:

  • Approval (ERC-20), ApprovalForAll (ERC-721/1155) – nová a změněná povolení.
  • Permit, Permit2 – aplikovaná podpisová schválení, deadline, nonce a value.
  • IncreaseAllowance/DecreaseAllowance – zda dApp nepoužívá bezpečnější inkrement/dekrement.
  • Proxy upgrade a ImplementationChanged – u UUPS/beacon/proxy sledujte změny implementace; stará approvals tak mohou „změnit chování“.

Bezpečnostní dashboardy: co od nich očekávat

Moderní dashboardy agregují vaše povolení napříč sítěmi a třídí je podle rizika. Obvykle zobrazují:

  • Seznam spenderů s ikonou důvěryhodnosti (verified contract, audit, populární dApp) a proxy chain (transparentní vs. upgradeable).
  • Rozsah: unlimited vs. limitované částky; u NFT – všechny položky vs. konkrétní tokenId.
  • Čas poslední aktivity: stará „zapomenutá“ povolení jsou hlavními kandidáty pro revoke.
  • Multichain zobrazení: EVM sítě (Ethereum, L2, sidechains) i nezávislé řetězce (pokud podporovány).
  • Akční tlačítka: Revoke, Reduce (snížení limitu), případně Batch revoke s odhadem gasu.

Rozhodovací rámec: zrušit, snížit, nebo ponechat

  1. Kritická a neaktivní povolení: neznámí nebo dlouhodobě nepoužívaní spenders → Revoke.
  2. Důvěryhodné, často používané dApps: zvažte Reduce na just-in-time částku nebo časově omezené Permit.
  3. NFT tržiště: pokud neprodáváte → zrušte setApprovalForAll, v případě potřeby jej znovu udělte.
  4. Bridge a DeFi kontrakty: ponechte pouze nezbytné; preferujte kontrakty s permit-like flow, pull-based rozhraním a scoped approvals.

Specifika podle tokenového standardu

  • ERC-20: preferujte DecreaseAllowance na 0, pak Increase na požadovanou částku. Předejdete typické race condition při změně limitu.
  • ERC-721/1155: vždy upřednostněte per-item approvals před ApprovalForAll, pokud to tržiště umožňuje.
  • Permit/Permit2: podepisujte s nízkou hodnotou, krátkou expirácí a kontrolujte domain separator, chainId a verifyingContract v EIP-712 okně.

Typické útoky a jak je dashboard odhalí

  • Malicious spender: neznámý kontrakt s unlimited allowance – nástroj jej zvýrazní jako vysoké riziko.
  • Upgrade trap: legitimní proxy získal novou implementaci; dashboard zobrazí implementation hash a datum změny.
  • Permit phishing: podepsaná nekonečná povolenka přes hezké modální okno; v historii uvidíte použitý Permit s enormní hodnotou.
  • Leakage approval přes zapomenuté dApps: starý farmovací kontrakt má stále práva – uvidíte nulovou aktivitu > 90 dnů.

Workflow pravidelného auditu (měsíční rytmus)

  1. Inventarizace: projděte všechny sítě, kde máte aktiva. Exportujte seznam spenderů a povolení (CSV).
  2. Skórování rizika: označte neznámé/nezveřejněné spendery, unlimited limity a stará povolení (> 30–90 dní bez aktivity).
  3. Akce: revoke/limit. Při větším množství využijte batch – sjednotíte poplatky.
  4. Simulace: nové transakce procházejte simulátorem; potvrďte, že po revoke dApp stále funguje (jinak udělte minimálně nové povolení).
  5. Monitorování: zapněte upozornění (push/e-mail) na nové Approval* eventy z vašich adres.

Cross-chain a L2 specifika

Každý řetězec znamená samostatnou sadu povolení. L2 mají levné transakce, proto je rozumné častěji revokovat. Dávejte pozor na:

  • Canonical vs. third-party bridges: pouze canonical kontrakty by měly mít práva k vašim aktivům.
  • Multisig a trezory: u treasury pravidelně auditujte Module rozšíření (Safe Modules) a delegace.
  • Rollup upgrades: při zásadní aktualizaci sítě znovu ověřte integritu spenderů (nové adresy, migrace).

Account Abstraction a session oprávnění

Při používání EIP-4337 peněženek sledujte:

  • Pluginy/Modules: které mohou přenášet práva na třetí kontrakty.
  • Session keys: krátké expirace, omezené call-targets a value.
  • Paymasters: nepovolujte neomezené výdaje, pokud to není nezbytné.

Operační hygiena: pro jednotlivce a týmy

  • Hardwarová peněženka na hodnoty, hot wallet na interakce; nikdy nesdílejte povolení mezi nimi.
  • Sandbox pro testy: novou dApp testujte s čerstvou adresou a minimálním zůstatkem.
  • Oddělené profily prohlížeče a rozšíření; minimalizujte oprávnění doplňků.
  • Signing hygiena: čtěte EIP-712; kontrolujte chainId, verifyingContract, spender, value, deadline.
  • DNS/typo-squatting: používejte záložky; nikdy neklikejte na odkazy z DM.

Náklady, poplatky a strategie revokací

Revoke je standardní transakce, za kterou se platí gas. U drahého L1:

  • Upřednostněte nejrizikovější povolení a ta s velkým zůstatkem tokenu.
  • Zvažte časování (nižší gas), případně batch revoke, pokud nástroj podporuje.
  • Pro ERC-20 využijte DecreaseAllowance na 0 (někdy levnější než plný revoke).

Incident reakce: co dělat při kompromitaci

  1. Okamžitě odpojit a zrušit všechna povolení vůči podezřelému kontraktu (ve všech sítích).
  2. Migrace aktiv: přenos do studené peněženky nebo nového trezoru; zvažte permit-less převody (pokud existují).
  3. Revokace session/pluginů a pozastavení modulů (multisig).
  4. Forenzní logy: exportovat historii povolení a transakcí; nahlásit adresy monitorovacím službám a tržištím.

Co by měl vědět každý začátečník

  • „Connect wallet“ ≠ „bezpečné“: samotné připojení je neškodné, riziko vzniká při podpisu nebo schválení.
  • „Sign to proceed“ může být permit: pokud nevíte, co podepisujete, nedělejte to. Hledejte spender/value/deadline.
  • Revoke ≠ refund: zrušení práva nevrací ukradené prostředky, ale zastavuje další škody.

Checklist měsíčního auditu (TL;DR)

  • Projít všechny sítě a exportovat povolení.
  • Označit unlimited, neznámé spendery a stará/neaktivní práva.
  • Revoke/Reduce podle rizika; u NFT vypnout ApprovalForAll, pokud se neprodává.
  • Zapnout upozornění na nové Approval* a Permit* eventy.
  • Ověřit proxy implementace a změny kódu u důležitých dApps.
  • Zkontrolovat rozšíření, prohlížeč a oddělení „hot/cold“ peněženek.

Bezpečnost peněženky není jednorázový akt, ale proces. Revoke a bezpečnostní dashboardy poskytují přehled a páku pro rychlé zásahy, ale rozhodující je disciplína: minimální povolení, krátké expirace, pravidelný audit a zdravá skepse při podepisování. Takto se z pohodlí „nekonečných approvals“ stane kontrolovaný a auditovatelný bezpečnostní režim, který ochrání vaše aktiva i v době, kdy se ekosystém mění rychleji než dokumentace dApps.