此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase机制相结合,攻击者可以通过重入来凭空获得巨额收益分配。
原文标题:《闪电贷重入攻击,OUSD损失700万美金技术简析》撰文:慢雾安全团队
据慢雾区情报,2020年11月17日,以太坊DeFi项目OUSD遭受闪电贷攻击。慢雾安全团队于第一时间跟进并进行相关分析。以下是慢雾安全团队针对本次攻击的简要分析。攻击过程详细分析会在稍后发布。如有兴趣可保持持续关注。
背景提要
OriginDollar(OUSD)由OriginProtocol(OUSD)创建,是一种新型的ERC-20稳定币,当它仍然放在钱包里时,会自动从DeFi协议中获得有竞争力的收益。OUSD由USDT、USDC和DAI等其他稳定币的1:1支持。
Cream闪电贷攻击报告:关键漏洞在于可包装代币的价格计算,损失1.3亿美元:11月1日消息,抵押借贷平台 Cream Finance 针对 10 月 27 日闪电贷攻击发布详细报告,表示正在与当局合作追踪攻击者,此次攻击损失约 1.3 亿美元,将在未来几天公布详细的还款计划。Cream 表示,此次攻击混合了经济攻击和预言机攻击,攻击者从 MakerDAO 闪电贷出 DAI 来创建大量 yUSD 代币,同时通过操纵多资产流动性池,利用价格预言机计算 yUSD 价格,yUSD 价格升高后,攻击者的 yUSD 头寸增加,创造了足够的借入限额来抵消 Cream 以太坊 v1 市场的流动性。Cream 称已暂停 Cream Finance 中以太坊 v1 市场的所有交互,关键漏洞在于可包装代币的价格计算,已经停止了所有可包装代币的供应 / 借贷,包括所有 PancakeSwap LP 代币。[2021/11/1 6:24:39]
攻击流程简析
BSC链上自动做市商BurgerSwap遭闪电贷攻击:5月28日消息,PeckShield派盾预警显示,BSC链上自动做市商BurgerSwap疑似遭遇闪电贷攻击,被盗超过432,874个Burger,约330万美元,目前攻击者已通过1inch获利变现,目前仍有20万枚Burger。有一名为EdisonOh投资者表示,其在投资了100万美元并质押了xBURGER池,目前流动性从100万美元下降到只有1万美元,损失了97%。[2021/5/28 22:51:18]
1.攻击者使用dydx闪电贷借出70000个ETH,随后通过Uniswap将其兑换为USDT和DAI。
Bogged Finance 团队确认因闪电贷攻击损失 300 万美元,目前漏洞已被封锁:DeFi 协议 Bogged Finance 官方表示,黑客对 BOG 代币合约质押功能漏洞进行了闪电贷攻击,从流动性池中抽出了 300 万美元资金,黑客利用 Pancake Pair Swap 代码,在合约验证完成前即提取了质押收益。官方团队表示,目前流动性池中剩余的 800 万美元是安全的,黑客利用的漏洞已经被封锁,目前已无法被重复利用,Bogged Finance 所提供的工具仍可安全使用,团队正在修复前端显示问题。[2021/5/23 22:33:49]
2.攻击者调用OUSDVault的mint函数,Vault会先进行一次rebase将之前积累的奖励进行分配,随后将750万USDT从攻击者合约转入OUSDVault中。此时OUSD合约会铸出等量的750万OUSD代币给攻击合约,最后通过allocate来结算当前的收益。
Balancer回应闪电贷攻击:计划将通缩代币添至黑名单:Balancer两个流动性矿池今晨被爆出遭到闪电贷攻击,被转移资产价值约为50万美元。Balancer官方随即对此事发布博客进行回应。此次攻击让攻击者从STA和STONK两个代币池中获取资金,遭遇攻击的两个代币均为带有转账费的代币,也称通缩代币。Balancer还还原了此次攻击的流程,黑客将通过闪电贷从dYdX借出ETH并转换为WETH,不断交易WETH和STA,在每笔交易中,STA都需要支付一笔转账费,该资金池将会在不收取费用的情况下获得余额。调用足够次数后,攻击者调用gulp(),该操作会将代币余额的内部池记帐同步到代币追踪合约中存储的实际余额。最后由于STA的余额接近于零,因此其相对于其他代币的价格非常高,此时攻击者可使用STA以极低价交换代币池中的其他资产。由于此类攻击只限于通缩代币,Balancer称下一步会将通缩代币添加到UI黑名单中。目前Balancer已经通过两次全面审核,即将开始第三次协议审核。[2020/6/29]
3.在攻击者转入750万之前,Vault的价值约为7018138美元。攻击者转入750万USDT后将占Vault总价值的一半以上。
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
作者|老牛出品|白话区块链今年,交易平台暴雷不断:平台被盗币,创始人被抓、网站挤兑导致无法运营等等一系类问题......外加去中心化交易平台的崛起,Dex某些Token的深度甚至不输于三大,很多“老韭菜”便开始了提币运动.
1900/1/1 0:00:00一、 据路透社12月22日消息,资产管理公司CoinShares最新数据显示,今年到目前为止,投资者向加密货币基金和产品投入的总额达到56亿美元,较2019年增长了600%以上.
1900/1/1 0:00:00律动BlockBeats消息,12月19日,Coindesk采访了MulticoinCapital的执行董事MableJiang,请她讲述作为投资机构负责人之一对中外用户由于文化差异导致的投资理念不同.
1900/1/1 0:00:00文章来源:链闻ChainNews本报告采用一种全新方法审视coinbase交易中的地址,量化矿工的持币量和活动。这种方法改进了以前跟踪矿工支出的研究,之前的研究尝试无意中衡量的是矿池经营者的活动,而不是矿工的行为.
1900/1/1 0:00:00EIP是以太坊改进提案的缩写,协议实验室借鉴了EIP1559改进提案,来降低Filecoin交易费总额和交易波动性.
1900/1/1 0:00:00尊敬的用户: AOFEX将于2020年12月21日正式上线MW,具体时间安排如下:充值时间:12月23日14:00交易时间:12月23日15:00提币时间:12月24日15:00 MW简介 镜像网络是一个结合区块链与分布式存储的文件系.
1900/1/1 0:00:00