Contact us
Blog
  • Home  /  
  • Blog  /  
  • WalletConnect v2 Security Checklist: Is WalletConnect Safe?
Feb 20 • 11 mins
Blockchain

WalletConnect v2 Security Checklist: Is WalletConnect Safe?

If you’re asking is walletconnect safe, the short answer is: Yes, WalletConnect is generally safe as a connection and session protocol, but most losses happen because of phishing, malicious approvals, and fake sessions, not because WalletConnect itself was “hacked.”

WalletConnect v2 is simply a communication layer between wallets and decentralized applications (dApps). It does not custody funds, store private keys, or execute transactions on its own. The real risk emerges when users approve malicious requests or when wallets fail to validate session proposals properly.

This guide provides a practical, opinionated WalletConnect v2 security checklist for:

  • Wallet builders (CTOs, engineers, product teams)
  • dApp developers
  • Power users concerned about wallet safety

Just real-world risk models and actionable mitigation steps.

Quick Answer

If you only read one section, read this.

WalletConnect is generally safe because:

  • It does not hold private keys.
  • It’s designed for secure session communication
  • It requires explicit user approval for sessions and signatures.
  • Data between the wallet and the dApp is protected with end-to-end encryption (E2EE).

WalletConnect becomes risky when:

  • Users connect to phishing websites.
  • Wallets approve overly broad permissions.
  • Session management is weak.
  • Message signing is unclear or blind.

What users should do today:

  • Verify domains before connecting
  • Reject unknown session proposals
  • Avoid blind message signing
  • Disconnect unused sessions
  • Revoke token approvals periodically

How WalletConnect v2 Works (30-Second Explanation)

HOW WALLETCONNECT V2 works

Understanding risk starts with understanding flow.

1. Secure Pairing (The Handshake) The dApp generates a unique URI, shared via QR Code or Deep Link. This initiates a secure connection between the wallet and the dApp, typically routed via a Relay Server. Data between the wallet and the dApp is protected with end-to-end encryption (E2EE), so the relay does not see the message content (it only forwards encrypted payloads).

    • Session Proposal (Setting the Rules) The dApp sends a “manifest” of what it needs:
    • Chains: Which networks (e.g., Ethereum, Polygon)
    • Methods: What it can request (e.g., personal_sign)
    • Metadata: Who is asking (app name, URL, icons)

    2. Permission Approval (You’re in Control) Your wallet displays a clear summary of these requests. You grant access only to the specific chains and permissions you trust. No private keys are ever shared.

      3. Active Session (Secure Interaction) Once approved, the dApp sends requests to your wallet within this encrypted session. Every transaction still requires manual signing by you before it can be submitted to the blockchain.

      Real-World WalletConnect Risks (What Actually Goes Wrong)

      WalletConnect security issues are almost never protocol failures. They are:

      1. Fake dApps & Phishing Websites

      A cloned site prompts users to connect. The session is legitimate — the website is not.

      2. Malicious Token Approvals

      Users sign transactions approving unlimited token allowances. Funds get drained later.

      3. Dangerous Message Signing

      Improperly understood personal_sign or eth_signTypedData requests can authorize harmful actions.

      4. Session Persistence

      Users stay connected for weeks. The dApp later pushes a malicious request.

      5. Misleading Metadata

      Session proposals show generic or misleading names/icons.

      Risk → What It Looks Like → Mitigation

      RiskWhat It Looks LikeMitigation
      Phishing siteLooks like real dApp, different domainVerify domain before session approval
      Unlimited token approval“Approve spending” without limitWarn clearly about unlimited allowances
      Blind signatureRaw hex data signingDisplay decoded signing data
      Long-lived sessionAlways connectedAuto-expire sessions + visible disconnect UI
      Fake QR codeQR from Discord/TelegramValidate WalletConnect URI structure

      WalletConnect Phishing & Scam Patterns (User-Facing)

      Common walletconnect phishing patterns include:

      • QR codes from unofficial Telegram groups
      • Fake “support” agents sending connection links
      • Lookalike domains (e.g., swapping letters)
      • “Connect wallet to claim” airdrop scams
      • Malicious popups embedded inside compromised websites

      Users should:

      Do this

      • Type website URLs manually
      • Bookmark trusted dApps
      • Verify domain + SSL
      • Disconnect unused sessions

      Avoid this

      • Connecting from unsolicited DMs
      • Signing unclear messages
      • Approving unlimited allowances casually

      Remember: a walletconnect scam works because the user approves something harmful — not because WalletConnect was breached.

      Wallet-Side Security Checklist (For Wallet Builders)

      If you’re building a wallet, WalletConnect integration must be treated as a security-critical surface.

      Developer note: CAIP-25 (what v2 is built around)

      WalletConnect v2 session permissions are aligned with CAIP-25, a chain-agnostic standard that helps structure how wallets and apps describe accounts, chains, and requested capabilities across ecosystems. In practice, this is why v2 can support richer multi-chain sessions and more granular permissions and why your validation logic must be strict at the “session proposal” boundary.

      1. Domain Verification UX (WalletConnect Verify API)

      Implement walletconnect verify api integration.

      Treat status as:

      • VALID → Display verified badge
      • INVALID → Show high-risk warning + require extra confirmation
      • UNKNOWN → Neutral but cautious UI

      Never silently approve unknown origins.

      2. Strict Parsing of WalletConnect URIs

      For walletconnect deep link security:

      • Validate URI structure strictly
      • Reject malformed inputs
      • Prevent intent hijacking on Android
      • Prevent custom scheme injection

      Never trust raw QR input.

      3. Session Proposal Validation

      Validate:

      • Metadata URL matches domain
      • Icons load from expected origin
      • App name not blank or generic
      • No unexpected chains requested

      This reduces spoofing.

      4. Method & Chain Allowlist

      Do not auto-approve all methods.

      Use:

      • Method allowlists
      • Chain allowlists
      • Principle of least privilege

      If dApp only needs eth_sign, don’t approve eth_sendTransaction.

      5. Event Subscription Minimization

      Only approve required event subscriptions. Overexposure increases attack surface.

      6. Session Expiry Defaults

      Implement:

      • Default expiry times
      • Manual disconnect UI
      • Auto-expire idle sessions

      Clear session management is critical for walletconnect session management security.

      7. Risk-Based UX Warnings

      Trigger enhanced warnings for:

      • Unlimited ERC-20 approvals
      • Permit-style signatures
      • Blind signing
      • Unknown contract interactions

      Explain clearly in human-readable language.

      8. Logging & Monitoring

      Wallet teams should log:

      • Repeated invalid sessions
      • Malformed URIs
      • Excessive proposal spam
      • Suspicious metadata reuse

      Rate limit abuse patterns.

      If You’re Building a Wallet…

      If you’re implementing WalletConnect inside a consumer wallet, your architecture matters.

      Explore:

      • Trust Wallet-style wallet modules & architecture → /trust-wallet-clone-script/
      • Wallet development cost & timelines → /trust-wallet-clone-app-development-cost/

      For wallet model differences, see:

      Trust Wallet vs MetaMask (wallet model comparison) → /trust-wallet-vs-metamask/

      dApp-Side Security Checklist (For dApp Builders)

      Security is shared responsibility.

      Do This:

      • Set up WalletConnect domain verification
      • Request minimal methods
      • Use clear signing prompts
      • Provide disconnect option
      • Limit session duration

      Avoid This:

      • Requesting all chains by default
      • Ambiguous signing messages
      • Hiding disconnect options

      Poor dApp UX increases wallet risk.

      Deep Link & QR Security Checklist (Mobile)

      For walletconnect QR code phishing and deep links:

      • Validate scanned URIs strictly
      • Confirm app identity before approval
      • Prevent Android intent hijacking
      • Do not auto-open sessions silently

      Users must see and approve everything.

      Signing Safety: Message vs Transaction Signing

      Two major request types:

      Transaction Signing

      • Moves funds
      • Approves token allowances
      • Executes smart contracts

      Message Signing

      • personal_sign
      • eth_signTypedData

      eth_signTypedData security risks arise when users sign structured data without understanding consequences (e.g., off-chain permit signatures).

      personal_sign security issues arise when wallets show raw hex blobs without decoding.

      Wallets must:

      • Decode and display structured data
      • Highlight risks clearly
      • Avoid blind signing whenever possible

      Users should:

      • Never sign messages they don’t understand
      • Reject unexpected popups

      What To Do If You Suspect Compromise

      If you think something went wrong:

      1. Disconnect all WalletConnect sessions
      2. Revoke token approvals (via blockchain explorers)
      3. Move funds to a new wallet
      4. Generate a new seed phrase
      5. Check for unknown connected sessions

      Time matters. Act quickly.

      FAQ

      Is WalletConnect safe?

      Yes, when implemented correctly. Most losses occur due to phishing and malicious approvals.

      Can WalletConnect drain my wallet?

      No. It cannot move funds without your explicit signature approval.

      What is WalletConnect Verify API?

      A verification system that checks dApp domain authenticity before session approval.

      How do I disconnect WalletConnect sessions?

      Use your wallet’s session management section and manually disconnect active sessions.

      Is signing a message safe?

      It depends on what you are signing. Typed data and blind messages can authorize dangerous actions.

      How to avoid WalletConnect phishing?

      Verify domains, reject unknown sessions, avoid signing unclear messages, and disconnect unused sessions.

      Final Thoughts

      So, is walletconnect safe?

      Yes, WalletConnect v2 is designed as a secure connection layer, including end-to-end encryption (E2EE) between wallet and dApp. The Relay Server routes messages but does not see the message content.

      WalletConnect v2 provides powerful tools. Security depends on how responsibly they are used.

      If you’re building a wallet and want secure WalletConnect v2 integration aligned with modern multi-chain architecture, review:

      Dmitry Khanevich

      CEO NDLabs

      Planning a Wallet Build?
      Book a wallet consult

      About the author

      Dmitry K.

      CEO and Co-founder of ND Labs
      I’m a top professional with many-year experience in software development and IT. Founder and CEO of ND Labs specializing in FinTech industry, blockchain and smart contracts development for Defi and NFT.

      More articles

      Let’s talk and start working!

      Already have an idea of a blockchain project?