慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险
2023-5-4 12:14:32 Author: www.freebuf.com(查看原文) 阅读量:12 收藏

2023 年 1 月 30 日,慢雾安全团队发现 Web3 钱包上关于 WalletConnect 使用不当可能存在被钓鱼的安全风险问题。这个问题存在于使用移动端钱包 App 内置的 DApp Browser +  WalletConnect 的场景下。

我们发现,部分 Web3 钱包在提供 WalletConnect 支持的时候,没有对 WalletConnect 的交易弹窗要在哪个区域弹出进行限制,因此会在钱包的任意界面弹出签名请求。

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

当用户离开 DApp Browser 界面切换到钱包其他界面如示例中的 Wallet、Discover 等界面,由于钱包为了不影响用户体验和避免重复授权,此时 Wallet Connect 的连接是没有断开的,但是此时用户却可能因为恶意 DApp 突然发起的签名请求弹窗而误操作导致被钓鱼转移走资产。

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

动态演示 GIF 如下图:

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

攻击者利用恶意 DApp 钓鱼网站引导用户使用 WalletConnect 与钓鱼页面连接后,然后定时不间断发送恶意的签名请求(如 eth_sign 这种盲签、授权签名、针对特殊智能合约协议的交易签名等,后面以 eth_sign 作为举例)。用户识别到 eth_sign 可能不安全拒绝签名后,由于 WalletConnect 采用 wss 的方式进行连接,如果用户没有及时关闭连接,钓鱼页面会不断的发起构造恶意的 eth_sign 签名弹窗请求,用户在使用钱包的时候有很大的可能会错误的点击签署按钮,导致用户的资产被盗。

这个安全问题的核心是用户切换 DApp Browser 界面到其他界面后,是否应继续自动弹窗响应来自 DApp Browser 界面的请求,尤其是敏感操作请求。因为跨界面后盲目弹窗响应很容易导致用户的误操作。

这里面涉及到一个安全原则:WalletConnect 连接后,钱包在检测到用户切换 DApp Browser 界面到其他界面后,应该对来自 DApp Browser 的弹窗请求不进行处理。

另外需要注意的是,虽然移动端钱包 App + PC 浏览器的 WalletConnect 连接场景也存在同样的问题,但是用户在这种场景下或许不那么容易误操作。

慢雾安全团队抽取市面热门搜索和下载量比较大的 20 个 Crypto Wallet App 进行测试:

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

根据上表测试结果,我们发现:

1. 部分热门钱包 App 如 MetaMask、Enjin Wallet、Trust Wallet、SafePal Wallet 及 iToken Wallet 等,在 WalletConnect 连接后切换到其他界面时,会自动响应 DApp 的请求,并弹出签名窗口。

2. 大部分测试的钱包 App 在切换界面后,对 DApp 的请求不会做出响应,也不会弹出提示窗口。

3. 少数钱包 App 在测试环境下无法使用 WalletConnect 与 DApp 连接,如 Coinbase Wallet 和 MEW Crypto Wallet 等。钱包的 DApp 中不是很适配  WalletConnect 接口。

4. 部分钱包 App 如 Exodus Wallet 和 Edge Wallet 在连接测试环境下未找到相关的 DApp 进行测试,无法判断其切换界面后的响应情况。

慢雾安全团队最初在 Trust Wallet 上发现这个问题,并通过 Bugcrowd 漏洞提交平台向他们提交了这个问题,我们获得了 Trust Wallet 的感谢,他们表示将在下一个版本修复这个安全风险。

特别的是,如果钱包对 eth_sign 这种低级签名函数(盲签)没有任何风险提醒,eth_sign 这是一种非常危险的低级签名,大大加剧了 WalletConnect 这个问题钓鱼的风险。

不过如果只是禁用了 eth_sign 也不是完全没有风险(本文仅是拿 eth_sign 举例说明),我们还是呼吁更多的钱包开始禁用它。以用户数量最多的 MetaMask 钱包为例,其插件端已经在 2023 年 2 月 10 号发布的 V10.25.0 版本默认禁用 eth_sign,而移动端也在 2023 年 3 月 1 号发布的版本号为 6.11 开始默认不支持 eth_sign,用户需要到设置里手动打开才能使用它。

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

(Refer: https://github.com/MetaMask/metamask-extension/pull/17308)

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

(Refer: https://github.com/MetaMask/metamask-mobile/pull/5848)

不过值得一提的是,MetaMask 6.11 版本之后添加了对 DApp 进行 URI 请求的校验,但是这个校验在 DApp 使用 WalletConnect 进行交互的时候,同样会进行弹窗警告,不过这个警告存在被无限制弹窗导致 DoS 的风险。

慢雾:警惕 Web3 钱包 WalletConnect 钓鱼风险

对个人用户来说,风险主要在 “域名、签名” 两个核心点,WalletConnect 这种钓鱼方式早已被很多恶意网站用于钓鱼攻击,使用时务必保持高度警惕。

对钱包项目方来说,首先是需要进行全面的安全审计,重点提升用户交互安全部分,加强所见即所签机制,减少用户被钓鱼风险,如:

  • 钓鱼网站提醒:通过生态或者社区的力量汇聚各类钓鱼网站,并在用户与这些钓鱼网站交互的时候对风险进行醒目地提醒和告警。

  • 签名的识别和提醒:识别并提醒 eth_sign、personal_sign、signTypedData 这类签名的请求,并重点提醒 eth_sign 盲签的风险。

  • 所见即所签:钱包中可以对合约调用进行详尽解析机制,避免 Approve 钓鱼,让用户知道 DApp 交易构造时的详细内容。

  • 预执行机制:通过交易预执行机制可以帮助用户了解到交易广播执行后的效果,有助于用户对交易执行进行预判。

  • 尾号相同的诈骗提醒:在展示地址的时候醒目的提醒用户检查完整的目标地址,避免尾号相同的诈骗问题。设置白名单地址机制,用户可以将常用的地址加入到白名单中,避免类似尾号相同的攻击。

  • 在交易显示上,可以增加对小额或者无价值代币交易的隐藏功能,避免尾号钓鱼。

  • AML 合规提醒:在转账的时候通过 AML 机制提醒用户转账的目标地址是否会触发 AML 的规则。


文章来源: https://www.freebuf.com/articles/blockchain-articles/365429.html
如有侵权请联系:admin#unsafe.sh