DeFi 協議的漏洞不僅來自程式碼缺陷或攻擊,還包括市場波動、治理操縱和流動性危機等經濟因素。傳統的技術(程式碼)稽核主要關注程式碼是否如預期運行,但通常無法考慮市場壓力或操縱等經濟條件對協定穩定性的影響。
技術(程式碼)審計旨在確保程式碼按預期運行,並且不存在可利用的漏洞或缺陷。然而,技術審計的範圍通常局限於對協議本身的獨立審查,而未能考慮更廣泛的經濟環境或協議之間的相互依賴性。
什麼是經濟審計?
經濟審計是一種超越技術審計範疇的安全實務。技術審計通常聚焦於發現程式碼漏洞或缺陷,而經濟審計則透過模擬真實市場條件和壓力測試,評估協議在各種經濟場景下的表現。
經濟審計的重點在於理解DeFi 協議內部的經濟交互,以及市場波動、流動性危機和治理操縱等外部因素如何利用協議的漏洞。
經濟審計的關鍵之一是模擬市場條件,例如價格的劇烈波動、流動性的變化或使用者行為的改變。另一個關鍵環節是檢視DeFi 協定的治理結構。治理相關的漏洞可能讓惡意行為者透過操縱投票系統來控制協議,正如Beanstalk 事件中所發生的那樣。
此外,經濟審計會評估協議中的激勵機制,確保其能夠促進健康的參與並防止惡意行為。例如,設計不當的激勵可能會鼓勵攻擊或機會主義行為,從而破壞協議的穩定性。經濟審計也會分析某個協議或代幣遭到攻擊時可能產生的連鎖反應,尤其是在協議高度互聯的 DeFi 生態系統中,這種連鎖效應可能會帶來嚴重影響。
這些審計旨在預測單一攻擊在多個協議間可能引發的連鎖效應,這類似於傳統金融市場中的金融危機如何從一個產業蔓延到另一個產業。 DeFi 的高度互聯特性使這種連鎖效應尤其危險,一個協議的失敗可能嚴重影響其他協議的流動性、定價和治理。
最後,經濟審計也會評估協議中的風險參數是否經過良好校準,以應對潛在的壓力或操縱行為。經濟審計能夠幫助協議提前識別並緩解技術審計無法發現的經濟漏洞,為DeFi 生態系統提供更全面的安全框架。
技術審計vs. 經濟審計
雖然兩種審計都至關重要,但它們的重點不同,彼此無法相互替代。
簡單不可分的原子操作vs. 依賴外部因素的複雜操作
-
技術審計:專注於確保程式碼執行原子性操作,即操作要么完全執行,要么完全失敗,最大限度地減少部分執行失敗可能導致的攻擊風險。技術審計檢查具體的程式碼邏輯,確保其按預期運作且沒有漏洞或缺陷。
-
經濟審計:經濟審計超越了原子操作的範疇,關注更廣泛的經濟環境,其中存在複雜操作。這類操作依賴協議外部的因素,例如外部流動性、市場價格或治理決策。經濟審計透過模擬這些條件,評估外部因素如何可能引發協議的漏洞或風險。
技術審計:專注於確保程式碼執行原子性操作,即操作要么完全執行,要么完全失敗,最大限度地減少部分執行失敗可能導致的攻擊風險。技術審計檢查具體的程式碼邏輯,確保其按預期運作且沒有漏洞或缺陷。
經濟審計:經濟審計超越了原子操作的範疇,關注更廣泛的經濟環境,其中存在複雜操作。這類操作依賴協議外部的因素,例如外部流動性、市場價格或治理決策。經濟審計透過模擬這些條件,評估外部因素如何可能引發協議的漏洞或風險。
程式碼漏洞vs. 可利用性
-
技術審計:旨在識別程式碼中的具體漏洞,這些漏洞可能被攻擊者利用。例如,如果某個函數未正確設定安全機制,駭客可能會利用它來竊取資金或篡改協議的關鍵參數。
-
經濟審計:與技術審計關注程式碼漏洞不同,經濟審計關注的是更廣泛的經濟條件如何使協議暴露於攻擊風險之下。例如,存在經濟風險的治理機制可能會導致惡意接管或市場操縱事件,從而對協議造成嚴重影響。
審計範圍(協議內部/外部)
-
技術審計:技術審計的範圍通常由協議本身定義。其重點在於審查程式碼庫、識別技術漏洞,並確保協議從純粹的功能角度如預期運作。
-
經濟審計:經濟審計的範圍更為廣泛,不僅關注協議的內部邏輯,還分析其與更廣泛DeFi 生態系統的交互情況,包括市場條件、流動性、代幣相互依賴性以及治理結構等外部因素。這種更廣泛的範圍能夠提供更全面的風險分析,尤其在動態且互聯的DeFi 生態系統中尤其重要。
技術審計:技術審計的範圍通常由協議本身定義。其重點在於審查程式碼庫、識別技術漏洞,並確保協議從純粹的功能角度如預期運作。
經濟審計:經濟審計的範圍更為廣泛,不僅關注協議的內部邏輯,還分析其與更廣泛DeFi 生態系統的交互情況,包括市場條件、流動性、代幣相互依賴性以及治理結構等外部因素。這種更廣泛的範圍能夠提供更全面的風險分析,尤其在動態且互聯的DeFi 生態系統中尤其重要。
不同情境下的漏洞利用
-
技術審計:主要是確保程式碼本身沒有特定的漏洞,例如重複呼叫漏洞或整數計算錯誤等。一旦技術審計完成,程式碼在受控環境中被認為是安全的。
技術審計:主要是確保程式碼本身沒有特定的漏洞,例如重複呼叫漏洞或整數計算錯誤等。一旦技術審計完成,程式碼在受控環境中被認為是安全的。
-
經濟審計:與之相對,經濟審計評估協議在真實世界場景中的表現,在這些場景中,外部經濟壓力(如價格操縱或治理攻擊)可能暴露協議的漏洞。經濟審計透過模擬真實的經濟條件,確保協議即使在這些外部因素影響下仍能保持安全性。
經濟審計:與之相對,經濟審計評估協議在真實世界場景中的表現,在這些場景中,外部經濟壓力(如價格操縱或治理攻擊)可能暴露協議的漏洞。經濟審計透過模擬真實的經濟條件,確保協議即使在這些外部因素影響下仍能保持安全性。
審計範圍的差異
-
技術審計:範圍通常限制在協議的內部運作和程式碼庫內。審計的重點是檢查智能合約是否按預期運行,並確保程式碼沒有錯誤和邏輯漏洞。
技術審計:範圍通常限制在協議的內部運作和程式碼庫內。審計的重點是檢查智能合約是否按預期運行,並確保程式碼沒有錯誤和邏輯漏洞。
-
經濟審計:範圍更廣,考慮到外部影響因素,例如市場依賴性、治理結構以及流動性緊張。經濟審計評估協議與更廣泛的DeFi 生態系統的交互情況,並分析協議是否能夠抵禦經濟壓力。
經濟審計:範圍更廣,考慮到外部影響因素,例如市場依賴性、治理結構以及流動性緊張。經濟審計評估協議與更廣泛的DeFi 生態系統的交互情況,並分析協議是否能夠抵禦經濟壓力。
技術審計和經濟審計相互補充,缺一不可,共同建構了完整的安全保障體系。
技術審計未能覆蓋的關鍵漏洞
技術審計無法解決因外部經濟因素、依賴關係以及與其他協議的交互而產生的一些漏洞,這些問題需要透過經濟審計來識別和緩解。
代幣關聯性與連鎖效應
代幣關聯性是DeFi 中重要的風險來源,不同協議的代幣可能彼此依賴。例如,當某一協議的代幣價格暴跌時,可能會引發多個平台的連鎖反應。
技術審計通常不會評估當協議中的代幣受到外部經濟條件(如市場低迷或其他協議遭受攻擊)影響時,可能引發的連鎖效應。
相較之下,經濟審計透過模擬這些場景來分析協議在此類事件中的反應。例如,Terra Luna 的崩潰事件中,其穩定幣脫錨引發了整個DeFi 生態系統的廣泛破壞。
預言機依賴與物價操縱
許多DeFi 協議依賴預言機來獲取外部數據,例如代幣價格或利率。然而,這種依賴帶來了一個常見的漏洞:如果預言機被攻破,或者其提供的數據不準確或被操縱,協議可能面臨巨大風險。
價格操縱攻擊是一種典型的經濟攻擊形式,攻擊者透過操縱預言機提供的代幣價格來獲利,例如利用套利機會或強制清算。
技術審計通常只確保程式碼能夠正確地與預言機交互,但不會評估預言機層面的價格操縱風險,而這種風險可能對協議產生毀滅性的影響。
治理攻擊
治理漏洞是DeFi 協議中的另一個主要風險,尤其是在那些投票權與代幣持有量掛鉤的系統中。攻擊者可以利用治理機制接管協議,提出惡意提案或竊取資金,正如Beanstalk 漏洞事件所示。在這個事件中,攻擊者透過閃電貸暫時借入大量代幣,控制了79% 的投票權,進而推動了惡意提案並竊取了1.81 億美元。
技術審計通常忽略治理結構,並專注於檢查智能合約程式碼。然而,經濟審計則會分析治理系統的潛在漏洞,特別是透過閃電貸等手段暫時增加投票權的方式,這種風險通常是技術審計難以發現的。
流動性危機與協議承壓
流動性危機是DeFi 協議中的一個重大隱患。當協議的流動性突然下降時,可能會引發價格滑點、強制清算或抵押品短缺,從而導致系統的惡性循環,給整個協議帶來壓力。流動性危機可能由多種因素引發,例如市場下跌、代幣波動性增加或大額提現等。
技術審計確保智能合約在正常條件下正確運行,但它們並不會模擬流動性低的壓力場景,這種場景下協議可能會變得容易受到攻擊或發生意外行為。相對而言,經濟審計會模擬這些壓力條件,評估協議如何應對流動性緊張的情況,並檢驗協議是否具備應對或恢復這種危機的機制。
典型的經濟攻擊案例
這些案例詳細展示了攻擊者是如何利用DeFi 協定設計和結構中的經濟性弱點,而非程式碼漏洞,進行攻擊的。
案例1:Mango Market 攻擊
日期: 2022 年10 月攻擊手段: 價格操縱損失金額: 1.16 億美元
在此漏洞中,攻擊者透過操控Mango 代幣($MNGO)的價格,導致多個交易所的價格差異,從而觸發大規模的強平,最終耗盡了協議的資金。攻擊過程如下:
-
初始設定:攻擊者使用了兩個錢包,每個錢包持有500 萬美元的USDC,用來發動攻擊。錢包1 以低價$0.0382 發出了價值4.83 億美元的MANGO 代幣大宗賣單。
-
價格操控:隨後,錢包2 用於以這個低價購買錢包1 所賣出的所有MANGO 代幣。接著,攻擊者開始在多個交易平台(包括Mango Markets、AscendEX 和FTX)上大舉購買MANGO 代幣,將價格從$0.0382 推升至$0.91,短時間內大幅上漲。
-
利用價格暴漲:這次突如其來的價格暴漲導致大量空頭部位被強平,因為MANGO 代幣的價格突破了做空者的抵押物價值。結果,攻擊者從價格上漲中獲利,而MANGO 代幣的價格隨後下跌至$0.0259。
結果:此攻擊導致Mango Market 流動性大幅流失,超過4,000 個空頭部位被強平,進一步破壞了協定的穩定性。這次經濟性攻擊並非依賴技術性漏洞,而是利用了跨平台的價格操控,這表明經濟審計可以透過模擬價格操控場景來防止或減輕攻擊的影響。
案例2:Beanstalk 攻擊
日期: 2022年4月攻擊手段: 治理操縱損失金額: 1.81 億美元
Beanstalk 攻擊涉及攻擊者控制治理系統,從而推動惡意提案。這次攻擊突顯了治理漏洞如果管理不當,可能與技術缺陷一樣造成嚴重損害。攻擊的關鍵步驟如下:
1.治理漏洞攻擊:攻擊者提出了兩項提案,要求將Beanstalk 資金庫中的代幣轉移到其個人錢包。這些提案偽裝成合法的治理變更。 Beanstalk 的治理系統需要透過緊急提案投票(emergencyCommit),如果提案獲得三分之二的投票通過,則可以被批准。
2.閃電貸攻擊:攻擊者透過閃電貸暫時借入大量Beanstalk 代幣,足以控制79% 的投票權。在獲得絕對多數後,攻擊者成功推動了這些提案的通過,執行了資金轉移,將代幣從Beanstalk 資金庫轉入其個人錢包。
結果:這次成功的治理攻擊導致了BEAN 代幣脫錨,其價格損失了75%,嚴重影響了協議的穩定性。這次攻擊造成的總損失達1.81 億美元。如果進行過經濟審計,模擬治理相關的風險,這種情況是可以在一定程度上緩解的。經濟審計能夠識別治理操控的風險,特別是透過閃電貸暫時獲得投票控制的可能性,這是傳統技術審計常常忽略的場景。
這兩個案例突顯了經濟審計對技術審計的必要補充作用,確保協議能夠抵禦價格操控和治理漏洞的攻擊,這兩個領域在傳統安全評估中常常未能得到充分檢查。
案例3:Terra Luna 穩定幣脫錨事件
Terra Luna 生態系統的崩潰是經濟因素而非技術漏洞導致協議失敗的一個顯著案例。這事件通常被視為經濟管理失誤的典型教材,顯示了某一方面的失控如何引發整個DeFi 生態的連鎖崩潰。
Terra 的穩定幣UST 透過演算法與美元掛鉤,依賴其與Luna 代幣的關係來維持價格穩定。其設計理念是UST 可以始終以一定比例兌換Luna,從而保持價格的穩定。然而,這個系統高度依賴市場信心和流動性,隨著外部經濟壓力的加劇,這兩者開始崩潰。
2022 年5 月,一次重大的市場事件導致UST 脫錨,價格跌破了1 美元。這觸發了「死亡螺旋」效應,UST 的持有者急於將其代幣兌換成 Luna,這迅速稀釋了Luna 的供應量,並導致其價格暴跌。隨著UST 的脫錨繼續惡化,形成了一個反饋循環,導致UST 和Luna 的價格雙雙崩潰,最終使得協議無法恢復。
Terra Luna 的崩潰對DeFi 生態系統造成了廣泛的影響。由於許多協議透過流動性池、借貸平台和質押服務與Terra 高度互聯,這一事件引發了一場流動性危機,導致其它協議因間接暴露於Terra 而發生大量清算和資金損失。
此次崩盤並非源自於任何特定的程式碼漏洞或技術缺陷,而是由於經濟管理失誤所致——即依賴沒有足夠儲備或保護機制來應對市場波動的演算法穩定幣。技術審計無法發現這個漏洞,因為問題根源在於協議的經濟模型,這也突顯了經濟審計的必要性,經濟審計可以模擬脫錨情境和流動性危機,進而識別此類風險。
Terra Luna 的崩潰展示了一個協議的失敗如何引發整個DeFi 生態系統的連鎖反應,強調了在審計過程中評估協議間依賴關係的重要性。這場崩盤源自於一個不可持續的經濟模型(演算法穩定幣),該模型還沒有準備好應對極端市場條件。經濟審計可以透過模擬這些極端情況,揭示協議的脆弱性。
缺乏足夠儲備和未能考慮極端市場波動,是Terra Luna 崩潰的關鍵原因,這也凸顯了在經濟審計中對這類風險進行測試的重要性。
這個案例強調了無論一個協議的程式碼多麼技術上完善,如果沒有充分進行經濟模型的壓力測試和市場環境的考量,它仍然容易遭遇經濟崩潰。
DeFi 協定的分層架構
DeFi 協定通常由多個層次構成,每一層都在協定的整體功能中扮演特定角色。這些層次通常包括:
1. 核心協議層: 這是協議的基礎,包含定義協議操作的智能合約,例如借貸、質押或交易等。技術審計通常專注於此層,確保智慧合約按照預期執行,且沒有漏洞或程式錯誤。
2. 預言機層: DeFi 協議通常依賴預言機來從外部來源(如價格數據、利率等)獲取即時數據。該層對於協議的正常運作至關重要,因為錯誤的數據可能導致價格錯誤、抵押品不足或其他風險。經濟審計會檢查協議對預言機的依賴以及可能存在的預言機操控風險,而這一點技術審計通常無法完全涵蓋。
3. 治理層: 許多DeFi 協定採用去中心化治理結構,決定協議的關鍵變動。治理層涉及投票、基於代幣的決策、協議變更等面向。經濟審計會分析治理結構中的漏洞,如投票權操控或閃電貸攻擊,攻擊者透過暫時獲得大量投票權來影響協議決策
4. 流動性層: 流動性層確保協議具有足夠的流動性,保證協議的正常運作。在藉貸或交易協議中,流動性層決定用戶能否存取資金或執行交易。經濟審計會模擬流動性壓力場景,測試協議在流動性不足的情況下的表現,例如大規模提現或市場突然下跌等情況。
分層架構中的經濟風險
在DeFi 協議的分層架構中,層與層之間的相互作用可能會帶來一些經濟風險,這些風險通常不會被傳統的技術審計所涵蓋。
1. 協議間的依賴性: 許多DeFi 協議是相互依賴的,它們依賴於其他協議提供流動性、抵押品或數據。例如,一個借貸協議可能依賴外部的穩定幣作為抵押品。如果該穩定幣崩盤或失去與法幣的掛鉤,借貸協議可能會抵押不足,導致大規模清算。
2. 協定間的連鎖反應:攻擊者可以透過攻擊某一層,進而利用協定間的相互關係影響其他層,造成更廣泛的損失。例如,攻擊者可能透過操縱某一協議中的資產價格(透過預言機操控),進而影響其它協議中的借貸、交易或抵押品等操作。
3. 流動性危機: 分層架構也引入了流動性危機的風險,其中一層的流動性依賴另一層。流動性池中的流動性突然被撤回,可能會影響協議的正常運作,導致整個協議出現級聯故障,影響其他層的正常功能。
DeFi 協定的互連接性意味著風險往往會在多個層級之間傳播。某一層的漏洞(如預言機或治理層)可能引發連鎖反應,導致其他層(如流動性層或核心操作層)的失敗。技術審計主要聚焦於核心協議,確保智慧合約如預期執行,但它們無法模擬這些層級之間相互作用所帶來的系統性風險。
DeFi 協議的分層架構引入了複雜的經濟風險,而僅憑技術審計無法全面捕捉這些風險。經濟審計則提供了對不同層級之間相互作用的關鍵評估,分析它們如何在現實世界的條件下被利用或面臨壓力,從而幫助識別潛在的風險點。
結論
僅依靠技術審計不足以保護DeFi 協議免受更廣泛的經濟風險。經濟審計透過模擬現實市場條件,進行壓力測試,評估協議在價格操控、流動性危機和治理漏洞等情況下的韌性。 DeFi 產業必須重視經濟風險管理,以保障協議免受系統性威脅。目前,經濟審計市場尚未充分發展,這為專注於此領域的公司提供了巨大的機會。未來的DeFi 安全將需要技術審計和經濟審計相結合,以確保協議能抵禦更廣泛的漏洞風險。