WalletConnect 钓鱼风险介绍
2023 年 1 月 30 日,慢雾安全团队发现 Web3 钱包上关于 WalletConnect 使用不当可能存在被钓鱼的安全风险问题。这个问题存在于使用移动端钱包 App 内置的 DApp Browser + WalletConnect 的场景下。
我们发现,部分 Web3 钱包在提供 WalletConnect 支持的时候,没有对 WalletConnect 的交易弹窗要在哪个区域弹出进行限制,因此会在钱包的任意界面弹出签名请求。
当用户离开 DApp Browser 界面切换到钱包其他界面如示例中的 Wallet、Discover 等界面,由于钱包为了不影响用户体验和避免重复授权,此时 Wallet Connect 的连接是没有断开的,但是此时用户却可能因为恶意 DApp 突然发起的签名请求弹窗而误操作导致被钓鱼转移走资产。
慢雾:Transit Swap黑客攻击交易被抢跑,套利机器人获利超100万美元:10月1日消息,据慢雾安全团队情报,Transit Swap 黑客转移用户 BSC 链 BUSD 资产时被套利机器人抢跑,区块高度为21816885,获利107万BUSD。套利机器人相关地址列表如下:0xa957...70d2、0x90b5...8ff4、0xcfb0...7ac7、
截止到目前,在各方的共同努力下,黑客已将 70% 左右的被盗资产退还到Transit Swap开发者地址,建议套利机器人所属人同样通过service/img/2023525195345/2.jpg">
攻击者利用恶意 DApp 钓鱼网站引导用户使用 WalletConnect 与钓鱼页面连接后,然后定时不间断发送恶意的签名请求(如 eth_sign 这种盲签、授权签名、针对特殊智能合约协议的交易签名等,后面以 eth_sign 作为举例)。用户识别到 eth_sign 可能不安全拒绝签名后,由于 WalletConnect 采用 wss 的方式进行连接,如果用户没有及时关闭连接,钓鱼页面会不断的发起构造恶意的 eth_sign 签名弹窗请求,用户在使用钱包的时候有很大的可能会错误的点击签署按钮,导致用户的资产被盗。
慢雾:Inverse Finance遭遇闪电贷攻击简析:据慢雾安全团队链上情报,Inverse Finance遭遇闪电贷攻击,损失53.2445WBTC和99,976.29USDT。慢雾安全团队以简讯的形式将攻击原理分享如下:
1.攻击者先从AAVE闪电贷借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子获得5,375.5个crv3crypto和4,906.7yvCurve-3Crypto,随后攻击者把获得的2个凭证存入Inverse Finance获得245,337.73个存款凭证anYvCrv3Crypto。
2.接下来攻击者在CurveUSDT-WETH-WBTC的池子进行了一次swap,用26,775个WBTC兑换出了75,403,376.18USDT,由于anYvCrv3Crypto的存款凭证使用的价格计算合约除了采用Chainlink的喂价之外还会根据CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的实时余额变化进行计算所以在攻击者进行swap之后anYvCrv3Crypto的价格被拉高从而导致攻击者可以从合约中借出超额的10,133,949.1个DOLA。
3.借贷完DOLA之后攻击者在把第二步获取的75,403,376.18USDT再次swap成26,626.4个WBTC,攻击者在把10,133,949.1DOLAswap成9,881,355个3crv,之后攻击者通过移除3crv的流动性获得10,099,976.2个USDT。
4.最后攻击者把去除流动性的10,000,000个USDTswap成451.0个WBT,归还闪电贷获利离场。
针对该事件,慢雾给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/6/16 4:32:58]
这个安全问题的核心是用户切换 DApp Browser 界面到其他界面后,是否应继续自动弹窗响应来自 DApp Browser 界面的请求,尤其是敏感操作请求。因为跨界面后盲目弹窗响应很容易导致用户的误操作。
慢雾:BSC项目Value DeFi vSwap 模块被黑简析:据慢雾区情报,币安智能链项目 Value DeFi 的 vSwap 模块被黑,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:
1. 攻击者首先使用 0.05 枚 WBNB 通过 vSwap 合约兑换出 vBSWAP 代币;
2. 攻击者在兑换的同时也进行闪电贷操作,因此 vSwap 合约会将兑换的 vBSWAP 代币与闪电贷借出的 WBNB 转给攻击者;
3. 而在完成整个兑换流程并更新池子中代币数量前,会根据池子的 tokenWeight0 参数是否为 50 来选择不同的算法来检查池子中的代币数量是否符合预期;
4. 由于 vSwap 合约的 tokenWeight0 参数设置为 70,因此将会采用第二种算法对池子中的代币数量进行检查;
5. 而漏洞的关键点就在于采用第二种算法进行检查时,可以通过特殊构造的数据来使检查通过;
6. 第二种算法是通过调用 formula 合约的 ensureConstantValue 函数并传入池子中缓存的代币数量与实时的代币数量进行检查的;
7. 在通过对此算法进行具体分析调试后我们可以发现,在使用 WBNB 兑换最小单位(即 0.000000000000000001) vBSWAP 时,池子中缓存的 WBNB 值与实时的值之间允许有一个巨大的波动范围,在此范围内此算法检查都将通过;
8. 因此攻击者可以转入 WBNB 进行最小单位的 vBSWAP 代币兑换的同时,将池子中的大量 WBNB 代币通过闪电贷的方式借出,由于算法问题,在不归还闪电贷的情况下仍可以通过 vSwap 的检查;
9. 攻击者只需要在所有的 vSwap 池子中,不断的重复此过程,即可将池子中的流动性盗走完成获利。详情见原文链接。[2021/5/8 21:37:37]
这里面涉及到一个安全原则:WalletConnect 连接后,钱包在检测到用户切换 DApp Browser 界面到其他界面后,应该对来自 DApp Browser 的弹窗请求不进行处理。
慢雾: 警惕比特币RBF风险:据BitMEX消息,比特币于区块高度666833出现陈腐区块,并产生了一笔 0.00062063 BTC 的双花交易。根据 BitMEX提供的交易内容来看,双花的两笔交易的nSequence字段的值都小于0xffffffff -1。慢雾安全团队初步认为此次双花交易有可能是比特币中的RBF交易。[2021/1/20 16:38:01]
另外需要注意的是,虽然移动端钱包 App + PC 浏览器的 WalletConnect 连接场景也存在同样的问题,但是用户在这种场景下或许不那么容易误操作。
WalletConnect 连接后界面切换的处理情况
慢雾安全团队抽取市面热门搜索和下载量比较大的 20 个 Crypto Wallet App 进行测试:
根据上表测试结果,我们发现:
1. 部分热门钱包 App 如 MetaMask、Enjin Wallet、Trust Wallet、SafePal Wallet 及 iToken Wallet 等,在 WalletConnect 连接后切换到其他界面时,会自动响应 DApp 的请求,并弹出签名窗口。
动态 | 慢雾:Electrum“更新钓鱼”盗币攻击补充预警:Electrum 是全球知名的比特币轻钱包,支持多签,历史悠久,具有非常广泛的用户群体,许多用户喜欢用 Electrum 做比特币甚至 USDT(Omni) 的冷钱包或多签钱包。基于这种使用场景,Electrum 在用户电脑上使用频率会比较低。Electrum 当前最新版本是 3.3.8,而已知的 3.3.4 之前的版本都存在“消息缺陷”,这个缺陷允许攻击者通过恶意的 ElectrumX 服务器发送“更新提示”。这个“更新提示”对于用户来说非常具有迷惑性,如果按提示下载所谓的新版本 Electrum,就可能中招。据用户反馈,因为这种攻击,被盗的比特币在四位数以上。本次捕获的盗币攻击不是盗取私钥(一般来说 Electrum 的私钥都是双因素加密存储的),而是在用户发起转账时,替换了转账目标地址。在此我们提醒用户,转账时,需要特别注意目标地址是否被替换,这是近期非常流行的盗币方式。并建议用户使用 Ledger 等硬件钱包,如果搭配 Electrum,虽然私钥不会有什么安全问题,但同样需要警惕目标地址被替换的情况。[2020/1/19]
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,用户需要到设置里手动打开才能使用它。
(Refer: https://github.com/MetaMask/metamask-extension/pull/17308)
(Refer: https://github.com/MetaMask/metamask-mobile/pull/5848)
不过值得一提的是,MetaMask 6.11 版本之后添加了对 DApp 进行 URI 请求的校验,但是这个校验在 DApp 使用 WalletConnect 进行交互的时候,同样会进行弹窗警告,不过这个警告存在被无限制弹窗导致 DoS 的风险。
总结与建议
对个人用户来说,风险主要在 “域名、签名” 两个核心点,WalletConnect 这种钓鱼方式早已被很多恶意网站用于钓鱼攻击,使用时务必保持高度警惕。
对钱包项目方来说,首先是需要进行全面的安全审计,重点提升用户交互安全部分,加强所见即所签机制,减少用户被钓鱼风险,如:
钓鱼网站提醒:通过生态或者社区的力量汇聚各类钓鱼网站,并在用户与这些钓鱼网站交互的时候对风险进行醒目地提醒和告警。
签名的识别和提醒:识别并提醒 eth_sign、personal_sign、signTypedData 这类签名的请求,并重点提醒 eth_sign 盲签的风险。
所见即所签:钱包中可以对合约调用进行详尽解析机制,避免 Approve 钓鱼,让用户知道 DApp 交易构造时的详细内容。
预执行机制:通过交易预执行机制可以帮助用户了解到交易广播执行后的效果,有助于用户对交易执行进行预判。
尾号相同的提醒:在展示地址的时候醒目的提醒用户检查完整的目标地址,避免尾号相同的问题。设置白名单地址机制,用户可以将常用的地址加入到白名单中,避免类似尾号相同的攻击。
在交易显示上,可以增加对小额或者无价值代币交易的隐藏功能,避免尾号钓鱼。
AML 合规提醒:在转账的时候通过 AML 机制提醒用户转账的目标地址是否会触发 AML 的规则。
请持续关注慢雾安全团队,更多的钓鱼安全风险分析与告警正在路上。
慢雾科技作为一家行业领先的区块链安全公司,在安全审计方面深耕多年,安全审计不仅让用户安心,更是降低攻击发生的手段之一。其次,各家机构由于数据孤岛,难以关联识别出跨机构的团伙,给反工作带来巨大挑战。而作为项目方,及时拉黑阻断恶意地址的资金转移也是重中之重。MistTrack 反追踪系统积累了 2 亿多个地址标签,能够识别全球主流交易平台的各类钱包地址,包含 1 千多个地址实体、超 10 万个威胁情报数据和超 9 千万个风险地址,如有需要可联系我们接入 API。最后希望各方共同努力,一起让区块链生态更美好。
慢雾科技
个人专栏
阅读更多
金色财经 善欧巴
Chainlink预言机
白话区块链
金色早8点
Odaily星球日报
Arcane Labs
深潮TechFlow
欧科云链
BTCStudy
MarsBit
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。