SharkTeam在之前的“十大智能合约安全威胁”系列课程中,根据历史发生的智能合约安全事件,总结分析了在智能合约领域中出现较多、危害最大的前10大漏洞。这些漏洞之前通常出现在Solidity智能合约中,那么对于Move智能合约来说,会不会存在相同的危害呢?SharkTeam【Move语言安全性分
SharkTeam在之前的“十大智能合约安全威胁”系列课程中,根据历史发生的智能合约安全事件,总结分析了在智能合约领域中出现较多、危害最大的前10大漏洞。这些漏洞之前通常出现在Solidity智能合约中,那么对于Move智能合约来说,会不会存在相同的危害呢? SharkTeam【Move语言安全性分析及合约审计要点】系列课程将带您逐步深入,内容包括权限漏洞、重入漏洞、逻辑校验漏洞、函数恶意初始化、回退攻击、提案攻击、合约升级漏洞、操纵预言机、三明治攻击、重放攻击。本章内容【操纵预言机】。
操纵价格预言机是DeFi领域中常见的攻击手段。对于链上的价格预言机,更加容易被操作,尤其是在一笔交易内,可以通过闪电贷来提供大笔的攻击资金,从而实现操纵价格预言机。
预言机(Oracle)是链接链上智能合约与链下现实环境的桥梁。价格预言机则是链上智能合约获取代币链上或链下价格的桥梁工具。 根据价格数据的来源,价格预言机分为两种:链上价格预言机和链下价格预言机。 链上价格预言机:价格数据来源于链上,如Uniswap交易对(AMM)价格 链下价格预言机:价格数据来源于链下,如Chainlink 根据提供价格数据的运营商,价格预言机又可分为两种:中心化价格预言机和去中心化价格预言机。 中心化价格预言机:价格预言机只能由单个运营商更新与验证,即反馈的价格来源单一。 去中心化价格预言机:价格预言机由多个运营商或用户更新与验证,即反馈的价格来源不一,可以由多个价格计算所得。
区块链项目所有安全事件中,操纵价格预言机所引起的安全事件是最常见的一种,尤其是对于链上价格预言机。此外,闪电贷可以以极低的手续费提供操纵价格预言机的大笔资金,为操作价格预言机攻击提供了极大的便利。 操纵价格预言机有两种方式: (1)闪电贷操纵链上的AMM价格:首先攻击者向上调整借入代币价格(或向下调整抵押品价格),最后通过价格清算抵押品。这种情况一般在链上中心化预言机以及去中心化交易所中,攻击者可以利用闪电贷在一笔交易中操纵AMM的价格,在贷方智能合约查找代币之前改变代币的现货价格。 (2)预言机故障导致随机攻击:2019年6月25日,衍生品平台Synthetix依赖的价格预言机,出现预言机喂价故障,机器人快速进出sKRW市场,最终造成大量的经济损失。 在两种方式中,安全事件中出现比较多的是第一种,比如发生在2021年5月的xToken安全事件以及Belt Finance安全事件。
2021年5月13日,DeFi 质押和流动性策略平台 xToken 遭到闪电贷和操纵价格预言机的攻击,xBNTa Bancor 池以及 xSNXa Balancer 池立即被耗尽,造成约 2500 万美元损失,其中,xSNXa 合约上直接损失的总价值为 416 枚 ETH。 经过对攻击交易的分析,攻击步骤如下: (1)攻击者先从dYdX中通过闪电贷借出大量的ETH,然后在AAVE中抵押ETH并借出SNX。并且通过Sushiswap将ETH兑换成 SNX。至此,攻击者储备了大量SNX (2)通过Uniswap将SNX全部兑换成ETH,此时Uniswap的ETH/SNX交易对中SNX的价格会变得非常低。 (3)攻击者此时通过xSNX合约使用ETH置换xSNX,由于xSNX使用了Kyber上的SNX价格,而Kyber的SNX价格是参考的Uniswap的ETH/SNX交易对SNX价格的,所以此时攻击者置换出了更多的xSNX。 (4)攻击者将账户中的xSNX置换成ETH和SNX后,归还闪电贷。剩余的代币即为此次攻击获利。 攻击者通过闪电贷操纵(调低)了SNX的价格,因为被攻击的合约中的xSNX使用了Kyber上的SNX价格,而Kyber的SNX价格是参考的Uniswap的预言机价格的。当SNX的价格被影响后直接导致xToken中xSNX价格不正常波动,造成攻击套利空间。
2021年5月30日,币安智能链(BSC)上多策略收益优化 AMM 协议 Belt Finance遭遇闪电贷攻击,四个资金池受到影响,损失620万美元。 经过对攻击交易分析,攻击过程如下: (1)攻击者从PancakeSwap中通过闪电贷,分8次,共计借出387315994 BUSD(3.87亿 BUSD);
(2)将其中1千万BUSD存入bEllipsisBUSD策略,Ellipsis 是以太坊上DeFi协议Curve授权Fork的项目;
(3)将1.87亿BUSD存入bVenusBUSD策略;
(4)通过Ellipsis合约将1.9亿BUSD兑换为1.69亿USDT;
至此,闪电贷的3.87亿BUSD均已投入攻击交易中。其中1.87亿存入bVenusBUSD策略,1千万存入bEllipsisBUSD策略,1.9亿通过Ellipsis兑换成1.69亿USDT。 (5)从bVenusBUSD策略中提取BUSD;
(6)通过Ellipsis将1.69亿USDT换成1.89亿BUSD;
(7)向bVenusBUSD策略中再次存入1.97亿BUSD;
重复步骤(5)~(7)多次,攻击者通过重复买入卖出 BUSD,最后从策略 bVenusBUSD中提取了更多的BUSD,使用1.69亿BUSDT兑换出1.89亿的BUSD。
(8)归还闪电贷,并将剩余资产转移获利。 总结以上步骤,此次攻击,是由于bEllipsis策略余额计算中的漏洞,造成攻击者操纵了beltBUSD 的价格。通过合约分析可知,beltBUSD 的价格依赖于机枪池中的余额,攻击者将BUSD存入bVenusBUSD策略再提出,由于资产的数量不变,即使重复操作,也不会获利。但此次攻击者也同时操作了其他策略(bEllipsisBUSD)对beltBUSD余额产生了影响,造成了计算漏洞的产生。
预言机是公链必备的一个基础设施,Move生态的公链,包括Starcoin、Aptos以及SUI,同样需要预言机。因此,Move公链定义了标准的Oracle协议,为公链提供更便捷的预言机服务。 Starcoin在Stdlib中定义了一套标准的Oracle协议。标准的Oracle协议使用安全可靠的智能合约Move编写,既保持了Starcoin去中心化等特点,也继承了Move的安全性。 Move生态中,除了链上的AMM可以作为价格预言机外,同样存在类似于Solidity生态的Chainlink这样的链下价格预言机基础设施,为DeFi项目的安全性提供一定保证,包括可以为Aptos提供价格预言机服务的Pyth、可以为Aptos和SUI提供价格预言机服务的SupraOracles等。
操纵价格预言机跟智能合约语言和区块链结构无关,只跟经济模型和预言机类型有关,属于经济攻击的一种。因此,Move合约同样可能面临操纵价格预言机的风险。 Solidity生态中多起操作价格预言机的安全事件告诉我们,闪电贷是操纵价格预言机的最有效的辅助手段。然而,在Move生态中,闪电贷的实现并不像Solidity那么便捷,这在一定程度上可以降低操纵价格预言机的风险,但并不能从根本上解决操纵价格预言机的问题。而且,闪电贷是DeFi的典型特色服务,未来必须会出现在各个Move公链生态中。真正能够避免价格操纵的方法是使用类似Solidity生态Chainlink的链下预言机,比如Pyth、SupraOracles。 Solidity生态的经验告诉我们,操纵价格预言机已经成为DeFi领域内非常普遍的安全问题,相信Move项目方在开发过程中会主动采取措施,从而避免操纵价格预言机的攻击。
SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg
更多区块链安全咨询与分析,点击下方链接查看
D查查|链上风险核查https://app.chainaegis.com
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!