此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase机制相结合,攻击者可以通过重入来凭空获得巨额收益分配。
原文标题:《闪电贷重入攻击,OUSD损失700万美金技术简析》撰文:慢雾安全团队
据慢雾区情报,2020年11月17日,以太坊DeFi项目OUSD遭受闪电贷攻击。慢雾安全团队于第一时间跟进并进行相关分析。以下是慢雾安全团队针对本次攻击的简要分析。攻击过程详细分析会在稍后发布。如有兴趣可保持持续关注。
背景提要
OriginDollar(OUSD)由OriginProtocol(OUSD)创建,是一种新型的ERC-20稳定币,当它仍然放在钱包里时,会自动从DeFi协议中获得有竞争力的收益。OUSD由USDT、USDC和DAI等其他稳定币的1:1支持。
币安智能链上Belt Finance遭闪电贷攻击 损失620万美元资金:据官方消息,币安智能链(BSC)上的 Belt Finance 遭遇闪电贷攻击,损失 620 万美元。
攻击者利用闪电贷,通过 8 笔交易从 Belt Finance 协议中获得超过 620 万美元资金,并已将大部分资金转换成 anyETH 并提取到以太坊。
此前消息,AMM 协议 Belt Finance 遭到闪电贷攻击。[2021/5/30 22:55:58]
攻击流程简析
1.攻击者使用dydx闪电贷借出70000个ETH,随后通过Uniswap将其兑换为USDT和DAI。
Warp Finance:拟定计划追回闪电贷攻击损失中的550万美元:12月18日,Warp Finance针对遭到的闪电贷攻击发布声明。据称,闪电贷攻击者最多可盗走价值770万美元的稳定币,不过Warp Finance团队已拟定计划来追回仍在抵押金库中的价值约550万美元的稳定币,这550万美元将按比例分给遭受损失的用户。此外,团队也已制定另外的计划来补偿受损用户。此前报道,12月18日,Warp Finance在推特表示,正在调查最近一小时内被借出的违规稳定币贷款,建议用户不要再存入稳定币,直到官方查明情况为止。随后Defiprime评论称,DeFi协议Warp Finance遭遇闪电贷攻击,约800万美元被盗。[2020/12/18 15:39:32]
2.攻击者调用OUSDVault的mint函数,Vault会先进行一次rebase将之前积累的奖励进行分配,随后将750万USDT从攻击者合约转入OUSDVault中。此时OUSD合约会铸出等量的750万OUSD代币给攻击合约,最后通过allocate来结算当前的收益。
Origin Protocol公布“OUSD闪电贷攻击”详细补偿计划:12月12日,Origin Protocol公布详细补偿计划,提供相当于存入OUSD价值100%的补偿。根据OUSD持有量以及黑客入侵前后的活动,将获得各种补偿。大约三分之二的受影响用户将以新铸造的OUSD形式获得全额补偿(由稳定币全力支持,经过审计,并采用新的安全措施重新推出)。其余受影响的用户(主要是较大的储户)将获得25%的OUSD补偿,75%的补偿来自锁定一年的Origin代币OGN,锁定部分将获得25%的利息。Origin Protocol计划在1月中下旬部署补偿合约,并且需要在接下来的90天内提出索赔要求。
此前,Origin Protocol遭遇闪电贷攻击,造成约700万美元损失。[2020/12/12 15:00:10]
3.在攻击者转入750万之前,Vault的价值约为7018138美元。攻击者转入750万USDT后将占Vault总价值的一半以上。
Balancer回应闪电贷攻击:计划将通缩代币添至黑名单:Balancer两个流动性矿池今晨被爆出遭到闪电贷攻击,被转移资产价值约为50万美元。Balancer官方随即对此事发布博客进行回应。此次攻击让攻击者从STA和STONK两个代币池中获取资金,遭遇攻击的两个代币均为带有转账费的代币,也称通缩代币。Balancer还还原了此次攻击的流程,黑客将通过闪电贷从dYdX借出ETH并转换为WETH,不断交易WETH和STA,在每笔交易中,STA都需要支付一笔转账费,该资金池将会在不收取费用的情况下获得余额。调用足够次数后,攻击者调用gulp(),该操作会将代币余额的内部池记帐同步到代币追踪合约中存储的实际余额。最后由于STA的余额接近于零,因此其相对于其他代币的价格非常高,此时攻击者可使用STA以极低价交换代币池中的其他资产。由于此类攻击只限于通缩代币,Balancer称下一步会将通缩代币添加到UI黑名单中。目前Balancer已经通过两次全面审核,即将开始第三次协议审核。[2020/6/29]
4.随后攻击合约利用mintMultiple函数传入DAI合约地址与攻击合约的地址,同样是先进行一次rebase,将之前累计的收益进行分配(包含先前转入的750万USDT部分),再通过transferFrom先将攻击合约的2050万DAI转入Vault中。随后将调用攻击合约的transferFrom函数,攻击者在攻击合约的transferFrom函数中构造再次调用Vault合约mint函数的逻辑来实现重入攻击。
5.在上一步骤中转入2050万DAI后通过攻击合约的transferFrom函数再次调用Vault的mint函数。由于重入时传入2000USDT符合判断是否调用rebase的条件,此时将进行一次rebase,而由于rebase需要Vault中的资产总价值和OUSD的总铸币数有差值才能触发。按照原本的业务场景是进行allocate结算收益后改变Vault中的资产总价值然后通过rebase进行分配。而由于重入原因并没有先通过oUSD.mint进行铸币操作,且攻击者已先将2050万的DAI转入Vault中,所以Vault中的资产总价值仍然增加了,导致合约中的资产总价值大于OUSD的总铸币量。因此Vault会将增加的2050万DAI当成收益部分进行rebase分配。在步骤3中由于攻击者资产已占Vault总价值的一半以上,所以此时攻击者将凭空获得超过价值1025万的收益分配。
6.随后将通过oUSD.mint铸出2000OUSD,并通过allocate结算重入时2000USDT的收益(从上一步骤可以看出攻击合约传入的2000USDT只是为了满足调用rebase的条件,触发收益分配而已)。重入结束后仍将通过oUSD.mint铸出之前转入的2050万DAI等值的OUSD代币。
7.最后Vault的总价值约为3501万美元,但攻击者所拥有的价值超过3825万美元,因此攻击者用大部分的OUSD去Vault进行赎回操作,将Vault基本提空,而其余的OUSD是通过Uniswap和Sushiswap的OUSD-USDT池将OUSD换成USDT来增加收益。
总结
此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase收益分配机制相结合,导致攻击者可以通过重入来凭空获得巨额的收益分配。针对此类情况,慢雾安全团队建议对传入资产进行检查后,对不在白名单内的资产直接进行回滚,并使用防重入锁以避免重入攻击。
相关链接:
参考攻击交易:0xe1c76241dda7c5fcf1988454c621142495640e708e3f8377982f55f8cf2a8401
Uniswap
Uniswap
Uniswap一种简单的无代币交换协议,被称为去中心化的Shapeshift或者Bancor,已经在主网上启动。用Vyper写作,Gas消耗奇低无比。UniswapUniswapUniswapUniswapUniswapUNI查看更多OriginProtocol
标签:USDOUSDULTVAULTIUSD价格OUSD价格UltraNote InfinityDFNORM Vault (NFTX)
12月20日,2020网易未来大会·区块链与人工智能专场论坛于杭州盛大举行。大会上,中国工程院院士、全国政协委员、湖南工商大学校长、中南大学商学院名誉院长陈晓红在《区块链的数字新使命》主题演讲时.
1900/1/1 0:00:00作者:肖磊看市公众号:kanshi1314今天跟大家讨论一个非常棘手的问题,那就是在美国民主党拜登即将执政的未来四年里,美国内部经济政策到底将会走向何处.
1900/1/1 0:00:00最近,GAS费推上了风口浪尖,之所以如此备受关注,是因为近期GAS费飙升了近三百多万倍,交易信息量增长超过100%,导致单笔手续费异常之高。全网手续费由每天的数十枚FIL,增长到3万多枚FIL.
1900/1/1 0:00:00金色财经区块链12月21日讯?随着比特币一路高歌猛进突破2万美元美元历史高位,市场上开始出现了一大批支持者,与此同时看衰声音也不绝于耳。这两派系各自为营,并都拿出了各自创立的模型企图说服对方.
1900/1/1 0:00:00Pass这个通行证的概念在游戏行业流行已久,却一直如鸡肋。battle与之的结合,也仍名不副实。想要通过让玩家购买Pass,从而通过日常战斗完成任务来获得成就,这一初衷被无端扭曲.
1900/1/1 0:00:00比特币意外通胀或大规模回滚都可以称作灾难性事件,BitMEX发文介绍了其开源工具ForkMonitor,提供了意外通胀检测的解决方案.
1900/1/1 0:00:00