原文标题:《假币的换脸戏法 —— 技术拆解 THORChain 跨链系统「假充值」漏洞》 据慢雾区消息,2021 年 6 月 29 日,去中心化跨链交易协议 THORChain 发推称发现一个针对 THORChain 的恶意攻击,THORChain 节点已作出反应并进行隔离和防御。慢雾安全团队第一时间介入分析,经分析发现,这是一起针对跨链系统的「假充值」攻击,结果分享如下: 什么是「假充值」? 当我们在谈论「假充值」攻击时,我们通常谈的是攻击者利用公链的某些特性,绕过交易所的充值入账程序,进行虚假充值,并真实入账。 慢雾在早期已经披露过多起「假充值」攻击事件: USDT 假充值:USDT 虚假转账安全?险分析 | 2345 新科技研究院区块链实验室EOS 假充值:EOS 假充值 (hard_fail 状态攻击) 红色预警细节披露与修复方案以太坊代币假充值:以太坊代币「假充值」漏洞细节披露及修复方案比特币 RBF 假充值风险:比特币 RBF 假充值风险分析随着 RenVM、THORChain 等跨链服务的兴起,跨链节点充当起了交易所的角色,通过扫描另一条公链的资产转移情况,在本地公链上生成资产映射。THORChain 正是通过这种机制,将以太坊上的代币转移到其它公链。 漏洞分析 我们从业务逻辑入口去追踪分析此漏洞的成因。 首先看到在处理跨链充值事件时,调用了 **getAssetFromTokenAddress **方法去获取代币信息,并传入了资产合约地址作为参数: bifrost/pkg/chainclients/ethereum/ethereumblockscanner.go 在getAssetFromTokenAddress方法里,我们看到它调用了 **getTokenMeta **去获取代币元数据,此时也传入了资产合约地址作为参数,但在此处有一个定义引起我们的警觉,在初始化代币时,默认赋予了代币符号为ETH,这就是漏洞的关键点之一:asset := common.ETHAsset,如果传入合约地址对应的代币符号为 ETH,那么此处关于symbol的验证将被绕过。 bifrost/pkg/chainclients/ethereum/ethereumblockscanner.go
bifrost/pkg/chainclients/ethereum/ethereumblockscanner.go bifrost/pkg/chainclients/ethereum/tokens_db.go bifrost/pkg/chainclients/ethereum/ethereumblockscanner.go 总结一下,首先是由于错误的定义,如果跨链充值的 ERC20 代币符号为ETH,那么将会出现逻辑错误,导致充值的代币被识别为真正的以太币ETH。 还原攻击真相 我们来看一笔攻击交易的执行过程,可以提取出充值的代币合约地址: 我们在 Etherscan 上查看这个代币合约地址: 发现这个地址对应的合约的代币符号正是ETH,攻击者正是通过部署了假币合约,完成了这次跨链假充值。 漏洞修复 漏洞补丁: 项目方在发现攻击后快速对代码进行了修复,删除了默认的代币类型,使用common.EmptyAsset进行空代币定义,并在后续逻辑中使用asset.IsEmpty()进行判断,过滤了没有进行赋值的假充值代币。 总结 幸运的是项目方及时发现了本次攻击,未造成巨额财产损失,但作为跨链系统,未来可能聚集巨额的多链资金,安全性不容忽视,因此慢雾安全团队建议在进行跨链系统设计时应充分考虑不同公链不同代币的特性,充分进行「假充值」测试,做好状态监控和预警,必要时可联系专业安全公司进行安全审计。 免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻 ChainNews 立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。 —- 编译者/作者:区块链网络 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
慢雾:技术拆解 THORChain 跨链系统「假充值」漏洞
2021-07-03 区块链网络 来源:链闻
LOADING...
相关阅读:
- 通过治理决定以太坊 Gas Limit 的协议 Ethereum Eagle 已启动2021-07-03
- “元宇宙”的未来,将和每个人息息相关2021-07-03
- 华为阿里云亚马逊等商业巨头布局IPFS商业价值不可估量2021-07-03
- 战国局面下的BTC:某国将长期压制;某国将有限度支持;某些国将全面2021-07-03
- 丁佳永:以太坊内大量资金停驻大爆发的时机恐已不远2021-07-03