据慢雾区消息,2021 年 6 月 29 日,去中心化跨链交易协议 THORChain 发推称发现一个针对 THORChain 的恶意攻击,THORChain 节点已作出反应并进行隔离和防御。慢雾安全团队第一时间介入分析,经分析发现,这是一起针对跨链系统的“假充值”攻击,结果分享如下:
什么是“假充值”?
当我们在谈论“假充值”攻击时,我们通常谈的是攻击者利用公链的某些特性,绕过交易所的充值入账程序,进行虚假充值,并真实入账。
随着 RenVM、THORChain 等跨链服务的兴起,跨链节点充当起了交易所的角色,通过扫描另一条公链的资产转移情况,在本地公链上生成资产映射。THORChain 正是通过这种机制,将以太坊上的代币转移到其它公链。
漏洞分析
我们从业务逻辑入口去追踪分析此漏洞的成因。
首先看到在处理跨链充值事件时,调用了 getAssetFromTokenAddress 方法去获取代币信息,并传入了资产合约地址作为参数:
- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go?
在 getAssetFromTokenAddress 方法里,我们看到它调用了 getTokenMeta 去获取代币元数据,此时也传入了资产合约地址作为参数,但在此处有一个定义引起我们的警觉,在初始化代币时,默认赋予了代币符号为 ETH,这就是漏洞的关键点之一:asset := common.ETHAsset,如果传入合约地址对应的代币符号为 ETH,那么此处关于 symbol 的验证将被绕过。
- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
继续验证我们的猜测,我们看到当代币地址在系统中不存在时,会从以太坊主链上去获取合约信息,并以获取到的 symbol 构建出新的代币,此时所有的漏洞成因都已经显现:
- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
- bifrost/pkg/chainclients/ethereum/tokens_db.go
- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
总结一下,首先是由于错误的定义,如果跨链充值的 ERC20 代币符号为 ETH,那么将会出现逻辑错误,导致充值的代币被识别为真正的以太币 ETH。
还原攻击真相
我们来看一笔攻击交易的执行过程,可以提取出充值的代币合约地址:
我们在 Etherscan 上查看这个代币合约地址:
发现这个地址对应的合约的代币符号正是 ETH,攻击者正是通过部署了假币合约,完成了这次跨链假充值。
漏洞修复
漏洞补丁:
项目方在发现攻击后快速对代码进行了修复,删除了默认的代币类型,使用 common.EmptyAsset 进行空代币定义,并在后续逻辑中使用 asset.IsEmpty() 进行判断,过滤了没有进行赋值的假充值代币。
总结
幸运的是项目方及时发现了本次攻击,未造成巨额财产损失,但作为跨链系统,未来可能聚集巨额的多链资金,安全性不容忽视,因此慢雾安全团队建议在进行跨链系统设计时应充分考虑不同公链不同代币的特性,充分进行“假充值”测试,做好状态监控和预警,必要时可联系专业安全公司进行安全审计。
软件正在吞噬世界。马克-安德森(Marc Andreessen)在2011年写的那篇文章中描述了软件原生公司是如何吞噬掉现有企业并彻底改变行业的。亚马逊取代了消费者销售,Spotify取代了音乐,LinkedIn取代了招聘--所有这些都准备取代那些没有建立互联网原生业务的现任者。 为什么?因为软件原生公司更快、更便宜,而且对用户更有利。
作者 | Vitalik Buterin 特别感谢 Justin Drake 和 Flashbots 团队的反馈和讨论。 对现在运行中的去中心化共识网络的一个重大威胁是关于矿工可提取价值 (miner extractable value) 的经济学,即从选择下一个区块内容的能力中提取利润的复杂技巧。
波卡先行测试网Kusama平行链开拍,预示着区块链即将进入“跨链”互操作新里程,如无意外,Web3.0概念和跨链技术都将成为加密领域狂热者们角逐的重要赛点,其将逐渐超越比特币以太坊等封闭性网络,推动开源网络的全链路共振作用发挥到最大,成为解决效率低下孤岛效应等行业难题的新兴打开方式。
一文了解 Defi 协议可能发生的「Rug Pull」和银行挤兑风险! 前提: “如果您不了解已投资或打算投资的加密项目的利弊,您可能会因市场操纵、智能合约错误或任何黑天鹅事件而感到意外,最终可能会失去辛苦赚来的钱。所以 DYOR 总是可取的:(Do Your Own Research:做你自己的研究)”。
在《比特币、以太坊的发展瓶颈即将消失,盘点过去4大方向的扩容方案,你看好哪些?》中我们介绍了通道、DPOS、大区块和侧链等扩容方法。 本篇我们来讲Rollup、分片、分层、工作历史证明和DAG等当前流行的“新扩容手段”。
MakerDAO 由丹麦企业家 Rune Christensen 于 2014 年创立。MakerDAO 是一个运行在以太坊上的稳定币发行协议。在撰写本文时,它的总 TVL 为 60 亿美元。 MakerDao 的基本功能很简单:当用户存入抵押品时,MakerDAO 会铸造并一个稳定币 DAI 并借给用户。