ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DeFi 挖矿:Balancer遭闪电贷攻击与金融模型漏洞

2021-01-06 19:03:53  阅读:214  来源: 互联网

标签:cBAT 代币 Balancer WETH cWBTC 攻击者 DeFi 挖矿


Balancer: 闪电贷+恒定积损失50万美金

2020年6月29日,Balancer遭受闪电贷攻击,Balancer是使用恒定积进行的AMM市场,池子中的Assets在遵守恒定积的前提下可按池子当时的利率进行交换,本次闪电贷攻击利用了该原理,将一种Asset掏空后,用另一种Assets以很低的价格获取,由此获利接近50万美金。


攻击hash:0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106


攻击步骤:

1. 攻击者去dYdX借贷104k WETH;

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退回104k WETH;

6. 攻击者将获取的少量STA(<50weiSTA)放入Balancer池子里添加流动性,由于池子里目前STA数量很少,仅有1weiSTA,因此攻击者此时获取了很高的LP share,这些share可以获取池子的代币奖励,共计获取了136k STA;

7. 攻击者将136k STA 兑换成了109 WETH,由此完成整个攻击过程。


攻击完毕之后,攻击者将得到的币转入0xbf675c80540111a310b06e1482f9127ef4e7469a,该地址的所有操作都由Tornado进行,因为已无法追溯。


攻击者共计得到下列战利品:

  • 455 WETH ($100k worth)
  • 2.4m STA ($100k worth) and converted it to 109 WETH ($25k worth)
  • 11.36 WBTC ($100k worth)
  • 60.9k SNX ($100k worth)
  • 22.6k LINK ($100k worth)

Balancer: Compound金融模型漏洞


2020年6月29日,攻击者从dYdX闪电贷中借到代币并铸币后,通过uniswap闪贷获得cWBTC和cBAT代币,然后将借得的代币在Balancer代币池中大量交易,从而触发Compound协议的空投机制,获得空投的COMP代币,再使用Balancer有漏洞的gulp()函数更新代币池数量后,取走所有代币并归还闪电贷。攻击者相当于利用了Compound协议的金融模型、闪电贷和Balancer代码漏洞,无中生有了COMP,总获利约为11.5ETH。

攻击hash1:0x70959fef9d7cc4643a0e885f66ec21732e9243ffd3773e4a9ea9b5ab669bab4d

攻击过程:

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到步骤7),对其他代币池发动攻击。攻击的机制类似,但是通过闪电贷借得和用来进行攻击的代币种类略有不同。


最终攻击者将得到的1.413164269999604596COMP放到Uniswap交易为1.466344591877333617ETH离场。


同样的攻击hash2:0xa519835c366bc77d93c9d3e433e653bfc46120688ad146b383f4dd93342cad29


标签:cBAT,代币,Balancer,WETH,cWBTC,攻击者,DeFi,挖矿
来源: https://blog.csdn.net/Tokenview/article/details/112291001

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有