WalletConnect为何开始强化钱包认证
一个常见误区:很多人以为WalletConnect就是个扫二维码连DApp的工具,连接成功就完事了。实际上,连接只是开始——真正的安全问题发生在连接之后的每一次签名请求里。WalletConnect近两年大力强化钱包认证,不是因为连不上,而是因为连上之后,钱包无法确认对面那个DApp是真是假。
核心矛盾:连接是真,网站可能是假的
WalletConnect的工作原理是建立一条端到端加密的通信通道,钱包和DApp之间通过中继服务器交换消息。问题是:建立连接的瞬间,DApp展示给你的名称、图标、域名信息,全部由DApp单方面提供,钱包无法验证这些信息的真实性。
这意味着什么?
你扫了一个二维码,钱包弹出"连接至Uniswap"。但你实际上访问的是一个钓鱼网站,它把自己伪装成Uniswap,通过WalletConnect发起连接请求。钱包显示"Uniswap",你点了"批准",连接建立。接下来钓鱼网站发起签名请求——你以为是Uniswap的交易授权,实际可能是把资产转给攻击者。
CertiK在2023年10月发现WalletConnect的VerifyAPI存在XSS漏洞,攻击者可以利用该漏洞伪造验证页面,让用户误以为自己在连接可信DApp。这个漏洞的核心,正是钱包和用户都缺乏对DApp身份的可靠验证手段。
WalletConnect做了什么:VerifyAPI
做什么:WalletConnect推出了VerifyAPI,为集成的钱包提供主动安全增强——在用户连接DApp时,对目标域名进行审查并发出警报。
怎么做:VerifyAPI利用WalletConnect的域名注册表和Blowfish的域名扫描仪来审查连接请求。当用户尝试连接DApp时,API会返回该域名的安全状态,钱包据此向用户展示四种状态之一。
做到什么程度算完成:集成VerifyAPI的钱包会在连接界面明确显示该DApp的域名验证状态——已验证(绿色标识)、未验证(黄色警告)或恶意(红色拦截)。
前置条件:你使用的钱包需要完成WalletConnect VerifyAPI的集成。部分钱包已默认接入,部分需要手动更新到最新版本。
常见失败原因:VerifyAPI本身在2023年被发现XSS漏洞,攻击者可通过篡改JWT标记值注入恶意脚本。虽然WalletConnect已修复该漏洞,但说明任何验证机制都有被绕过的可能。风险提醒:不要仅凭钱包显示的"已验证"标识就完全信任对方。钓鱼攻击的手段不断更新,VerifyAPI的验证结果也不能保证100%准确。
用户端能做的基础防护
此前相关内容提到过签名前防护的"三问"习惯,在WalletConnect场景下,可额外落地以下三条操作规范:
步骤1:每次连接前核验URL
做什么:在扫码连接之前,确认你正在访问的网站URL是正确的官方域名。
怎么做:
手动输入官方域名,不要通过搜索引擎广告链接或社交媒体短链接进入。
连接弹窗显示"DApp名称"时,把它和你浏览器地址栏的域名做对照。
如果连接请求来自二维码,确认二维码的来源渠道可信。
做到什么程度算完成:能确认钱包弹出的DApp名称和你当前访问的URL属于同一个项目。
前置条件:无。这是任何人都能做到的基本操作。
常见失败原因:攻击者可能注册和官方域名极其相似的"毒域名"(如uniswap.xyz代替uniswap.org),肉眼难以区分。
步骤2:主动终结闲置会话
做什么:WalletConnect的会话在建立后会保持活跃,直到用户主动断开或会话超时。你有权随时撤销已经建立的连接。
怎么做:
在钱包的"已连接应用"或"WalletConnect会话"列表中,查看当前所有活跃连接。
对于不再使用或来源可疑的会话,手动点击"断开"或"撤销"。
做到什么程度算完成:钱包的活跃会话列表中只保留你当前正在交互的DApp,没有闲置或遗忘的连接。
前置条件:知道你使用的钱包在哪里查看和管理WalletConnect会话。位置通常在"设置-连接"或"WalletConnect"菜单下。
风险提醒:如果你在某钓鱼网站连接过一次钱包,即使没有进行任何交易,攻击者也可能利用该会话发起后续签名请求。断开连接能彻底切断这条通道。
步骤3:在DApp端操作时保持谨慎
做什么:连接是安全的,不代表连接之后的每一步操作都是安全的。
怎么做:连接后,DApp发起的每一次签名请求都要单独评估。不要因为"刚才连过了"就默认所有请求都安全。每一个签名都有独立的风险——一个恶意签名授权足以清空钱包。
做到什么程度算完成:每次签名前暂停2秒,确认这笔操作和当前操作意图一致。
确认你已完成基础认证防护:打开钱包的已连接应用列表,断开所有你不知道来源或超过24小时未使用的会话。然后下次连接新DApp时,养成先看URL再看钱包提示的习惯。这不是可有可无的步骤,是阻止你下次扫个二维码就被盗的最后一道闸门。
