Belt Finance 是一種基于幣安智能鏈(BSC)的去中心化借貸協(xié)議,攻擊者通過智能合約開始對(duì) 4Belt BLP 池發(fā)起閃電貸攻擊。
據(jù)悉,攻擊方創(chuàng)建了一份使用 PancakeSwap 進(jìn)行閃電貸的智能合約,并利用 BeltBUSD 池及其底層策略協(xié)議先后對(duì)合約內(nèi)容執(zhí)行了 8 次,借此攫取了高達(dá) 6234753 BUSD 的收益。BeltBUSD 金庫(kù)用戶遭受 21.36% 的資金損失,而 4Belt 幣池用戶則遭受 5.51% 資金損失。
攻擊過程
據(jù) Belt Finance 團(tuán)隊(duì)介紹,攻擊者首先利用 PancakeSwap 中的漏洞獲得了總值 3.9 億 BUSD 的閃電貸額度,這已經(jīng)接近 PancakeSwap 上全部 BUSD 池所能提供的最大 BUSD 金額。之后,攻擊方將其中約 2 億 BUSD 存入 BeltBUSD 金庫(kù)(使用 Venus 策略協(xié)議),并借此極大提升了 Venus 策略的整體占比。
在攻擊活動(dòng)發(fā)生之前,BeltBUSD 金庫(kù)的協(xié)議比例為:Venus 約占 6000 萬 BUSD,Alpaca 占 6000 萬 BUSD,Ellipsis 占 6000 萬 BUSD,而 ForTube 約占 2000 萬 BUSD,總量約為 2 億 BUSD。但在吸納了攻擊者的存入之后,Venus 掌握了約 2.6 億 BUSD,也讓 BeltBUSD 的總儲(chǔ)量快速提升至 4 億左右。
攻擊者同時(shí)還將 1.9 億 BUSD 轉(zhuǎn)移至 Ellipsis.fi 3pool,并將這 1.9 億 BUSD 兌換為約 1.695 億 USDT。此次兌換令 Ellipsis 3pool LP 值在短時(shí)間內(nèi)猛增。3pool LP 的供應(yīng)關(guān)系雖然沒有改變,但這 2150 萬美元的差值仍然令 3pool LP 快速增值約 3%。這又將 4Belt 池 Ellipsis 策略的幣值占比由 6000 萬 BUSD 增加至 6180 萬 BUSD,也讓整個(gè) BeltBUSD 金庫(kù)總值由 4 億 BUSD 增加至 4.018 億 BUSD(漲幅約 0.5%)。
在此之后,攻擊者開始從 BeltBUSD 金庫(kù)中提現(xiàn)離場(chǎng),獲得了 2 億 BUSD 總額中約 0.5% 的存入收益,即約 100 萬 BUSD(進(jìn)場(chǎng)前 2 億 BUSD,離場(chǎng)時(shí) 2.01 億 BUSD)收益。接下來,攻擊方在 Ellipsis 上將 USDT 兌換回 BUSD,令 LP 重新回歸之前的正常值,而 BeltBUSD 金庫(kù)則因此憑空損失掉了這 100 萬 BUSD。
之后,攻擊者通過智能合約多次重復(fù)執(zhí)行這同一筆交易(由 Tx gas 允許的上限而定),去掉閃電貸費(fèi)用與 Ellipsis 掉期費(fèi)用外的即為最終實(shí)際獲利。接下來,攻擊者將 BUSD 形式的利潤(rùn)轉(zhuǎn)至自有地址并兌換為 anyETH,再使用 Nerve Bridge 將這筆 anyETH 發(fā)往以太坊主網(wǎng)。整個(gè)攻擊流程從 PancakeSwap 閃電貸開始,到向以太坊主見發(fā)送 anyETH 結(jié)束,前后共重復(fù)了 8 次。
解決方案
在使用 StrategyEllipsis 的情況下,Belt Finance 團(tuán)隊(duì)使用 isPoolSafe ( ) 限制發(fā)生價(jià)格缺口時(shí)的提現(xiàn)活動(dòng)?,F(xiàn)在,面向各項(xiàng)策略,團(tuán)隊(duì)決定通過檢查 Ellipsis 的掉期狀態(tài)解決這一隱患。當(dāng) USDC、BUSD 與 USDT 之間存在比例偏差時(shí),會(huì)限制用戶的提現(xiàn)與存入操作。如此一來,攻擊者將無法順利操縱 Ellipsis LP 價(jià)格。
在開發(fā)過程中,Belt Finance 團(tuán)隊(duì)添加了以下函數(shù),以防止 Ellipsis Pool 值出現(xiàn)異常時(shí)被攻擊者所利用:
這里的 isPoolSafe 函數(shù)將通過衡量 Ellipsis 3pool 的代幣比率(即包含的最大與最低代幣數(shù)量間的比值)來檢查其健康狀況。此函數(shù)能夠防止 Belt 受到異常 StableWap AMM 比率的影響。
isPoolSafe 函數(shù)將在 _deposit ( ) 與 _withdraw ( ) 函數(shù)執(zhí)行之前與之后檢查池健康狀況,如果池比率發(fā)生偏差,則交易將被直接還原以防止語句的實(shí)際更新。如此,Belt Finance 團(tuán)隊(duì)就能有效防止 Ellipsis 策略受到閃電貸攻擊的影響。
通過使用 Ellipsis 掉期,攻擊者即可瞬時(shí)操縱 ellipsisSwap 合約中 BUSD、USDC 與 USDT 的比例,借此操縱 3pool LP 的價(jià)格。
在之前的設(shè)計(jì)中,Belt Finance 團(tuán)隊(duì)并沒有考慮到負(fù)責(zé)計(jì)算 Ellipsis 策略中 wantTotalLocked ( ) Ellipsis 3Pool 比率的 epsToWant ( ) (一項(xiàng) MultiToken 函數(shù))被破壞并影響到其他策略存取交易的情況。這項(xiàng)函數(shù)只是與 Read 相關(guān)的接口,Belt Finance 團(tuán)隊(duì)表示沒有想到它會(huì)與閃電貸發(fā)生直接關(guān)聯(lián)。
結(jié)果,閃電貸導(dǎo)致 Ellipsis 策略中的 wantTotalLocked 值增加,MultiVault 則以高于實(shí)際資產(chǎn)量的值運(yùn)行了提取操作。此次攻擊活動(dòng),在根本上利用的也正是這項(xiàng)漏洞。
黑客盯上 BSC
Belt Finance 只是 BSC 上被攻擊的項(xiàng)目之一。5 月份,PancakeBunny 遭受攻擊,損失了 300 萬美元;類似的項(xiàng)目 Bogged Finance 也在閃電貸款攻擊中損失了幾乎相同的金額;Burgerswap 在一次閃電貸攻擊中損失 720 萬美元。
“ 最近已經(jīng)接連發(fā)生超過 8 起針對(duì) BSC 鏈上項(xiàng)目的閃電貸攻擊,我們認(rèn)為現(xiàn)在有一個(gè)有組織的黑客團(tuán)隊(duì)盯上了 BSC?!盉SC 官方發(fā)文表示。The Block 數(shù)據(jù)顯示,因?yàn)榻诘暮诳凸羰录?,BSC 已有部分鎖倉(cāng)資金回流至以太坊,總鎖倉(cāng)量回落至 20 億美元。
因此,BSC 官方呼吁所有 DApp 采取如下措施進(jìn)行預(yù)防保護(hù):
與審計(jì)公司合作進(jìn)行另一次健康檢查。如果是分叉項(xiàng)目,請(qǐng)反復(fù)檢查相對(duì)原始版本進(jìn)行的更改;
采取必要的風(fēng)險(xiǎn)控制措施,實(shí)時(shí)主動(dòng)監(jiān)控異常情況,一旦出現(xiàn)異常及時(shí)暫停協(xié)議;
制定應(yīng)急計(jì)劃,以防真的出現(xiàn)最壞的情況;
如果條件允許可設(shè)定漏洞賞金計(jì)劃;
安全公司 PeckShield 和 CertiK 也為 BSC 項(xiàng)目的任何安全咨詢服務(wù)提供綠色通道。
隨著 DeFi 發(fā)展以及整個(gè)加密社區(qū)的發(fā)展,黑客攻擊事件一直層出不窮。區(qū)塊鏈網(wǎng)絡(luò)和鏈上項(xiàng)目需要更多的安全規(guī)范和相應(yīng)審查機(jī)制來防止攻擊事件頻繁發(fā)生。