Mobil jako kritická hranice bezpečnosti v krypto ekosystému
Smartphone je dnes primárním nástrojem pro správu digitálních aktiv a zároveň nejzranitelnějším článkem řetězce. Útočné vektory se soustředí kolem tří oblastí: QR kódy (phishing, neviditelná manipulace parametrů), signer malware (škodlivé aplikace a překrývající vrstvy, které vynutí neautorizované podpisy) a root/jailbreak (obcházení bezpečnostních modelů operačních systémů). Následující článek mapuje technická rizika, reálné scénáře útoků, detekční techniky a doporučené architektonické i procesní mitigace pro jednotlivce, týmy i vývojáře peněženek a dApps.
Model hrozeb: co vlastně chránit a před kým
- Cíle: privátní klíče a seed fráze, schvalování on-chain oprávnění (approvals), podpisy transakcí a zpráv (EIP-191/712/Sign-In with Ethereum), session klíče (WalletConnect), biometrické zámky, přístupy k trezorům, clipboard a obrazovka.
- Útočníci: škodlivé aplikace (APK/IPA), adware/spyware, překrývané peněženky, klamavé deep linky, fyzický útočník se zařízením, síťový MITM, „legitimní“ SDK s exfiltrací dat.
- Vektory: QR kódy, deeplinky/URL schémata, Android Intents, accessibility a overlay, trojanizované klávesnice, manipulace s uložištěm a keychain/keystore API, root/jailbreak hooky (Frida/Magisk/Substrate).
QR kódy: pohodlí vs. neviditelné změny parametrů
QR kód je pouze transportní formát. Jeho riziko vyplývá z toho, že obsah (adresy, chainID, amount, calldata, endpoint) je pro člověka nečitelný:
- Phishing QR: Například kód na „claim“ airdropu odkazuje na falešnou doménu, která po deeplinku vyžádá škodlivé schválení (infinite approval).
- Podvrh příjemce/chainu: Kód vypadá jako USDC na mainnetu, ale obsahuje token na jiném chainID s nízkou hodnotou nebo odkaz na kontrakt permit() s vysokým upřesněním.
- Stitching a pixel swap: Tištěné nebo digitální bannery s vyměněným QR vedou do legitimního UI, ale s předvyplněným parametrem to=attacker.
Mitigace: vždy zobrazovat před podpisem přehledné, lidsky čitelné shrnutí (adresa, částka, chain, funkce), validovat doménu přes Verified Domains/ENS, používat QR parity check (např. krátký hash parametrů vedle QR) a preferovat read-only simulaci transakce před odesláním.
Deeplinky, URL schémata a Android Intents: tichá eskalace privilegií
Mobilní dApps a peněženky komunikují přes schémata (ethereum:, wc:), Universal Links/App Links a Intents. Chybná validace může vést k „podepiš cokoliv“:
- Open redirect: dApp přesměruje na škodlivý odkaz, peněženka jej přijme bez doménové vazby.
- Parameter smuggling: legitimní deeplink, ale s vloženým
calldataměnícím funkci ztransfer()naapprove(). - Cold start důvěra: peněženka po spuštění nedostatečně zobrazuje source doménu, čímž maskuje původ požadavku.
Mitigace: striktně vázat podepsané žádosti k ověřené doméně (origin binding), per-origin session klíče, explicitní potvrzení chainID a kontraktu, denylist/allowlist schémat, a defenzivní parsing všech parametrů deeplinku.
Signer malware: útok na moment rozhodnutí
Signer malware nekrade přímo seed; jeho cílem je dosáhnout, aby uživatel legitimním signerem podepsal něco škodlivého:
- Overlay/tapjacking: průhledná vrstva překryje tlačítko „Detail“ a uživatel kliká na „Approve max“.
- Zneužití accessibility: malware čte obrazovku, extrahuje adresy a mění je v clipboardu; dokonce simuluje dotyky.
- Exfiltrace z klávesnice: „moderní klávesnice“ loguje seed a hesla; kombinováno s povoleními pro screenshoty.
- Falešná peněženka: rebranding známé aplikace, která podstrčí podpisy Permit2/approval s vysokým limitem.
Mitigace: zakázat obrazovkové overlaye na kritických obrazovkách (FLAG_SECURE, filter touches when obscured), detekovat accessibility služby a přepnout do „zvýšené citlivosti“ (vyžadovat dodatečné potvrzení, rozložit UI, zablokovat automatické potvrzování), zakázat externí klávesnice při zadávání seedu, povolit pouze lokálně generované klávesnice bez predikce.
Root/jailbreak: když sandbox přestane být sandboxem
Root (Android) a jailbreak (iOS) ruší zásadní garance: izolaci aplikací, integritu systémových API a ochranu keychain/keystore. Útočník může injektovat hooky (Frida, Magisk, Substrate), obcházet SSL pinning, číst paměť a live-patchovat aplikaci.
- Následky: získání přístupu k nechráněným klíčům, zachytávání obrazovky a dotyků, bezprostřední manipulace se signerem.
- Detekce: kontrola přítomnosti su, známých knihoven/hooků, integrity boot chainu, Play Integrity/App Attest signálů, anomálií v procfs/entitlements.
- Rozumná reakce: buď „tvrdé stop“ (nepovolit kritické operace), nebo „degradovaný režim“ (pouze read-only, bez podpisů a zobrazování seed-recovery obrazovek).
Síť a MITM: když podepisujete to, co nevidíte
I bez rootu stačí slabý TLS model a podepisujete data, která útočník v síti změnil:
- DNS hijack / captive portal: přesměrování dApp API; změněná calldata.
- Chybějící certificate pinning: akceptace útočníkova certifikátu.
Mitigace: TLS 1.3, cert-pinning (se zabezpečeným obcházením přes remote config a rotaci), ověřování chainId a rpc origin, lokální simulace transakcí bez důvěry v backend.
Approvals, blind signing a EIP-712: nebezpečí „OK, OK, OK“
Nejčastější ztráty jsou přes schválení (ERC-20/721/1155) a blind signing zpráv:
- Infinite approval: útočník získá právo převádět vaše tokeny, aniž byste cokoliv „odeslali“.
- Neparsované EIP-712: peněženka nezobrazí čitelnou strukturu; uživatel potvrdí něco, čemu nerozumí.
Mitigace: výchozí limitovaná schválení, u neznámých kontraktů vyžadovat simulační diff (očekávaný stav vs. po podpisu), vysvětlit spender a rozsah oprávnění, povolit rychlý revoke panel a automatické připomínky při dlouhodobě otevřených schváleních.
Session klíče a WalletConnect: útoky na delegovanou důvěru
Session klíče jsou pohodlné, ale rizikové, pokud nejsou omezeny:
- Přesycené session: bez omezení metod, času a chainů; útočník je zneužije pro batch approvals.
- Re-binding domény: stejná session použitá s jinou doménou (origin).
Mitigace: per-origin per-chain session, time-boxed a scope-limited (pouze metody potřebné pro UX), vizuálně zvýraznit obnovu/„reconnect“ a vynucovat reautentizaci při rizikových voláních.
Úložiště klíčů: Secure Enclave/Keystore nestačí, pokud UI selže
Hardware-backed klíče (Secure Enclave, StrongBox, TEE) chrání proti exfiltraci, nikoliv proti špatnému rozhodnutí uživatele. Proto je klíčové:
- vyžadovat biometriku při každém rizikovém podpisu (nejen při odemknutí aplikace),
- izolovat import/export seedu do samostatných procesů (bez screenshotů, bez clipboardu),
- neukládat seed v plaintext JSON (žádné „export.txt“ do stažených souborů),
- umožnit externí signer (hardwarová peněženka) a air-gapped QR podpis.
Detekce a hardening aplikací: od attestation po anti-hooking
- Attestation: Play Integrity/SafetyNet (Android), DeviceCheck/App Attest (iOS) – vázat funkce na integritu zařízení a verzi aplikace.
- Anti-hooking: detekovat Frida/Magisk/Substrate, randomizovat symboly, anti-debug spouštět pouze při kritických akcích.
- SSL pinning + remote pin rotace: minimalizovat MITM, ale počítat s možností recovery cesty.
- Privacy by design: minimální logování, žádná citlivá data v crash reportech, FLAG_SECURE na citlivých obrazovkách.
Lidské faktory a školení: rozhodnutí v posledním kroku
- Čtení obrazovek podpisu: trénovat rozpoznávání approve/permit/setApprovalForAll vs. transfer.
- „Dvojitý kanál“: při větších částkách potvrzení na jiném zařízení (hardware signer nebo desktop s ověřením adresy na displeji zařízení).
- Hygiena QR: skenovat pouze z důvěryhodných zdrojů; nevěřit náhodným QR v skupinách a reklamách.
Incident response: když se to stane
- Okamžitý revoke: odvolat approvals pro ohrožené tokeny; v případě krádeže se pokusit o whitehat rescue s multisigem.
- Migrace klíčů: považovat zařízení za kompromitované, přesunout aktiva na novou peněženku se fresh seed.
- Forenzní stopa: uložit tx hashe, verze aplikací, snímky deeplinků; nahlásit marketplace/mosty kvůli blacklistingu adres.
Tabulka: typ útoku – symptomy – rychlá obrana
| Útok | Symptomy | Okamžitá akce | Prevence |
|---|---|---|---|
| Phishing QR | Neočekávané approve/permit, neznámá doména | Zrušit podpis, zkontrolovat doménu/ENS | Simulace, origin binding, hash vedle QR |
| Signer overlay | Tlačítka „nepasují“, neobvyklé překrytí | Zavřít aplikaci, vypnout accessibility/overlay | FLAG_SECURE, filter touches, zvýšený režim |
| Clipboard hijack | Adresa se změní po vložení | Ověřit poslední znaky na HW signer displeji | Zakázat externí klávesnice a clipboard v seed flow |
| Root/jailbreak hook | Neobvyklá stabilita/lag, aplikace „neprojde“ attestation | Zastavit kritické operace, migrace zařízení | Attestation, anti-hooking, degradovaný režim |
| MITM/bez pinningu | Podpisy žádostí „mimo zvyklosti“, změněné RPC | Odpojit síť, použít jiné připojení, ověřit RPC | Pinning, lokální simulace, validace chainId |
Checklist pro jednotlivce (power users)
- Používejte hardwarovou peněženku nebo alespoň mobil + HW kombinaci pro větší částky.
- Vypněte overlay a nepovolujte accessibility neznámým aplikacím; nepoužívejte třetí klávesnice při práci se seedem.
- Čtěte podpisy: hledejte approve/permit/setApprovalForAll; při pochybnostech zrušte a ověřte kontrakt.
- Revidujte approvals měsíčně; používejte limitovaná oprávnění.
- QR skenujte pouze z ověřených zdrojů; preferujte manuální porovnání adresy na displeji HW signera.
Checklist pro týmy/treasury
- Multisig s prahem a policy (denní limity, require-simulate-before-sign, povinné druhé zařízení).
- Oddělená zařízení: jedno pro podpisy (čisté, bez sociálních sítí), druhé pro komunikaci.
- MDM/EMM politika: zákaz root/jailbreak, povinné attestation, kontrola verzí peněženek.
- Runbook pro incidenty: okamžitý revoke, kontakty na burzy/mosty, předkonfigurovaný whitehat multisig



























