首頁 新聞 > 產(chǎn)業(yè) > 正文

斯巴達(dá)陷落—BSC首次閃電貸攻擊事件分析

5月2日,DeFi項(xiàng)目Spartan遭到黑客的閃電貸攻擊,斯巴達(dá)協(xié)議(Spartan Protocol)是一個資產(chǎn)流動性項(xiàng)目,旨在解決現(xiàn)有 AMM 協(xié)議以及合成資產(chǎn)所出現(xiàn)的各類問題。斯巴達(dá)協(xié)議的流動性池是此協(xié)議的核心,所有一切系統(tǒng)內(nèi)的相關(guān)應(yīng)用都離不開流動性池的支持。SpartanSwap 應(yīng)用了 THORCHAIN 的 AMM 算法。此算法采用流動性敏感資費(fèi)(Liquidity-sensitive fee)來解決流動性冷啟動以及滑點(diǎn)問題。

攻擊者利用閃電貸攻擊盜取了項(xiàng)目3000萬美元。其盜取資產(chǎn)的交易如下:

通付盾區(qū)塊鏈安全團(tuán)隊(duì)(SharkTeam)第一時間對此事件進(jìn)行了攻擊分析和技術(shù)分析,并總結(jié)了安全防范手段,希望后續(xù)的區(qū)塊鏈項(xiàng)目可以引以為戒,共筑區(qū)塊鏈行業(yè)的安全防線。

一、事件分析

通過分析交易,該事件中,閃電貸攻擊的流程如下:

(1)攻擊者首先通過閃電貸從PancakeSwap借出1000 WBNB,交易及詳情如下:

(2)攻擊者在出現(xiàn)漏洞的 Spartan 兌換池WBNB-SPT1中,分五次將 WBNB 兌換成 SPARTAN,從而導(dǎo)致兌換池中產(chǎn)生巨大滑點(diǎn)。

交易及詳情如下:

此時攻擊者有

2536,613.206101067206978364 SPARTA和 11853.332738790033677468 WBNB。

(3)攻擊者將這些Token(持有的WBNB與SPARTA)注入WBNB-SPT1交易池中添加流動性,獲得LP憑證,由于滑點(diǎn)修正機(jī)制,獲得的LP數(shù)量并不是正常值。

(4)進(jìn)行多次Swap操作,將WBNB兌換成SPARTA,池中WBNB增多,SPARTA減少。

(5)Swap后將持有的WBNB和SPARTA轉(zhuǎn)移給WBNB-SPT1池,進(jìn)行移除流動性操作。

移除流動性時會通過池中實(shí)時的代幣數(shù)量來計(jì)算用戶的LP可獲得多少對應(yīng)的代幣,由于步驟5,此時會獲得比添加流動性時更多的代幣。

(6)在移除流動性后會更新流動性池中的baseAmount與tokenAmount,由于移除流動性時沒有和添加流動性一樣存在滑點(diǎn)修正機(jī)制,移除流動性后兩種代幣的數(shù)量和合約記錄的代幣數(shù)量會存在一定差值。在與實(shí)際有差值的情況下,攻擊者繼續(xù)添加流動性獲得LP,然后攻擊者再次移除流動性就獲得了對應(yīng)代幣。

(7)最后,攻擊者將SPARTA代幣兌換回WBNB,獲得了更多WBNB。黑客通過以上步驟,以很小的成本獲得大量的WBNB,完成閃電貸攻擊。

二、通付盾區(qū)塊鏈安全知識課堂

根據(jù)整個攻擊過程的分析,與SharkTeam之前分析過的閃電貸攻擊的常用手法相同,并已收錄在了《通付盾2021Q1智能合約安全態(tài)勢感知報(bào)告》中https://mp.weixin.qq.com/s/I3mv-eZgZg7eTcerjs1Hiw 只不過發(fā)生的平臺從以太坊轉(zhuǎn)移到了幣安智能鏈。本次通付盾區(qū)塊鏈安全知識課堂帶您復(fù)習(xí)閃電貸攻擊的常見手法與防范手段。

DeFi項(xiàng)目的業(yè)務(wù)邏輯設(shè)計(jì)復(fù)雜,利用閃電貸這種新型產(chǎn)品進(jìn)行攻擊的DeFi事件在過去的一年里層出不窮。這些安全問題的深層次原因在于,在設(shè)計(jì)業(yè)務(wù)邏輯時,未考慮到某些關(guān)鍵性因素,如:彈性供應(yīng)機(jī)制、增發(fā)機(jī)制、清算機(jī)制設(shè)計(jì)不合理、鏈上價(jià)格及其他信息可被低成本操控等,導(dǎo)致了惡意套利、惡意增發(fā)等問題。攻擊者通過操縱 AMM 資產(chǎn)池內(nèi)的資產(chǎn)價(jià)格或者資產(chǎn)數(shù)量使關(guān)聯(lián)協(xié)議蒙受損失,我們不妨稱之為經(jīng)濟(jì)攻擊。至今出現(xiàn)的經(jīng)濟(jì)攻擊分為“哄抬套利”和“操縱預(yù)言機(jī)”兩種手法。

哄抬套利

哄抬套利攻擊的原理與 CeFi 常見的 Pump-and-Dump 市場操縱行為或者鏈上交易容易碰到的front running攻擊本質(zhì)上并無差異,都是先想辦法借助他人的資本抬高自有資產(chǎn)的價(jià)格再高價(jià)賣出獲利。DeFi 生態(tài)中此類經(jīng)濟(jì)攻擊事件之所以能夠成功,都與至少兩個核心模塊——攻擊目標(biāo)和 AMM 有關(guān)。

攻擊目標(biāo)與 AMM 之間存在資產(chǎn)轉(zhuǎn)移關(guān)系,并能由用戶自主觸發(fā)相關(guān)智能合約執(zhí)行資產(chǎn)轉(zhuǎn)移。這里的攻擊目標(biāo)可以是機(jī)槍池、借貸平臺、杠桿交易平臺等 DeFi 模塊。機(jī)槍池是運(yùn)行著一定投資策略的智能合約,可以把它類比于一個基金,為用戶提供代理理財(cái)業(yè)務(wù),用戶將自有資產(chǎn)存入機(jī)槍池以期獲得收益,例如 Yearn 、Harvest ;借貸平臺為出借方和貸方提供服務(wù),賺取利息差,貸方一般要先超額抵押一部分資產(chǎn),例如 Compound 、 Aave ;杠桿交易平臺允許投資者抵押一定資產(chǎn)作為保證金進(jìn)行杠桿交易,例如 bZx 。AMM 通過一個定價(jià)函數(shù)實(shí)現(xiàn)自動做市商交易,用戶可兌換資產(chǎn)或作為流動性提供商(LP)參與流動性挖礦。

除了攻擊目標(biāo)和AMM兩個核心模塊,實(shí)際攻擊過程中還要考慮到資金量、手續(xù)費(fèi)、智能合約在執(zhí)行交易前設(shè)置的檢查點(diǎn)等因素。攻擊者可通過建立優(yōu)化模型找到最優(yōu)參數(shù),預(yù)測哄抬套利收益來決定是否采取行動。這種攻擊手法的一般操作步驟如下:

哄抬套利攻擊的基礎(chǔ)模型(序號代表攻擊步驟,實(shí)線表示必要步驟,虛線代表或有步驟;攻擊目標(biāo)的凈值計(jì)算環(huán)節(jié)和 AMM 的定價(jià)函數(shù)在設(shè)計(jì)上存在被黑客利用的風(fēng)險(xiǎn))。

一般步驟為:

假設(shè) AMM 資產(chǎn)池里的流動性資產(chǎn)為 X、Y,流動性代幣為 C。

第一步,準(zhǔn)備。持有即將被哄抬的初始資產(chǎn) Y 及用于觸發(fā)攻擊目標(biāo)自動執(zhí)行策略的初始資產(chǎn) A。

第二步,哄抬。將資產(chǎn) A 發(fā)送至攻擊目標(biāo)的相關(guān)智能合約,獲得代幣 B (代表在機(jī)槍池、借貸平臺、杠桿交易平臺等攻擊平臺中的頭寸),并觸發(fā)智能合約向 AMM 資產(chǎn)池投入資產(chǎn) X,獲得資產(chǎn) Y 或流動性代幣 C,并抬高 AMM 資產(chǎn)池內(nèi)資產(chǎn) Y 的價(jià)格。

第三步,套利。攻擊者將步驟二中的資產(chǎn) Y 投入 AMM 資產(chǎn)池,以抬高后的價(jià)格獲得資產(chǎn) X 或流動性代幣 C。需要說明的是,第二、三步中的操作對應(yīng)于 swap (X、Y 之間交換)或流動性挖礦(X 或 Y 與 C 之間交換)。對于三個及以上幣種的 AMM,這里的 X 或 Y 可視為資產(chǎn)組合。

第四步,收尾。攻擊者根據(jù)代幣 B 的最新凈值及后續(xù)交易計(jì)劃決策是否贖回資產(chǎn) D。

對于流動性充足的資產(chǎn)池,為了在 AMM 里制造可觀的價(jià)格滑點(diǎn),往往需要投入很大的資金量,故攻擊者一般會從閃電貸借出初始資產(chǎn)。若閃電貸可供借貸的資產(chǎn)類別不滿足要求,攻擊者會去某些 AMM 或借貸平臺通過 swap、流動性挖礦、借貸等方式獲得;也不排除攻擊者直接去與攻擊目標(biāo)關(guān)聯(lián)的 AMM 獲取。若攻擊者在第一步的準(zhǔn)備過程中采用了閃電貸,那么在第四步就還需在同一筆攻擊交易中歸還閃電貸。

操縱預(yù)言機(jī)

操縱預(yù)言機(jī)攻擊可以認(rèn)為是哄抬套利攻擊的一種對稱操作,其攻擊目標(biāo)依賴 AMM 提供的信息對其內(nèi)部資產(chǎn)進(jìn)行定價(jià)。

操縱預(yù)言機(jī)攻擊的基礎(chǔ)模型(序號代表攻擊步驟,實(shí)線表示必要步驟,虛線代表或有步驟;攻擊目標(biāo)的凈值計(jì)算環(huán)節(jié)和 AMM 的定價(jià)函數(shù)在設(shè)計(jì)上存在被黑客利用的風(fēng)險(xiǎn))。

這種情況下攻擊者雖然無法利用攻擊目標(biāo)內(nèi)的資產(chǎn)去哄抬 AMM 內(nèi)某資產(chǎn)的價(jià)格,但可以考察 AMM 模塊作為預(yù)言機(jī)能否被操縱,從而哄抬攻擊目標(biāo)內(nèi)的資產(chǎn)。

攻擊目標(biāo)依賴 AMM 提供信息的主要目的有兩種:

(1)對抵押物進(jìn)行估值;

(2)對頭寸代幣進(jìn)行定價(jià)。

我們也可將其視為凈值計(jì)算,而攻擊者則專門尋找在凈值計(jì)算中與實(shí)際情況出現(xiàn)偏差的合約進(jìn)行操縱。一般步驟為:

第一步,準(zhǔn)備。獲得用于操縱 AMM 預(yù)言機(jī)的資產(chǎn) Y 及準(zhǔn)備存入攻擊目標(biāo)的資產(chǎn) A。

第二步,抵押。將資產(chǎn) A 抵押至攻擊目標(biāo),獲得代表抵押物的頭寸代幣 B,有些情況下,不發(fā)放頭寸代幣 B,只在智能合約內(nèi)部記賬。

第三步,操縱。將資產(chǎn) Y 投入 AMM 兌換資產(chǎn) X,改變 AMM 流動性池內(nèi)資產(chǎn)的比例從而改變報(bào)價(jià),更新攻擊目標(biāo)合約內(nèi)資產(chǎn) A 或頭寸代幣 B 的定價(jià)。

第四步,收尾。若為借貸業(yè)務(wù),則通過抬高的抵押物估值借出更多資產(chǎn)并不再歸還;若為機(jī)槍池業(yè)務(wù),則通過抬高價(jià)格后的頭寸代幣 B 贖回資產(chǎn),獲得增值收益。

三、安全建議

哄抬套利和操縱預(yù)言機(jī)攻擊模式本質(zhì)上都是對凈值計(jì)算環(huán)節(jié)的利用和操縱行為。故而在設(shè)計(jì) DeFi 系統(tǒng)的時候,妥善處理這一環(huán)節(jié)至關(guān)重要。

(1)最根本的預(yù)防措施就是取消用戶自動觸發(fā)交易策略鏈?zhǔn)綀?zhí)行或更新凈值的權(quán)限,從根本上阻斷攻擊者完成一整套連貫的操縱行為。

(2)安全審計(jì):智能合約安全關(guān)系用戶的財(cái)產(chǎn)安全,至關(guān)重要!區(qū)塊鏈項(xiàng)目開發(fā)者應(yīng)與專業(yè)的安全審計(jì)公司合作,為用戶的數(shù)字資產(chǎn)安全和項(xiàng)目本身安全提供保障。

(3)增加交易延遲:操縱價(jià)格預(yù)言機(jī)是一個對時間敏感的操作,因?yàn)樘桌呖偸窃谟^察,并希望有機(jī)會優(yōu)化任何次優(yōu)市場。如果攻擊者想把風(fēng)險(xiǎn)降到最低,他們會希望在單筆交易中完成操縱價(jià)格預(yù)言機(jī)所需的兩筆交易,這樣就不會有套利者夾在中間。作為協(xié)議開發(fā)者,可能只需要將用戶進(jìn)出系統(tǒng)之間的時間間隔增加1個區(qū)塊的延遲就可以一定程度上防范此類攻擊。

(4)時間加權(quán)平均價(jià)格(TWAP):Uniswap引入了一個TWAP預(yù)言機(jī),供鏈上開發(fā)者使用。有文檔詳細(xì)地介紹了該預(yù)言機(jī)提供的具體安全保障。一般來說,對于長期沒有鏈上擁堵的大型資產(chǎn)池來說,TWAP預(yù)言機(jī)對預(yù)言機(jī)操縱攻擊有很強(qiáng)的抵抗力。不過,由于其實(shí)施的性質(zhì),在市場波動較大的時刻,它的響應(yīng)速度可能不夠快,而且只適用于鏈上已經(jīng)有流動性的數(shù)字資產(chǎn)。

(5)M-of-N報(bào)告者機(jī)制:如今很多項(xiàng)目都在使用這種方法。Maker運(yùn)行了一組由可信實(shí)體運(yùn)營的喂價(jià)來源,Compound創(chuàng)建了Open Oracle,并擁有Coinbase等報(bào)告者,Chainlink聚合了Chainlink運(yùn)營商的價(jià)格數(shù)據(jù),并在鏈上公開。此方法也可有效的防范操縱預(yù)言機(jī)攻擊。

、通付盾智能合約審計(jì)BitScan

通付盾作為領(lǐng)先的區(qū)塊鏈安全服務(wù)提供商,為開發(fā)者提供智能合約審計(jì)服務(wù)。智能合約審計(jì)服務(wù)由自動化審計(jì)和人工審計(jì)構(gòu)成,滿足不同客戶需求,獨(dú)家實(shí)現(xiàn)覆蓋高級語言層、虛擬機(jī)層、區(qū)塊鏈層、業(yè)務(wù)邏輯層四個方面111項(xiàng)審計(jì)內(nèi)容,全面保障智能合約安全。

智能合約自動化審計(jì)在通付盾云平臺上為用戶提供智能合約進(jìn)行自動化審計(jì)服務(wù)。運(yùn)用符號執(zhí)行、形式化驗(yàn)證等智能合約分析技術(shù),保障智能合約安全運(yùn)行。

通付盾也為客戶提供高級別的區(qū)塊鏈安全服務(wù),區(qū)塊鏈安全專家團(tuán)隊(duì)7*24小時為智能合約提供全生命周期的安全保障,服務(wù)包括:VIP安全審計(jì)服務(wù)、VIP合規(guī)審計(jì)服務(wù)、安全事故應(yīng)急響應(yīng)等。

免責(zé)聲明:市場有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。

關(guān)鍵詞:

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2018 創(chuàng)投網(wǎng) - 670818.com All rights reserved
聯(lián)系我們:33 92 950@qq.com
豫ICP備2020035879號-12