WalletConnect钓鱼风险介绍
2023年1月30日,慢雾安全团队发现Web3钱包上关于WalletConnect使用不当可能存在被钓鱼的安全风险问题。这个问题存在于使用移动端钱包App内置的DAppBrowser+?WalletConnect的场景下。
我们发现,部分Web3钱包在提供WalletConnect支持的时候,没有对WalletConnect的交易弹窗要在哪个区域弹出进行限制,因此会在钱包的任意界面弹出签名请求。
当用户离开DAppBrowser界面切换到钱包其他界面如示例中的Wallet、Discover等界面,由于钱包为了不影响用户体验和避免重复授权,此时WalletConnect的连接是没有断开的,但是此时用户却可能因为恶意DApp突然发起的签名请求弹窗而误操作导致被钓鱼转移走资产。
慢雾:针对macOS系统恶意软件RustBucket窃取系统信息:金色财经报道,SlowMist发布安全警报,针对macOS 运行系统的 Rust 和 Objective-C 编写的恶意软件RustBucket,感染链由一个 macOS 安装程序组成,该安装程序安装了一个带后门但功能正常的 PDF 阅读器。然后伪造的 PDF 阅读器需要打开一个特定的 PDF 文件,该文件作为触发恶意活动的密钥。[2023/5/23 15:20:27]
动态演示GIF如下图:
慢雾:跨链互操作协议Nomad桥攻击事件简析:金色财经消息,据慢雾区消息,跨链互操作协议Nomad桥遭受黑客攻击,导致资金被非预期的取出。慢雾安全团队分析如下:
1. 在Nomad的Replica合约中,用户可以通过send函数发起跨链交易,并在目标链上通过process函数进行执行。在进行process操作时会通过acceptableRoot检查用户提交的消息必须属于是可接受的根,其会在prove中被设置。因此用户必须提交有效的消息才可进行操作。
2. 项目方在进行Replica合约部署初始化时,先将可信根设置为0,随后又通过update函数对可信根设置为正常非0数据。Replica合约中会通过confirmAt映射保存可信根开始生效的时间以便在acceptableRoot中检查消息根是否有效。但在update新根时却并未将旧的根的confirmAt设置为0,这将导致虽然合约中可信根改变了但旧的根仍然在生效状态。
3. 因此攻击者可以直接构造任意消息,由于未经过prove因此此消息映射返回的根是0,而项目方由于在初始化时将0设置为可信根且其并未随着可信根的修改而失效,导致了攻击者任意构造的消息可以正常执行,从而窃取Nomad桥的资产。
综上,本次攻击是由于Nomad桥Replica合约在初始化时可信根被设置为0x0,且在进行可信根修改时并未将旧根失效,导致了攻击可以构造任意消息对桥进行资金窃取。[2022/8/2 2:52:59]
攻击者利用恶意DApp钓鱼网站引导用户使用WalletConnect与钓鱼页面连接后,然后定时不间断发送恶意的签名请求。用户识别到eth_sign可能不安全拒绝签名后,由于WalletConnect采用wss的方式进行连接,如果用户没有及时关闭连接,钓鱼页面会不断的发起构造恶意的eth_sign签名弹窗请求,用户在使用钱包的时候有很大的可能会错误的点击签署按钮,导致用户的资产被盗。
慢雾:yearn攻击者利用闪电贷通过若干步骤完成获利:2021年02月05日,据慢雾区情报,知名的链上机池yearnfinance的DAI策略池遭受攻击,慢雾安全团队第一时间跟进分析,并以简讯的形式给大家分享细节,供大家参考:
1.攻击者首先从dYdX和AAVE中使用闪电贷借出大量的ETH;
2.攻击者使用从第一步借出的ETH在Compound中借出DAI和USDC;
3.攻击者将第二部中的所有USDC和大部分的DAI存入到CurveDAI/USDC/USDT池中,这个时候由于攻击者存入流动性巨大,其实已经控制CruveDAI/USDC/USDT的大部分流动性;
4.攻击者从Curve池中取出一定量的USDT,使DAI/USDT/USDC的比例失衡,及DAI/(USDT&USDC)贬值;
5.攻击者第三步将剩余的DAI充值进yearnDAI策略池中,接着调用yearnDAI策略池的earn函数,将充值的DAI以失衡的比例转入CurveDAI/USDT/USDC池中,同时yearnDAI策略池将获得一定量的3CRV代币;
6.攻击者将第4步取走的USDT重新存入CurveDAI/USDT/USDC池中,使DAI/USDT/USDC的比例恢复;
7.攻击者触发yearnDAI策略池的withdraw函数,由于yearnDAI策略池存入时用的是失衡的比例,现在使用正常的比例体现,DAI在池中的占比提升,导致同等数量的3CRV代币能取回的DAI的数量会变少。这部分少取回的代币留在了CurveDAI/USDC/USDT池中;
8.由于第三步中攻击者已经持有了CurveDAI/USDC/USDT池中大部分的流动性,导致yearnDAI策略池未能取回的DAI将大部分分给了攻击者9.重复上述3-8步骤5次,并归还闪电贷,完成获利。参考攻击交易见原文链接。[2021/2/5 18:58:47]
这个安全问题的核心是用户切换DAppBrowser界面到其他界面后,是否应继续自动弹窗响应来自DAppBrowser界面的请求,尤其是敏感操作请求。因为跨界面后盲目弹窗响应很容易导致用户的误操作。
慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。
1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;
2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;
3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;
4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;
5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;
6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;
7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;
8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;
9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;
10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]
这里面涉及到一个安全原则:WalletConnect连接后,钱包在检测到用户切换DAppBrowser界面到其他界面后,应该对来自DAppBrowser的弹窗请求不进行处理。
声音 | 慢雾:采用链上随机数方案的 DApp 需紧急暂停:根据近期针对EOS DApp遭遇“交易排挤攻击”的持续性威胁情报监测:EOS.WIN、FarmEOS、影骰、LuckBet、GameBet、Fishing、EOSDice、STACK DICE、ggeos等知名DAPP陆续被攻破,该攻击团伙(floatingsnow等)的攻击行为还在持续。在EOS主网从根本上解决这类缺陷之前,慢雾建议所有采用链上随机数方案的DAPP紧急暂停并做好风控机制升级。为了安全起见,强烈建议所有竞技类DAPP采用EOS官方很早就推荐的链下随机种子的随机数生成方案[2019/1/16]
另外需要注意的是,虽然移动端钱包App+PC浏览器的WalletConnect连接场景也存在同样的问题,但是用户在这种场景下或许不那么容易误操作。
WalletConnect连接后界面切换的处理情况
慢雾安全团队抽取市面热门搜索和下载量比较大的20个CryptoWalletApp进行测试:
根据上表测试结果,我们发现:
1.部分热门钱包App如MetaMask、EnjinWallet、TrustWallet、SafePalWallet及iTokenWallet等,在WalletConnect连接后切换到其他界面时,会自动响应DApp的请求,并弹出签名窗口。
2.大部分测试的钱包App在切换界面后,对DApp的请求不会做出响应,也不会弹出提示窗口。
3.少数钱包App在测试环境下无法使用WalletConnect与DApp连接,如CoinbaseWallet和MEWCryptoWallet等。钱包的DApp中不是很适配?WalletConnect接口。
4.部分钱包App如ExodusWallet和EdgeWallet在连接测试环境下未找到相关的DApp进行测试,无法判断其切换界面后的响应情况。
WalletConnect钓鱼风险的发现和后续
慢雾安全团队最初在TrustWallet上发现这个问题,并通过Bugcrowd漏洞提交平台向他们提交了这个问题,我们获得了TrustWallet的感谢,他们表示将在下一个版本修复这个安全风险。
特别的是,如果钱包对eth_sign这种低级签名函数没有任何风险提醒,eth_sign这是一种非常危险的低级签名,大大加剧了WalletConnect这个问题钓鱼的风险。
不过如果只是禁用了eth_sign也不是完全没有风险,我们还是呼吁更多的钱包开始禁用它。以用户数量最多的MetaMask钱包为例,其插件端已经在2023年2月10号发布的V10.25.0版本默认禁用eth_sign,而移动端也在2023年3月1号发布的版本号为6.11开始默认不支持eth_sign,用户需要到设置里手动打开才能使用它。
不过值得一提的是,MetaMask6.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。最后希望各方共同努力,一起让区块链生态更美好。
标签:WALLETLETWALLALLpolkawallet.iomethylethylketonetrustwallet官网下载minifootball币行情
想找到自己的Alpha机会?使用以下15种免费工具是发现潜在机会的途径之一。1.Arkham作为Nansen的免费替代品,Arkham是一个令人印象深刻的数据平台,它允许你创建自己的仪表板、发现.
1900/1/1 0:00:00最近的香港格外热闹,大咖云集,人声鼎沸,香港当地酒店价格几乎是平时2-3倍,一些活动场地因为太火还被限制入内.
1900/1/1 0:00:00头条▌Lido社区关于批准授权成立金库管委会的提案已获投票通过4月28日消息,Snapshot投票页面显示.
1900/1/1 0:00:00作者:西柚,ChainCatcher近日,跨链基础设施LayerZero以30亿美元估值获得1.2亿美元B轮融资,让它再次成为加密社区的热点话题项目.
1900/1/1 0:00:002023年4月,香港交易所官方发布了一份名为《ETF与全球金融市场虚拟资产生态圈的发展》的研究报告.
1900/1/1 0:00:00作者:OrdinalsFinance;翻译:金色财经xiaozou多亏了比特币网络的Segwit和Taproot升级,Ordinals协议于1月诞生.
1900/1/1 0:00:00