区块链技术博客
www.b2bchain.cn

区块链技术慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

第20465篇区块链技术文章区块链技术慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

由于定义错误,如果跨链充值的erc20代币符号为eth,则会出现逻辑错误;正是通过部署假币合约,攻击者完成了跨链假币充值

原文标题:“假币变脸把戏——技术破解thorchain跨链系统“假币充值”漏洞”
作者:Johan,在慢雾安全团队工作

据慢雾地区新闻报道,2021年6月29日,分散式跨链交易协议thorchain在微博上发布消息称,发生了针对thorchain的恶意攻击,therchain节点已经响应、隔离和防御。慢雾安保小组首次介入分析。经过分析,发现这是针对跨链系统的“虚假充值”攻击。结果如下:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

什么是「假充值」?

当我们谈到“虚假充值”攻击时,通常会说攻击者利用公共链的某些特性绕过交易所的充值进入程序进行虚假充值,而真正记录下来的

慢雾在前期已经披露了太多的“假充值”攻击:

  • USDT 假充值:USDT 虚假转账安全⻛险分析 | 2345 新科技研究院区块链实验室
  • EOS 假充值:EOS 假充值 (hard_fail 状态攻击) 红色预警细节披露与修复方案
  • 以太坊代币假充值:以太坊代币「假充值」漏洞细节披露及修复方案
  • 比特币 RBF 假充值风险:比特币 RBF 假充值风险分析

随着renvm、thorchain等跨链服务的兴起,跨链节点充当交换节点,通过扫描另一个公共链的资产转移,在本地公共链上生成资产映射。正是通过这种机制,Therachain将以太坊上的令牌转移到其他的公共链上,我们从业务逻辑条目中跟踪分析了这个漏洞的原因,首先在处理跨链充值事件时,我们调用**getassetfromtokenaddress**方法来获取令牌信息,并将资产合同地址作为参数传入:

漏洞分析

Bifrost/PKG/chainclients/Ethereum/Ethereum blockscanner。在getassetfromtokenaddress方法中,我们可以看到它调用**gettokenmeta**来获取令牌元数据。此时,它还将资产合同地址作为参数传入。然而,这里有一个定义引起了我们的警惕。初始化令牌时,默认情况下会给出令牌符号eth。这是漏洞的关键点之一:Asset:=common.ethasset。如果合同地址对应的令牌符号是eth,这里的符号验证将被绕过

Bifrost/PKG/chainclients/Ethereum/Ethereum blockscanner。继续验证我们的猜想。我们可以看到,当系统中不存在当代货币的地址时,我们会从以太坊主链获取合同信息,并用获得的符号构造新的令牌,此时,所有导致漏洞的原因都被揭示出来:

Bifrost/PKG/chainclients/Ethereum/Ethereum blockscanner。转到Bifrost/PKG/chainclients/Ethereum/tokensDB。转到Bifrost/PKG/chainclients/Ethereum/Ethereum blockscanner。转到

总结一下,首先,由于定义错误,如果跨链充值erc20令牌符号是eth,就会出现逻辑错误,导致充值令牌被标识为真正的eth

让我们看看攻击事务的执行过程。我们可以提取充值代币合约地址:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

我们可以检查以太网上的代币合约地址:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

并发现与此地址对应的代币符号是eth,攻击者部署了一个伪造的代币合约,完成跨链虚假充值

漏洞补丁:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

发现攻击后,项目方迅速修复代码,删除默认令牌类型,使用common.emptyasset定义空令牌,并在后续逻辑中使用asset.isempty()进行判断,未经分配过滤虚假充值令牌

幸好项目方及时发现攻击,未造成巨大财产损失。然而,作为一个跨链系统,未来可能会积累大量的多链资金,其安全性不容忽视。因此,慢雾安保团队建议,在设计跨链系统时,应充分考虑不同公链、不同代币的特点,全面开展“假充值”测试,做好状态监测和预警工作,必要时联系专业安全公司进行安全审核

总结一下,首先是由于错误的定义,如果跨链充值的 ERC20 代币符号为 ETH,那么将会出现逻辑错误,导致充值的代币被识别为真正的以太币 ETH

还原攻击真相

我们来看一笔攻击交易的执行过程,可以提取出充值的代币合约地址:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

我们在 Etherscan 上查看这个代币合约地址:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

发现这个地址对应的合约的代币符号正是 ETH,攻击者正是通过部署了假币合约,完成了这次跨链假充值。

漏洞修复

漏洞补丁:

慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞

项目方在发现攻击后快速对代码进行了修复,删除了默认的代币类型,使用 common.EmptyAsset 进行空代币定义,并在后续逻辑中使用 asset.IsEmpty()进行判断,过滤了没有进行赋值的假充值代币。

总结

幸运的是项目方及时发现了本次攻击,未造成巨额财产损失,但作为跨链系统,未来可能聚集巨额的多链资金,安全性不容忽视,因此慢雾安全团队建议在进行跨链系统设计时应充分考虑不同公链不同代币的特性,充分进行「假充值」测试,做好状态监控和预警,必要时可联系专业安全公司进行安全审计。

区块链技术慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/20465.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 区块链技术慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们