Balancer:闪电贷+恒定积损失50万美金
2020年6月29日,Balancer遭受闪电贷攻击,Balancer是使用恒定积进行的AMM市场,池子中的Assets在遵守恒定积的前提下可按池子当时的利率进行交换,本次闪电贷攻击利用了该原理,将一种Asset掏空后,用另一种Assets以很低的价格获取,由此获利接近50万美金。
攻击hash:0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106
攻击步骤:
1.攻击者去dYdX借贷104kWETH;
Deribit推出首个比特币波动率交易合约:金色财经报道,加密货币衍生品交易所 Deribit 今天宣布即将推出 BTC DVOL 期货,该合约建立在 DVOL(Deribit 比特币波动率指数)之上,以促进比特币波动率交易。DVOL 是衡量 BTC 市场预期或隐含波动率的指标,可以深入了解投资者的价格预期和市场的整体健康状况。[2023/3/18 13:11:33]
2.攻击者在Balancer的WETH-STA池子里将步骤1得来的WETH不断地换成STA代币,21次之后,池子中的STA被掏空,只剩下1weiSTA(由于通缩模型,至少会剩余1weiSTA在池子里);
3.攻击者按照恒定积公式,使用1weiSTA不断地获取池子中的WETH,价格分别为1weiSTA:30,347WETH,1weiSTA:15,173WETH等等,进行18次兑换之后,WETH几乎被兑空;
4.同理,攻击者也将WBTC-STA,SNX-STA,LINK-STA池子进行了同样的操作;
5.攻击者去dYdX退回104kWETH;
6.攻击者将获取的少量STA(<50weiSTA)放入Balancer池子里添加流动性,由于池子里目前STA数量很少,仅有1weiSTA,因此攻击者此时获取了很高的LPshare,这些share可以获取池子的代币奖励,共计获取了136kSTA;
7.攻击者将136kSTA兑换成了109WETH,由此完成整个攻击过程。
攻击完毕之后,攻击者将得到的币转入0xbf675c80540111a310b06e1482f9127ef4e7469a,该地址的所有操作都由Tornado进行,因为已无法追溯。
攻击者共计得到下列战利品:
?455WETH($100kworth)
?2.4mSTA($100kworth)andconverteditto109WETH($25kworth)
?11.36WBTC($100kworth)
?60.9kSNX($100kworth)
?22.6kLINK($100kworth)
Balancer:Compound金融模型漏洞
2020年6月29日,攻击者从dYdX闪电贷中借到代币并铸币后,通过uniswap闪贷获得cWBTC和cBAT代币,然后将借得的代币在Balancer代币池中大量交易,从而触发Compound协议的空投机制,获得空投的COMP代币,再使用Balancer有漏洞的gulp()函数更新代币池数量后,取走所有代币并归还闪电贷。攻击者相当于利用了Compound协议的金融模型、闪电贷和Balancer代码漏洞,无中生有了COMP,总获利约为11.5ETH。
攻击hash1:0x70959fef9d7cc4643a0e885f66ec21732e9243ffd3773e4a9ea9b5ab669bab4d(使用Tokenview浏览器搜索)
攻击过程:
1.从dYdX处通过闪电贷形式借得WETH、DAI和USDC三种代币,数额分别是103067.20640667767WETH、5410318.972365872DAI和5737595.813492USDC。
2.使用步骤1中得到的代币,在Compound中借贷cETH、cDAI和cUSDC,也就是对三种代币(cETH、cDAI和cUSDC)进行铸币操作(mint),量为5,150,226.00337039cETH,264,123,046.64278978cDAI,272,429,456.68851376cUSDC。
3.从Compound处通过闪电贷借得WBTC、BAT,数额分别是1380WBTC、49000000BAT,
4.使用步骤3中得到的代币,在Compound中借贷cWBTC、cBAT,也就是铸造(mint)cWBTC,cBAT代币。量为68,474.79460157cWBTC,2,407,985,254.35853495cBAT。
5.携带获得的cWBTC与cBAT加入Balancer的代币池,此时攻击者拥有的cWBTC和cBAT的数目分别为4955.85562685cWBTC和55144155.96523628cBAT。
6.分别用cWBTC和cBAT在Balancer的该代币池中进行大量的交易,从而触发COMP空投(Airdrop)操作,将这些空投的COMP分发到Balancer该代币池中。
7.调用gulp()函数将当前的COMP数目同步到Balancer智能合约中,并将cWBTC、cBAT以及额外被加入代币池中的COMP取出。退出代币池时,攻击者拥有的cWBTC和cBAT的数目同样为4955.85562685和55144155.96523628。但是由于在代币池中通过大量交易产生的额外COMP代币。此处攻击者还可以选择直接进入其他代币池中,复用步骤1到步骤6的攻击方法,获得额外COMP代币。
8.偿还Compound和dYdX的闪电贷,离场。
9.攻击者仍旧可以采用同样的方法,对其他代币池发动攻击。攻击的机制类似,但是通过闪电贷借得和用来进行攻击的代币种类略有不同。
最终攻击者将得到的1.413164269999604596COMP放到Uniswap交易为1.466344591877333617ETH离场。
同样的攻击hash2:0xa519835c366bc77d93c9d3e433e653bfc46120688ad146b383f4dd93342cad29
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。