這輪牛市是 Defi 的繁榮起點,隨著該行業的崛起成為人們關注的焦點,攻擊者也相應地將注意力轉向了這一領域。

作者: Jonas@Foresight Ventures

封面: Photo by Clint Patterson on Unsplash

在加密行業的黑暗森林裡,Defi 已成為黑客的提款機,今年迄今損失總金額已超過 30 億美元。一是因為 Defi 平台持有大量資金,攻擊成功的回報很高。二是因為大多數 Defi 協議代碼都是開源,更易受到網絡安全威脅。三是因為 Defi 通常生態互連,放大攻擊的便利性。Token Terminal 報告顯示,Defi 大約 50% 的漏洞發生在跨鏈橋上,其次為藉貸,交易所和機槍池。

圖片
發生時間項目類型損失金額原因
22 年 10 月MangoDEX1.1 億美元價格操縱
22 年 10 月Binance Bridge跨鏈1 億美元合約漏洞
22 年 8 月Nomad Bridge跨鏈1.9 億美元合約漏洞
22 年 6 月Harmony Bridge跨鏈1 億美元私鑰洩漏
22 年 4 月Beanstalk穩定幣8000 萬美元閃電貸投票
22 年 3 月Ronin Network側鏈5.5 億美元私鑰洩漏
22 年 1 月Wormhole跨鏈3.3 億美元合約漏洞
22 年 1 月Qubit Bridge跨鏈8000 萬美元合約漏洞
21 年 12 月Vulcan Forged鏈遊1.4 億美元私鑰洩漏
21 年 12 月Badger DAO跨鏈1.2 億美元合約漏洞
21 年 12 月Grim Finance機槍池3000 萬美元合約漏洞
21 年 11 月bZx借貸5500 萬美元私鑰洩漏
21 年 11 月MonoX Finance自動做市商3100 萬美元合約漏洞
21 年 10 月Compound借貸1.5 億美元合約漏洞
21 年 10 月Cream Finance借貸1.3 億美元價格操縱
21 年 9 月Vee Finance借貸3500 萬美元預言機操縱
21 年 8 月Poly Network跨鏈6.1 億美元合約漏洞
21 年 5 月PancakeBunny機槍池4500 萬美元價格操縱
21 年 3 月Meerkat Finance借貸3100 萬美元合約漏洞

對 Defi 的經濟模型攻擊更有研究價值,特別是一些機制在極端情況下的走向,很有利於我們理解代幣經濟學。某種意義上,如果黑客通過釣魚、撞庫等社會工程學手段來盜取資產,算是不義之財。而類似地通過 Defi 的規則來套利,就堪稱明火執仗地賺錢,手段高明但無可置喙。

幣價操縱,通過合約變現

價格操縱是 Defi 中最早和最常見的漏洞。而隨著鏈上衍生品興起,攻擊的盈虧比變得很高。

案例 1:MANGO

22 年 10 月 Solana 鏈去中心化合約平台 Mango 遭遇攻擊。

成功要素:山寨幣合約倉位沒有限制

攻擊流程:

a) 建倉:攻擊者首先向 Mango 交易平台 A、B 地址分別各轉入 500 萬美元。而後黑客通過 A 地址在 Mango 上利用合約做空代幣 MANGO;同時在 B 地址上做多 MANGO。多空雙開的原因在於,雖然 Mango 平台對山寨幣合約倉位沒有限制,但是深度較差,如果不和自己作對手盤,倉位就很難開到這麼高。

b) 操縱價格:攻擊者使用更多資金購買 MANGO 代幣,在 10 分鐘內將其價格從 2 美分升至 91 美分。因為 MANGO 是一種流動性低的代幣,這使得攻擊者能夠快速操縱價格。

c) 變現:此時攻擊者的多頭倉位收益為 4.2 億美元,再利用賬戶淨資產從 Mango 平台進行借貸,好在流動性不足最終只借出 1.1 億美元。

案例 2:GMX

22 年 9 月 Arbitum 鏈去中心化合約平台 GMX 遭遇攻擊。

成功要素:0 滑點機制,攻擊成本低

攻擊流程:

a) 建倉:攻擊者在 GMX 上反復開大量代幣 AVAX 多頭和空頭的頭寸。

b) 操縱價格:由於 GMX 是 0 滑點,因此預言機的餵價約等於執行價,但是 GMX 上的大額頭寸會影響到其它交易所的 AVAX/USD 價格,然後預言機才反應過來並餵價給 GMX。0 滑點意味著攻擊者在任何時刻都擁有無限流動性。舉個極端例子,如果在 GMX 上做多 10 億美金的 AVAX,照理說這麼大的資金量會拉高實際交易的價格,但 GMX 的機制是 0 滑點,所以還是按照預言機的餵價來開倉。但這個體量的交易會拉高其它交易所 AVAX 的價格,假設漲了 20%,預言機才會把最新的價格反饋到 GMX 上,此時就可以按 AVAX 漲了 20% 的價格來平倉,並把賺到的 AVAX 提取到其它交易所賣出。

c) 變現:此時攻擊者平倉盈利,攻擊者賺到的 AVAX,就是 GLP 持有者虧損的 AVAX。

圖片

利用預言機錯誤,通過抵押借貸變現

這類攻擊執行起來非常複雜,但其模式類似,即依賴價格餵價的系統會臨時操縱餵價以扭曲協議的內部核算。然後將資金以優惠的利率進行存入,然後在將預言機重置為正常值後立即以另一種貨幣或同一種貨幣提走。

案例 3:ANKR

22 年 12 月 Bsc 鏈借貸協議 Helio 遭遇攻擊。

成功要素:預言機餵價不及時

攻擊流程:

a) 預言機錯誤:Bsc 鏈質押項目 Ankr 被黑客直接利用合約漏洞,憑空鑄造 10 萬億個 aBNBc,導致 aBNBc 價格幾近歸零。而藉貸協議 Helio 預言機餵價是採用 6 小時平均加時權重的設置。

b) 建倉:攻擊者使用 10 個 BNB 買了 Ankr 超發的 18 萬個 aBNBc,之後將 aBNBc 交換為 Hello 的 hBNB。

c) 抵押借貸:攻擊者以 hBNB 為抵押品在 Helio 中進行借貸,借貸出 1644 萬穩定幣 HAY。

d) 變現:攻擊者將穩定幣 HAY 交換成 BNB 和 USDC 等約 1500 萬美元等值資產,進行提現。

案例 4:XVS

22 年 5 月 Bsc 鏈借貸協議 Venus 遭遇攻擊。

成功要素:預言機餵價不及時

攻擊流程:

a) 預言機錯誤:LUNA 增發崩盤時,Chainlink 對 LUNA 的價格反饋達到價格下限,被以 0.107 美元價格暫停。但 Bsc 鏈上借貸協議 Venus 的 LUNA 市場卻在繼續運行,餵價正是來自 Chainlink。當 LUNA 價格約為 0.01 美元時,團隊才暫停協議。

b) 建倉:套利者從二級市場大量增發後的 LUNA,並提到 Bsc 鏈。

c) 抵押借貸變現:套利者在 Venus 上以 LUNA 為抵押品進行借貸,借貸出約 1400 萬美元等值資產,進行提現。

案例 5:BZRX

20 年 5 月 Bsc 鏈借貸協議 bZx 遭遇攻擊。

成功要素:預言機價格來源單一

攻擊流程:

a) 建倉:首先攻擊者通過閃電貸從去中心化合約平台 DYDX 借出 1 萬個 ETH,使用其中 5500 個 ETH 在藉貸平台 Compound 借出 112 個 WBTC。

b) 預言機錯誤:bZx 是保證金交易協議,用戶可以抵押一種幣作為保證金,在槓桿借出另一種幣,這兩個幣的浮動匯率,bZx 需要預言機來餵價,並單一依賴 Uniswap 上價格。攻擊者使用 1300 個 ETH 到 bZx 上開了 5 倍 ETH 空單(即使用其中 5637 個 ETH 兌換 WBTC),由於 Uniswap 池子可兌換的 WBTC 有限,WBTC 價格被拉高至正常值的 3 倍。

c) 變現:攻擊者再把從 Compound 借到的 112 個 WBTC 賣出,共獲利 36 萬美元。

預言機操縱始終是 Defi 攻擊的重災區,相似案例還有 Vee Finance、 Harvest Finance、Value Defi、Warp Finance 等等、此處就不一一列舉了。

做空 Defi 槓桿,導致死亡螺旋

熊市中流動性逐漸匱乏,非主流資產價格深度不足、波動變大。大規模做空可能是由 Defi 槓桿清算和資本做空共同推動的。

案例 6:LUNA

22 年 5 月 Terra 鏈的穩定幣 UST 遭遇攻擊。

成功要素:資金盤在熊市遇到流動性擠兌

攻擊流程:

a) 建倉:攻擊者認為 LUNA-UST 機制無法長期維持。Terra 通過 Anchor 給出的高收益率是一種引流的策略,吸引用戶更多使用 UST。但是 20% 的收益率是不可持續的。當利率水平從 20% 下降至 7-12% 之間,會有價值約 90 億美元的 LUNA 離開,但是由於 LUNA/UST 的流動性並不夠好,估計約有 50 億美元的 UST 會遭遇退出困境。如果想讓 50 億美元的 UST 兌換成 LUNA 並安全離開市場,可能需要 400 億美元的 LUNA 市值,而當時 LUNA 的最大市值才不過 400 億美元。似乎 Terra 方面已經耗盡了儲備,沒錢維持 UST 的穩定,或者是放棄了維持 UST 的穩定。因此觀察是否還可持續的窗口,是 Curve 上的 UST Pool 是否出現不平衡的情況。因此當 Terra 從 Curve 移除 1.5 億美元流動性,為 4pool 做準備時,較小的流動性池規模意味著 UST 出售對價格的影響比平時更大。攻擊者開始拋售價值 2.85 億美元的 UST,令穩定幣開始脫錨。

坊間傳言攻擊者 Alameda 在 UST 崩潰前從 Voyager 借了 9 位數的 BTC,砸盤做空 BTC 以阻擊 Terra 儲備金。同時 Genesis Trading 向 Alameda 提供 10 億美元 UST,為針對 UST 脫錨的攻擊提供了子彈。

b) 槓桿循環清算:

UST 是算法穩定幣,使用簡單的鑄造和銷毀機制來保持穩定性。要鑄造 UST,必須銷毀等價值的 LUNA;同樣用戶也可以通過銷毀 UST 來兌換等值的 LUNA。隨著 UST 的下跌,假設的死亡螺旋成為現實,投資者以越來越低的價格銷毀 UST 換取 LUNA,從而使未償還的 LUNA 供應過度膨脹。事實上,LUNA 的供應量在短短幾天內就從不到 3.5 億枚增加到 6.5 萬億枚以上。

同時 UST 在 Abracadabra 遭到大規模清算。去年 11 月,Abracadabra 為 UST 啟動了 Degenbox 策略,用戶抵押 UST 借貸 MIM,通過循環抵押可以極大提高收益率。只要 UST 維持在 1 美元,這個策略基本上是無風險的,然而一旦 UST 脫鉤,用戶的抵押品價值降低面臨被清算的風險。UST 價格到 0.97 會爆一批,低於 0.9 能爆掉 50% 以上用這個策略的人。循環往復,UST 價格越低,爆倉的人越多。

案例 7:CRV

22 年 11 月以太坊鏈去中心化穩定幣交易平台 Curve 遭遇攻擊。

成功要素:借貸協議可抵押長尾資產

攻擊流程:

a) 建倉:Curve 的代幣鎖倉機制加上賄選機制,造成流動性嚴重不足。攻擊者先在交易所開 CRV 高倍率空單。

b) 借貸做空:攻擊者前後在 AAVE 共抵押 6360 萬個 USDC,借出 9200 萬個 CRV 砸盤做空。由於 CRV 價格暴跌,借貸協議 AAVE 上的 USDC 抵押物可以繼續借出更多的 CRV 做空。

c) 槓桿循環清算:由於 CRV 本身是藉貸協議抵押品,價格的快速下跌也引發了大量 CRV 被清算,或將引起死亡螺旋的連鎖反應。攻擊者意圖擊穿 CRV 創始人抵押倉位清算線,將其爆倉。雖然後來在創始人和社區聯合下做空失敗爆倉,但操作思路還是值得學習借鑒。

閃電貸治理攻擊

Defi 攻擊已不僅限於操縱價格了,若協議防線不足,治理機制漏洞也可能被攻擊者利用。

案例 8:BEAN

22 年 4 月以太坊鏈去中心化穩定幣 Beanstalk 遭受攻擊。

成功要素:未對可投票資金添加時間鎖

攻擊流程:

a) 提案:攻擊者在攻擊前一天發布惡意提案,提案通過以後將會從 Beanstalk 合約中提取資金。

b) 建倉:攻擊者通過閃電貸獲得了 3.5 億個 DAI、5 億個 USDC、1.5 億個 USDT、3200 萬個 BEAN 和 1100 萬個 LUSD 作為資金儲備,從而積累了大量該協議的治理代幣。

c) 投票:攻擊者用 BEAN3CRV-f 和 BEANLUSD-f 來對提案發起投票,從而導致提案通過。攻擊者獲得 24830 個 ETH 和 3600 萬個 BEAN 穩定幣,獲利約 8000 萬美元。

圖片

雖然是熊市,但是 Defi 市場仍保持一定的活力。從鎖倉量來看,如果加密市場以原生資產 ETH 而非美元計價,那麼 22 年 Maker DAO、Lido 等頭部項目的 TVL 仍將實現正增長。即使以美元計算,Defi 市場仍然保持 400 億美元以上的 TVL,比 21 年前要好得多,這意味著 Defi 市場已成為加密市場不可或缺一部分。

這輪牛市是 Defi 的繁榮起點,隨著該行業的崛起成為人們關注的焦點,攻擊者也相應地將注意力轉向了這一領域。從上面的攻擊中可以清楚地看出,攻擊 Defi 協議並沒有單一的方法,而是一些常見的攻擊向量,導致一些年輕的 Defi 項目淪為了犧牲品。到目前為止,這些日益增長的攻擊造成的損失還不是災難性的。然而,隨著生態系統的持續發展和總鎖倉量的增長,涉及的資金將變得更多,攻擊將更有利可圖,未來將會看到更複雜的 Defi 攻擊。實踐出真知。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。