DeFi再傳閃電貸攻擊! Popsicle和Wault損失超過2000萬美元
8月4日,去中心化造市商Popsicle Finance和收益聚合平臺Wault Finance接連遭到駭客攻擊,分別損失2,070萬美元和88.8萬美元。
PeckShield安全人員第一時間定位分析,發(fā)現(xiàn)在Popsicle Finance的安全事件中,攻擊者創(chuàng)建了3個合約,即合約A、B、C,并在8個流動池中重復(fù)調(diào)用A.deposit()、A.transfer(B)、B.collectFees()、B.transfer(C)、C.collectFees()進行攻擊。
簡述Popsicle Finance攻擊過程:
第一步:攻擊者從Aave中通過閃電貸借出3,000萬USDT、1,300WETH、1,400BTC、3,000萬USDC、3,000萬DAI和200,000UNI。
第二步:調(diào)用合約A的deposit()函數(shù),在USDT-WETHPLP流動池中添加3,000萬USDT和5,460WETH,同時獲得10.52PLPtokens。
第三步:A將10.52PLPtokens轉(zhuǎn)給B。
第四步:調(diào)用合約B的collectFees()函數(shù),旨在更新tokenRewards。
第五步:B將10.52PLPtokens轉(zhuǎn)給C。
第六步:調(diào)用合約C的collectFees()函數(shù),旨在更新tokenRewards。
第七步:C將10.52PLPtokens轉(zhuǎn)給A,便于A移除流動性。
第八步:調(diào)用合約A的withdraw()函數(shù),移除流動性,A獲得3,000萬USDT和5,460WETH。
第九步:調(diào)用合約B的collectFees()函數(shù),獲得獎勵215萬USDT和392WETH。
第十步:調(diào)用合約C的collectFees()函數(shù),獲得獎勵215萬USDT和402WETH。
最后,攻擊者重復(fù)操作二至十的步驟,歸還閃電貸完成攻擊。
PeckShield安全人員發(fā)現(xiàn)Wault Finance的攻擊手段和此前損失1,000多萬美元的yDAI相似,即使在USDT-WEX交易對的價格被操縱的情況下,stake()函數(shù)仍可通過相關(guān)的USDT-WEX交易對,強制將USDT兌換為WEX。
簡述Wault Finance攻擊過程:
第一步:攻擊者通過閃電貸從WUSD-USDT池中借出1,683萬WUSD。
第二步:調(diào)用WUSD Master贖回1,503萬USDT(90%)和1.065億WEX(10%),此時WEX的價格為0.015USDT。
第三步:攻擊者從PancakeSwap通過閃電貸借出4,000萬USDT,并將其中2,300萬USDT兌換為WEX,此時WEX的價格上升至0.044USDT,攻擊者獲得5.179億WEX。
第四步:攻擊者重復(fù)調(diào)用stake()函數(shù),質(zhì)押68次25萬USDT(總計1,700萬USDT),每次質(zhì)押WUSD Master都會將其中10%的USDT強制兌換為WEX,此時WEX的價格為0.14USDT。
第五步:攻擊者歸還1,688萬WUSD閃電貸。
第六步:攻擊者用6.24億WEX兌換為USDT,獲得2,593萬USDT,隨后歸還4,012萬USDT的閃電貸;此時攻擊者獲利11萬WUSD和84萬USDT,并將這些代幣在PancakeSwap上兌換為370ETH,并通過AnySwap跨鏈到以太坊上。
受到安全事件的影響,WEX一度腰斬,從0.012美元跌至最低0.006美元,截稿前已回調(diào)至0.0099美元。