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進行,因為已無法追溯。
攻擊者共計得到下列戰利品:
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到步驟7),對其他代幣池發動攻擊。攻擊的機制類似,但是通過閃電貸借得和用來進行攻擊的代幣種類略有不同。
最終攻擊者將得到的1.413164269999604596COMP放到Uniswap交易為1.466344591877333617ETH離場。
同樣的攻擊hash2:0xa519835c366bc77d93c9d3e433e653bfc46120688ad146b383f4dd93342cad29
聲明:本文由入駐金色財經的作者撰寫,觀點僅代表作者本人,絕不代表金色財經贊同其觀點或證實其描述。
提示:投資有風險,入市須謹慎。本資訊不作為投資理財建議。