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

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

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

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

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

一、事件分析

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

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

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

交易及詳情如下:

此時攻擊者有

2536,613.206101067206978364 SPARTA和 11853.332738790033677468 WBNB。

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

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

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

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

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

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

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

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

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

哄抬套利

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

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

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

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

一般步驟為:

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

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

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

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

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

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

操縱預言機

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

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

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

攻擊目標依賴 AMM 提供信息的主要目的有兩種:

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

(2)對頭寸代幣進行定價。

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

第一步,準備。獲得用于操縱 AMM 預言機的資產(chǎn) Y 及準備存入攻擊目標的資產(chǎn) A。

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

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

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

三、安全建議

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

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

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

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

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

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

、通付盾智能合約審計BitScan

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

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

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

免責聲明:市場有風險,選擇需謹慎!此文僅供參考,不作買賣依據(jù)。

關(guān)鍵詞:

最近更新

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

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