击破XSS漏洞:CertiK同WalletConnect一起守护用户安全Web3.0是一个创新机遇与安全挑战并存的新时代。它带来了区块链技术、智能合约、DeFi、DePIN等全新概念,却也浮现出多种多样的恶意攻击、漏洞与诈骗等安全问题。另一方面,由于当前Web3.0产品往往融入许多Web2.0元素,这使得传统的Web2.0的安全风险也成为威胁Web3.0世界的重要因素。
作为全球领先的Web3.0安全机构,CertiK团队一直以来都在主动关注各种原生和衍生的潜在风险,保护成千上万的客户免受损失。
本篇文章中,我们将带大家了解CertiK团队如何发现与解决Web3.0常用协议–WalletConnect中存在的Web2.0漏洞。
WalletConnect与VerifyAPI
WalletConnect是Web3.0最受欢迎的开源协议之一,用于将各种dApp与去中心化钱包连接起来。用户可以通过扫描dApp提供的二维码来建立新的连接。虽然二维码上会显示dApp的名称、图标和来源等详细信息,但是这些信息均由dApp单方面提供,无需经过钱包验证,因此存在网络钓鱼攻击的风险,这也是包括CertiK在内的众多安全团队所重点关注的问题。
为此,WalletConnect推出了“VerifyAPI”。
“VerifyAPI”是WalletConnect针对与其集成钱包推出的主动安全增强措施,会对用户尝试连接的可疑或恶意域名发出警报,从而防止网络钓鱼攻击。该API利用WalletConnect的域名注册表和Blowfish的域名扫描仪来审查连接请求。当用户尝试与dApp连接时,VerifyAPI可使钱包呈现四种状态,来帮助用户评估该域名的安全性并识别潜在风险。
发现漏洞
WalletConnect协议中的漏洞是团队在为客户产品进行例行渗透测试时无意发现的。在渗透测试的初始阶段,团队通常会通过全面的探索流程来了解应用程序的功能和与之交互的各种服务。本案例中,客户产品的网络应用程序使用了WalletConnect。我们对HTTP流量的监控获取了向WalletConnect端点发出的请求信息,而其中一条请求引起了我们的特别注意。
在深入研究这个漏洞的具体细节之前,让我们从dApp的角度来看看VerifyAPI的HTTP请求工作流:
1.内嵌的WalletConnectSDK向verify.walletconnect.com发送请求,并在路径中包含项目ID。如果该ID已在WalletConnect注册,服务器将回复一个指向index.js文件的链接和CSRF标记。
2.然后,SDK会执行GET请求,利用之前获得的路径和CSRF标记获取验证请求的JavaScript代码片段。
3.用户确认通过WalletConnect连接钱包并生成QR码后,SDK会向/attestation端点发送POST请求,匹配id,并完成初始dApp设置。
在检查HTTP响应时,我们注意到HTML主体中包含一个直接嵌入JavaScript代码块的标记值。对于经验丰富的Web2.0安全专家来说,这种模式表明存在HTML注入或XSS(跨站脚本)攻击的潜在漏洞。为了验证这一猜想,我们将上图请求中的标记值修改为XSS有效载荷svg/onload=alert(document.domain),脚本成功执行了,这说XSS漏洞确实存在。https://verify.walletconnect.com/index.js?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
XSS是一种注入式攻击,可以在可信网站中嵌入恶意脚本。
在Web2.0应用中,攻击者通常利用XSS漏洞访问用户cookie,劫持用户的网络会话和账户控制权。其他攻击包括把用户重定向到有害网站,或发起未经授权的请求。在Web3.0环境中,XSS攻击可以操纵去中心化钱包连接,诱骗用户签署有害交易,从而盗取资产。
接着,我们对XSS问题展开了进一步调查,包括测试各种有效载荷,来评估此漏洞是否会演变为SQL注入或远程代码执行等更严重的风险。
VerifyAPI是开源代码,在查看其代码后,我们了解了XSS漏洞的根本原因——该漏洞来自于validate_format函数验证标记值格式的方式。
if!CsrfToken::validate_format(&query.token){
虽然它检查了标记值是否具有有效的JWT标头,但未能彻底检查整标记值,因此攻击者仍可以通过给JWT标记值附加有效载荷来进行XSS攻击。
fnvalidate_format(s:&str)-bool{jsonwebtoken::decode_header(s).is_ok()}
概念验证
为了验证潜在威胁,我们的安全团队利用以上的XSS漏洞创建一个演示用的有效载荷。一旦被使用在钓鱼网站上,用户将会收到一个资产授权提示,如果不仔细检查交易数据而点击确认,就会把资产控制权授权给攻击者。
由于用户看到的依然是https://verify.walletconnect.com/域名,对交易签名的警惕程度会大大降低。而对于非专业出身的用户来说,很难去验证交易的全部细节,很有可能会在无意中签署恶意交易,造成损失。
另一方面,我们在研究中没有发现任何可以放大该漏洞影响的方法,例如入侵WalletConnect的其他模块或发起用户被动操作。
解决方案
在检测到XSS漏洞后,我们的团队迅速向WalletConnect团队提供了一份详细报告。WalletConnect团队迅速确认了我们的发现,并制定了解决问题的时间表。
WalletConnect的补救措施包括更新validate_format函数。此更新采用了白名单方法,标记值只允许使用字母、数字,以及符号-、.和_。虽然理论上仍有可能进行文本注入,但这一关键更新大大降低了XSS攻击的风险。
时间线
2023年10月14日:CertiK向WalletConnect报告该漏洞。
2023年10月16日:WalletConnect确认收到报告并确认问题。
2023年10月20日:WalletConnect更新了源代码,并推送至VerifyAPI。
2023年10月20日:CertiK确认XSS问题已得到缓解。
写在最后
此次事件为我们带来一个重要提示:Web2.0所特有的漏洞不仅会在Web3.0环境中持续存在,而且还会不断演变,以更新的表现形式造成更大的安全威胁。因此,主动防护至关重要。定期审计、渗透测试、谨慎的漏洞评估以及实时跟进最新的安全动态,走在攻击者前面,是Web3.0企业守护安全的最佳做法。对于DeFi用户来说,保持警惕在任何时候都至关重要。
一定要仔细验证网站或平台的URL,特别是看起来相似的数字与字母。诈骗者经常通过高仿URL欺骗用户。
进行交易时,请仔细查看交易的所有详细信息。钱包应用都会不时针对新的诈骗手法推出新的提示。在点击确认前确保理解钱包的所有提示,并确认目标地址的准确性。
在本篇文章中,我们详细介绍了在WalletConnect的VerifyAPI中发现的XSS漏洞及其影响,强调了Web2.0攻击在Web3.0环境中带来的安全风险。感谢WalletConnect团队的快速反应和有效补救,体现了他们对用户与Web3.0行业安全的强大责任感。BitGo 通过 WalletConnect 将自托管钱包与 DecibelTrade 集成Techub News 消息,BitGo 通过 WalletConnect 将自托管钱包与 Aptos 生态 DEX DecibelTrade 集成,允许机构在不转移资产的情况下进行交易。该集成旨在为机构客户提供更安全的交易体验,同时保持资产的自托管状态。(Crypto Briefing)WalletConnect Pay 支持 USDC 存款接入衍生品平台Techub News 消息,WalletConnect 宣布其 Pay 功能支持稳定币存款接入 CFD 及永续合约平台,通过单一集成连接超 9 亿用户及 700 余个钱包与交易所账户,覆盖从零售小额到机构大额资金的存入需求。
该平台指出 USDC 凭借流动性深度、发行方透明度及跨链可用性,已成为服务双向用户群的默认记账单位。相关基础设施设计亦回应了美国 GENIUS Act 及欧盟 MiCA 监管框架对合规稳定币结算的要求。WalletConnect:稳定币支付可为商户降低 80% 手续费Techub News 消息,WalletConnect 发文称,稳定币支付可显著降低商户交易成本。WalletConnect Pay 手续费为 0.5% 至 1.0%,较信用卡降低约 80%,且能实现近实时结算。
该方案支持商户灵活配置资产与结算方式,无需改造基础设施即可并行使用。数据显示,加密用户平均订单金额较信用卡用户高出 15% 至 25%,但接受加密货币支付的商户不足 4%,市场需求缺口明显。WalletConnect Pay 集成 PYUSD 支持商户直接支付Techub News 消息,WalletConnect 宣布其支付基础设施 WalletConnect Pay 已集成 PayPal USD(PYUSD),用户可在支持该网络的商户直接使用钱包中的 PYUSD 进行支付,无需额外转换或桥接步骤。
PYUSD 由 Paxos Trust Company 发行,1:1 由美元存款及短期美债支持,已部署于 Arbitrum、以太坊等主流网络。用户现可通过 MetaMask 等自托管钱包在接入该网络的商户直接消费稳定币,商户无需改造现有工作流程即可接收资金。WalletConnect 已支持 USDe 支付Techub News 消息,Ethena 在 X 平台发文表示,WalletConnect 已正式支持 USDe 支付功能。WalletConnect Pay 接入 Ingenico POS 终端,欧洲首批商户拟于上半年落地Techub News 消息,据 WalletConnect CEO Jess Houlgrave 在 X 平台发文表示,WalletConnect Pay 已与 Ingenico 达成合作,计划在 Ingenico 覆盖 120 多个国家的逾 4,000 万点售终端上提供稳定币支付能力,并面向全球上线。Houlgrave 表示,自 2026 年 1 月起,Ingenico 终端上的 WalletConnect Pay 将向收单机构与支付服务提供商开放,预计首批商户激活将于 2026 年第一、二季度在欧洲推出,并随 PSP 在其商户网络启用服务而进一步扩展。WalletConnect:持有 Solana Mobile 手机可参与 Solana 生态 WCT 代币空投申领计划Techub News 消息,Web3 通信协议 WalletConnect 发推表示,Solana Mobile 手机将被纳入 WCT 代币空投申领计划,符合条件的用户可以参与即将到来的 Solana 生态空投。后续将公布更多信息。0x19F 开头的地址从 WalletConnect 项目方多签地址处收到 250 万枚 WCT 并转入币安Techub News 消息,据 X 用户 Ai 姨监测,0x19F 开头的地址于 8 小时前从 WalletConnect 项目方多签地址处收到 250 万枚 WCT 并转入币安,价值约 234 万美元。该地址在一个月前代币 TGE 时也曾收到 250 万枚代币,向前追溯资金关联或与 Arrington Capital 有关,无法确认代币将用于做市或者抛售。Bithumb 将上线 Wallet Connect 代币 WCT 韩元交易对Techub News 消息,Bithumb 将于 2025 年 4 月 16 日 18:00 上线 Wallet Connect 代币 WCT 韩元交易对。WalletConnect:WCT 代币已可转让Techub News 消息,Web3 通信协议 WalletConnect 宣布 WCT 代币已可转让。[各期间涨幅] WalletConnect(WCT/KRW)在一周内录得+37.65%的收益率,成为短期强势项目。但其中长期收益率表现疲软,3个月为-48.91%,6个月为-74.01%。Just(JST/KRW)以一年期+21.88%的涨幅位居长期收益率前列,同时展现出稳健的中期走势,如1个月+13.17%、3个月+17.88%。SaharaAI(SAHARA/KRW)呈现逐步上涨趋势,一周涨幅为+4.31%,一个月涨幅为+9.01%。 [周涨幅 TOP 10] 第1名 MVL(MVL/BTC) +100.00% 第2名 Porta(FORT/BTC) +50.00% 第3名 Puffer(PUFFER/BTC) +30.67% 第4名 WalletConnect(WCT/KRW) +28.73% 第5名 Mina(MINA/BTC) +20.90% 第6名 SaharaAI(SAHARA/BTC) +20.78% 第7名 Just(JST/BTC) +20.00% 第8名 Resolv(RESOLV/BTC) +18.55% 第9名 Huma Finance(HUMA/BTC) +16.67% 第10名 Caldera(ERA/BTC) +16.24% 在BTC市场席卷涨幅榜、形成短期强势格局之际,MVL(MVL/BTC)本周以+100.00%的涨幅位居榜首。Porta、Puffer等项目也因高收益率受到投资者关注。另一方面,在KRW市场中,仅WalletConnect(WCT/KRW)进入涨幅榜前列,反映出短期主题驱动的强势市场特征。 周涨幅 / Upbit [日卖出成交强度 TOP 5] 第1名 QuarkChain(QKC/KRW) 0.00% 第2名 MovieBloc(MBL/KRW) 0.00% 第3名 Kava(KAVA/KRW) 0.00% 第4名 1inch Network(1INCH/KRW) 0.00% 第5名 Toshi(TOSHI/KRW) 0.30% 卖出成交强度最低的项目是QuarkChain(QKC/KRW)、MovieBloc(MBL/KRW)和Kava(KAVA/KRW),所有成交均偏向买入方。这可以解读为短期需求集中涌入,可能是受此前上涨趋势影响,额外买盘正在流入。 本周接连出现以BTC市场为主的暴涨项目,部分KRW市场项目也在短期走势中表现强势。但鉴于部分项目中长期收益率已转为急剧下跌趋势,相较于追涨买入,更需要基于供需流动和技术指标的谨慎策略。