此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase机制相结合,攻击者可以通过重入来凭空获得巨额收益分配。
原文标题:《闪电贷重入攻击,OUSD损失700万美金技术简析》撰文:慢雾安全团队
据慢雾区情报,2020年11月17日,以太坊DeFi项目OUSD遭受闪电贷攻击。慢雾安全团队于第一时间跟进并进行相关分析。以下是慢雾安全团队针对本次攻击的简要分析。攻击过程详细分析会在稍后发布。如有兴趣可保持持续关注。
背景提要
OriginDollar(OUSD)由OriginProtocol(OUSD)创建,是一种新型的ERC-20稳定币,当它仍然放在钱包里时,会自动从DeFi协议中获得有竞争力的收益。OUSD由USDT、USDC和DAI等其他稳定币的1:1支持。
安全团队:MEV Bot 0x5f32遭闪电贷攻击,攻击者获利约10.8万美元:金色财经报道,据CertiK监测,MEV Bot 0x5f32遭到闪电贷攻击。攻击者0xa7f5...获利约10.8万美元。
攻击者合约地址: 0xf0be9805fe8e393e8f768fe8fe4d8b8531d2f61e。[2023/1/19 11:20:30]
攻击流程简析
1.攻击者使用dydx闪电贷借出70000个ETH,随后通过Uniswap将其兑换为USDT和DAI。
2.攻击者调用OUSDVault的mint函数,Vault会先进行一次rebase将之前积累的奖励进行分配,随后将750万USDT从攻击者合约转入OUSDVault中。此时OUSD合约会铸出等量的750万OUSD代币给攻击合约,最后通过allocate来结算当前的收益。
Earning.Farm遭受闪电贷攻击,黑客获利268 ETH:10月15日消息,据Supremacy安全团队监测,Earning.Farm的EFLeverVault合约遭到两次闪电贷攻击,第一笔攻击被MEV bot截获,造成合约损失480 ETH;第二笔黑客完成攻击,黑客获利268 ETH。
经过分析,漏洞是由合约的闪电贷回调函数未验证闪电贷发起者产生,攻击者可自行触发合约的闪电贷回调逻辑:偿还合约内的Aave stETH债务并提现,然后将stETH兑换为ETH。随后攻击者可调用withdraw函数提现所有合约内的ETH余额。[2022/10/15 14:28:46]
3.在攻击者转入750万之前,Vault的价值约为7018138美元。攻击者转入750万USDT后将占Vault总价值的一半以上。
CertiK:Redemption-LP遭到闪电贷套利攻击 损失15万WFTM:据CertiK安全团队监测,Redemption-LP于北京时间2022年4月18日19点35分遭到闪电贷套利攻击,损失约合110万元人民币(15万WFTM)。该事件发生的原因在于:闪电贷在还款前,不收取任何费用,相应的代币会直接从Redemption-LP pair转给distributor,导致Redemption-LP与其他正常pair之间出现价格差异。[2022/4/19 14:32:42]
4.随后攻击合约利用mintMultiple函数传入DAI合约地址与攻击合约的地址,同样是先进行一次rebase,将之前累计的收益进行分配(包含先前转入的750万USDT部分),再通过transferFrom先将攻击合约的2050万DAI转入Vault中。随后将调用攻击合约的transferFrom函数,攻击者在攻击合约的transferFrom函数中构造再次调用Vault合约mint函数的逻辑来实现重入攻击。
PancakeBunny更新代码以防止此前类似闪电贷攻击再次发生:官方消息,PancakeBunny针对此前闪电贷攻击表示,已更改代码,以防止类似闪电贷攻击再次发生,主要包括:1. 函数[PriceCalculatorBSC.sol]已更新,因此代币价格预言机可以使用Chainlink合约;2. 更新代码以便如果Bunny minter的货币对合约中存在不平衡的货币对,协议将对其进行检查,消除过多的不规则(灰尘)并无缝地消除流动性。PancakeBunny已经对该策略进行了回测,并确认它可以阻止潜在的闪电贷攻击。[2021/5/21 22:29:07]
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
亲爱的用户: 圣诞节就要来临,GX准备了丰厚的暖心好礼等你来拿,一起来看看吧!这个圣诞节,GX请你看电影!活动期间参与合约实盘交易,已结算即已平仓的订单号尾数为25的幸运用户.
尊敬的用户: 币虎创新区于2020年12月22日18:00上线GRT/USDT交易对。同时,币虎合约交易区上线GRTUSDT永续合约,并开通逐仓/全仓1-50倍杠杆,邀您体验!截止目前,币虎合约.
比特币主要由三个部分组成。其中,工作量证明和公钥密码学这两个部分均基于数学层面,第三个部分则是人类行为。说白了,比特币要想持续运行下去,是需要人来维护的,因此离不开经济激励系统。
尊敬的用户: Hotbit即将开启TAD(TadpoleFinance)数字资产服务。 具体安排如下: 充值时间:2021年01月08日15:00交易时间:2021年01月12日15:00(香港.
8月31日,根据币安最新行情显示,YFI最高触及39690USDT,目前价格基本稳定在33000USDT左右,至此,YFI成为2020年第一个万倍币,用时仅43天.
摘要:Coinbase提交上市计划估值280亿;Mt.Gox清算赔偿方案已向东京地方法院提交;灰度以太坊信托完成份额拆分;芝加哥交易所将于2021年2月8日推出以太坊期货;比特大陆2019年亏损.