Mobil ako kritická hranica bezpečnosti v krypto ekosystéme
Smartfón je dnes primárny nástroj na správu digitálnych aktív, a tým aj najzraniteľnejší článok reťaze. Útočné vektory sa koncentrujú okolo troch oblastí: QR kódy (phishing, neviditeľná manipulácia parametrov), signer malware (škodlivé aplikácie a prekleňujúce vrstvy, ktoré vynútia neautorizované podpisy) a root/jailbreak (obchádzanie bezpečnostných modelov OS). Nasledujúci článok mapuje technické riziká, reálne scenáre útokov, detekčné techniky a odporúčané architektonické aj procesné mitigácie pre jednotlivcov, tímy aj vývojárov peňaženiek a dApps.
Model hrozieb: čo vlastne chrániť a pred kým
- Ciele: privátne kľúče a seed frázy, schvaľovanie on-chain opráv (approvals), podpisy transakcií a správ (EIP-191/712/Sign-In with Ethereum), session kľúče (WalletConnect), biometrické zámky, trezorové prístupy, clipboard a obrazovka.
- Útočníci: škodlivé aplikácie (APK/IPA), adware/spyware, prebalené peňaženky, klamlivé deep linky, fyzický útočník so zariadením, sieťový MITM, „legitímne“ SDK s exfiltráciou dát.
- Vektory: QR kódy, deeplinky/URL schémy, Android Intents, accessibility a overlay, trojanizované klávesnice, manipulácia s ukladacím priestorom a keychain/keystore API, root/jailbreak hooky (Frida/Magisk/Substrate).
QR kódy: pohodlie vs. neviditeľné zmeny parametrov
QR kód je iba transportný formát. Jeho riziko pramení z toho, že obsah (adresy, chainID, amount, calldata, endpoint) je pre človeka nečitateľný:
- Phishing QR: Napr. kód na „claim“ airdropu odkazuje na falošnú doménu, ktorá po deeplinku vyžiada škodlivé schválenie (infinite approval).
- Podvrh recipienta/chainu: Kód vyzerá ako USDC na mainnete, ale obsahuje token na inom chainID s nízkou hodnotou alebo odkaz na kontrakt permit() s vysokým allowancom.
- Stitching a pixel swap: Tlačené alebo digitálne bannery s vymeneným QR vedú do legitímneho UI, no s preseedovaným to=attacker.
Mitigácie: vždy zobrazovať pred podpisom prehľadné ľudsky čitateľné zhrnutie (adresa, suma, chain, funkcia), validovať doménu cez Verified Domains/ENS, používať QR parity check (napr. krátky hash parametrov vedľa QR) a preferovať read-only simuláciu transakcie pred odoslaním.
Deeplinky, URL schémy a Android Intents: tichá eskalácia privilégií
Mobilné dApps a peňaženky komunikujú cez schémy (ethereum:, wc:), Universal Links/App Links a Intents. Chybná validácia môže viesť k „podpíš čokoľvek“:
- Open redirect: dApp presmeruje na škodlivý link, peňaženka ho prijme bez doménovej väzby.
- Parameter smuggling: legitímny deeplink, no s vloženou
calldatameniacou funkciu ztransfer()naapprove(). - Cold start spoľahnutie: peňaženka po štarte nedostatočne zobrazuje source doménu, čím maskuje pôvod požiadavky.
Mitigácie: striktne viazať podpísané žiadosti k overenej doméne (origin binding), per-origin session kľúče, explicitné potvrdenie chainID a kontraktu, denylist/allowlist schém, a defensive parsing všetkých parametrov deeplinku.
Signer malware: útok na moment rozhodnutia
Signer malware nekradne priamo seed; jeho cieľom je dosiahnuť, aby používateľ legitímnym signerom podpísal niečo zlé:
- Overlay/tapjacking: priehľadná vrstva prekryje tlačidlo „Detail“ a používateľ kliká na „Approve max“.
- Accessibility abuse: malware číta obrazovku, extrahuje adresy a mení ich v clipboarde; dokonca simuluje dotyky.
- Keyboard exfiltration: „moderná klávesnica“ loguje seed a heslá; kombinované s screenshot povoleniami.
- Falošná peňaženka: rebrand známej appky, ktorá podsunie podpisy Permit2/approval s vysokým limitom.
Mitigácie: zakázať obrazovkové overlaye v kritických obrazovkách (FLAG_SECURE, filter touches when obscured), detegovať accessibility služby a prepnúť do „zvýšenej citlivosti“ (vyžadovať extra potvrdenie, rozložiť UI, zablokovať auto-confirm), zakázať externé klávesnice na seed vstupe, povoliť iba lokálne generované klávesnice bez predikcie.
Root/jailbreak: keď sandbox prestane byť sandboxom
Root (Android) a jailbreak (iOS) rušia zásadné garancie: izoláciu aplikácií, integritu systémových API a ochranu keychain/keystore. Útočník môže injektovať hooky (Frida, Magisk, Substrate), obchádzať SSL pinning, čítať pamäť a live-patchovať aplikáciu.
- Následky: získanie prístupu k nekrytým kľúčom, zachytávanie obrazovky a dotykov, bezprostredná manipulácia so signerom.
- Detekcia: kontrola prítomnosti su, známych knižníc/hookov, integrity boot chainu, Play Integrity/App Attest signálov, anomálií v procfs/entitlements.
- Rozumná reakcia: buď „tvrdé stop“ (nepovoliť kritické operácie), alebo „degradovaný režim“ (iba read-only, bez podpisov a ukazovania seed-recovery obrazoviek).
Sieť a MITM: keď podpisujete to, čo nevidíte
Aj bez rootu stačí slabý TLS model a podpisujete dáta, ktoré zmenil útočník v sieti:
- DNS hijack / captive portal: presmerovanie dApp API; zmenené calldata.
- Chýbajúci certificate pinning: akceptácia útočníkovho certifikátu.
Mitigácie: TLS 1.3, cert-pinning (s bezpečným obchádzaním cez remote config a rotáciu), overovanie chainId a rpc origin, lokálne simulácie transakcií bez dôvery v backend.
Approvals, blind signing a EIP-712: nebezpečenstvo „OK, OK, OK“
Najčastejšie straty sú cez schválenia (ERC-20/721/1155) a blind signing správ:
- Infinite approval: útočník získa právo prevádzať vaše tokeny, hoci ste nič „neposlali“.
- Neparsované EIP-712: peňaženka nezobrazí čitateľnú štruktúru; používateľ potvrdí to, čomu nerozumie.
Mitigácie: default limited approvals, pri neznámych kontraktoch vyžadovať simulation diff (očakávaný stav vs. po podpise), vysvetliť spender a rozsah, povoliť rýchly revoke panel a automatické pripomienky pri dlhodobo otvorených schváleniach.
Session kľúče a WalletConnect: útoky na delegovanú dôveru
Session kľúče sú pohodlné, ale rizikové, ak nie sú limitované:
- Preexponované session: bez obmedzenia metód, času a chainov; útočník ich zneužije na batch approvals.
- Re-binding domény: rovnaká session použitá s inou doménou (origin).
Mitigácie: per-origin per-chain sessions, time-boxed a scope-limited (iba metódy potrebné pre UX), vizuálne zvýrazniť obnovu/„reconnect“ a vynucovať reautentizáciu pri rizikových volaniach.
Úložiská kľúčov: Secure Enclave/Keystore nestačí, ak UI zlyhá
Hardware-backed kľúče (Secure Enclave, StrongBox, TEE) chránia proti exfiltrácii, nie proti zlému rozhodnutiu používateľa. Preto je kľúčové:
- vyžadovať biometriku pri každom rizikovom podpise (nie iba pri odomknutí appky),
- izolovať seed import/export do samostatných flow (bez screenshotov, bez clipboardu),
- neukladať seed v plain text JSON (žiadne „export.txt“ do stiahnutí),
- umožniť externý signer (hardvérová peňaženka) a air-gapped QR podpis.
Detekcia a hardening aplikácií: od attestation po anti-hooking
- Attestation: Play Integrity/SafetyNet (Android), DeviceCheck/App Attest (iOS) – viazať funkcie na integritu zariadenia a verziu appky.
- Anti-hooking: detegovať Frida/Magisk/Substrate, randomizovať symboly, anti-debug spúšťať iba pri kritických akciách.
- SSL pinning + remote pin rotácia: minimalizovať MITM, no počítať s recovery cestou.
- Privacy by design: minimum logov, žiadne citlivé dáta v crash reportoch, FLAG_SECURE na citlivých obrazovkách.
Ľudské faktory a tréning: rozhodnutie v poslednom kroku
- Čítanie obrazoviek podpisu: trénovať rozpoznávanie approve/permit/setApprovalForAll vs. transfer.
- „Dvojitý kanál“: pri väčších sumách potvrdenie na inom zariadení (hardware signer alebo desktop s verifikáciou adresy na displeji zariadenia).
- Hygiena QR: skenovať iba z dôveryhodných zdrojov; neveriť náhodným QR v skupinách a reklamách.
Incident response: keď sa to stane
- Okamžitý revoke: odvolať approvals pre ohrozené tokeny; v prípade krádeže skúsiť whitehat rescue s multisigom.
- Migrácia kľúčov: považovať zariadenie za kompromitované, presunúť aktíva na novú peňaženku so fresh seed.
- Forenzná stopa: uložiť tx hashe, verzie appiek, snímky deeplinkov; nahlásiť marketplace/mostom kvôli blacklistingu adries.
Tabuľka: typ útoku – symptómy – rýchla obrana
| Útok | Symptómy | Okamžitá akcia | Prevencia |
|---|---|---|---|
| Phishing QR | Neočakávané approve/permit, neznáma doména | Zrušiť podpis, skontrolovať doménu/ENS | Simulácie, origin binding, hash vedľa QR |
| Signer overlay | Tlačidlá „nepasujú“, nezvyčajné prekrytie | Zatvoriť app, vypnúť accessibility/overlay | FLAG_SECURE, filter touches, zvýšený režim |
| Clipboard hijack | Adresa sa zmení po vložení | Overiť posledné znaky na HW signer displeji | Zakázať externé klávesnice a clipboard v seed flow |
| Root/jailbreak hook | Nezvyčajná stabilita/lag, app „neprejde“ attestation | Stop kritickým operáciám, migrácia zariadenia | Attestation, anti-hooking, degradovaný režim |
| MITM/bez pinningu | Podpisy požiadaviek „mimo zvyku“, zmenené RPC | Odpojiť sieť, použiť iné pripojenie, overiť RPC | Pinning, lokálne simulácie, validácia chainId |
Checklist pre jednotlivcov (power users)
- Používajte hardvérovú peňaženku alebo aspoň mobil+HW kombináciu pre väčšie sumy.
- Vypnite overlay a nepovoľujte accessibility neznámym appkám; nepoužívajte tretie klávesnice pri práci so seed.
- Podpisy čítajte: hľadajte approve/permit/setApprovalForAll; pri pochybnosti zrušte a overte kontrakt.
- Revidujte approvals mesačne; používajte limitované allowances.
- QR skenujte iba z overených zdrojov; preferujte manuálne porovnanie adresy na displeji HW signera.
Checklist pre tímy/treasury
- Multisig s prahom a policy (denné limity, require-simulate-before-sign, povinné druhé zariadenie).
- Oddelené zariadenia: jedno pre podpisy (čisté, bez sociálnych sietí), druhé pre komunikáciu.
- MDM/EMM politika: zákaz root/jailbreak, povinné attestation, kontrola verzií peňaženiek.
- Runbook na incidenty: okamžité revoke, kontakty na burzy/mosty, predkonfigurovaný whitehat multisig.
Checklist pre vývojárov peňaženiek a dApps
- Zobrazujte čitateľné EIP-712 s rozlišovaním rizikových metód; predvolená simulácia a state diff.
- Origin binding pre deeplinky; per-origin sessions s časovým a metódovým limitom.
- Detekujte overlay/accessibility a prepínajte do „zvýšenej citlivosti“ (extra potvrdenie, blok screenshotov).
- Integrujte attestation a anti-hooking; definujte degradovaný režim na root/jailbreak.
- Implementujte rýchly revoke center a notifikácie pri dlhých/infinite approvals.
Dizajn bezpečnosti, nie iba súpis pravidiel
Mobilná bezpečnosť v krypto svete je o architektúre dôvery: používateľské rozhranie musí byť pravdivé (jasné a zrozumiteľné podpisy), sieť spoľahlivá (pinning, simulácie) a zariadenie integritné (bez root/jailbreak, s attestation). QR kódy slúžia iba ako prenosový kanál – skutočná ochrana sa deje pri validácii obsahu a pri samotnom podpise. Bez ohľadu na úroveň technológií platí zásada: dôležité transakcie potvrdzujte na zariadení, ktoré je schopné zobraziť presne to, čo podpisujete, a nenechajte signer rozhodovať sám – vždy mu dajte kontext a limity.