去中心化金融安全:理解風險並降低風險

作者:Salus Insights

在去中心化金融(DeFi)領域中存在著大量的安全風險,這些風險可能對用戶、平臺和整個金融生態系統造成嚴重的危害。 我們總結了三種 DeFi 安全風險,並通過分析最近發生的真實安全事件來闡述黑客攻擊的過程以及相應的解決方案。

  • 價格操縱風險

  • 智能合約漏洞風險

  • 用戶操作風險

1. 價格操縱風險

在 DeFi 中,價格操縱風險是指惡意行為者試圖通過操縱資產的價格來獲利或影響市場的行為。 這種操縱可能會導致市場價格的不正常變動,給其他參與者帶來損失。 以下,我們總結了價格操縱風險在 DeFi 中可能出現的三種情況:

  • 閃電貸攻擊

  • 三明治攻擊

  • 預言機攻擊

1.1 閃電貸攻擊

閃電貸攻擊是一種在 DeFi 應用中出現的攻擊方式。它利用了閃電貸這種無需提供抵押品即可借貸的金融操作。 攻擊者通過閃電貸借入大量資金,並在同一筆交易中進行一系列操作,以實施欺詐行為。

ShidoGlobal 閃電貸攻擊事件

2023 年 6 月 23 日,在 BSC(幣安智能鏈)上發生了 ShidoGlobal 閃電貸攻擊事件。攻擊者通過鎖定和索取機制,以及兩個池之間的價格差異來實現代幣的套利, 成功竊取了 976 個 WBNB。

Attack Tx:

https://explorer.phalcon.xyz/tx/bsc/0x72f8dd2bcfe2c9fbf0d933678170417802ac8a0d8995ff9a56bfbabe3aa712d6

攻擊者如何實施閃電貸攻擊?

  • 攻擊者借取了 40 個 WBNB 的閃電貸。

去中心化金融安全:理解風險並降低風險

  • 攻擊者將 39 個 WBNB 交換成了 10, 436, 972, 685, 676, 390, 697 個 Shido Inu:SHIDO 代幣(小數點後 9 位),並存入了 PancakeSwap V2:SHIDO-WBNB 池中。這一步操作增加了 Shido Inu:SHIDO 代幣在該池中的供應量,導致該代幣價格下降。

去中心化金融安全:理解風險並降低風險

  • 攻擊者接著依次調用了 ShidoLock.lockTokens 和 ShidoLock.claimTokens,將 10, 436, 972, 685.676390697 個 Shido Inu:SHIDO 代幣(小數點後 9 位)轉換成了 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 個 SHIDO 代幣(小數點後 18 位)。

當攻擊者調用 ShidoLock 合約中的 lockTokens 函數時,他們將 10, 436, 972, 685.676390697 個 Shido Inu:SHIDO 代幣鎖定在合約中。這意味著這些代幣無法被轉移或交易,直到特定的條件滿足。通過鎖定代幣,攻擊者可以在一定程度上維持代幣的價格穩定。

攻擊者調用 claimTokens 函數,將鎖定的代幣轉換成了 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 個 SHIDO 代幣。這一步實際上是將 SHIDO 代幣的小數位數從 9 位增加到 18 位,增加了代幣的總供應量。

去中心化金融安全:理解風險並降低風險

  • 通過鎖定和索取機制,PancakeSwap V2:SHIDO-WBNB 池和 PancakeSwap V2:SHIDO 28 池之間存在價格差異。具體來說,由於 SHIDO 代幣在 PancakeSwap V2:SHIDO-WBNB 池中的供應量增加,導致價格下降。而在 PancakeSwap V2:SHIDO 28 池中,由於供應量沒有增加,價格相對較高。攻擊者利用這種價格差異,在兩個池之間進行代幣交換,以更有利的價格將 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 個 SHIDO 代幣(小數點後 18 位)交換成了 1, 016 個 WBNB。

去中心化金融安全:理解風險並降低風險

  • 最後,攻擊者償還了 40 個 WBNB 的閃電貸,並獲得了約 976 個 WBNB 的利潤。

去中心化金融安全:理解風險並降低風險

限制閃電貸功能

限制閃電貸功能和引入閃電貸手續費 是減少閃電貸攻擊和操縱風險的一種常見方法。

  • 限制閃電貸功能:可以對閃電貸功能進行限制,例如設置最小借貸金額、借貸時間限制等。這樣可以減少攻擊者利用閃電貸進行攻擊的機會。

  • 引入閃電貸手續費:可以向借貸者收取一定的手續費。這樣可以增加攻擊的成本,使攻擊者在進行閃電貸攻擊時面臨更高的風險和成本。

去中心化金融安全:理解風險並降低風險

在上述示例代碼中,我們設置了一些限制條件來限制閃電貸功能的使用,例如最小借貸金額、最大借貸金額和借貸時間。在執行閃電貸操作之前,我們先計算並收取一定比例的手續費。

1.2 三明治攻擊

三明治攻擊(Sandwich Attack)是一種在去中心化交易所(DEX)中利用信息不對稱的攻擊方式。 攻擊者通過在兩個交易之間插入惡意交易,從而利用價格差異來獲取利潤。

CurveFinance 三明治攻擊事件

2023 年 8 月 2 日,Hypernative systems 對 Curve Finance 發起三明治攻擊。攻擊者通過在添加流動性和移除流動性的兩個交易之間插入惡意交易, 賺取 36.8 K USDT。

Attack Tx:

https://explorer.phalcon.xyz/tx/eth/0xd493c73397952049644c531309df3dd4134bf3db1e64eb6f0b68b016ee0bffde

攻擊者如何實施三明治攻擊?

  • 攻擊者從多個資金來源獲得巨額閃電貸款,包括 wstETH、WETH 和 USDT。

去中心化金融安全:理解風險並降低風險

  • 攻擊者向 3 pool 提供 155, 000, 000 USDT 流動性並獲得 3 CRV LP 代幣。3 CRV 是 Curve TriPool(Curve DAI/USDC/USDT 礦池)的 LP 代幣,即在該攻擊事件中受到損害的礦池。

去中心化金融安全:理解風險並降低風險

  • 攻擊者從池中移除(幾乎全部)DAI 和 USDC 流動性,並銷毀 3 CRV LP 代幣。此時,該池幾乎完全是 USDT,這暫時使其比 DAI 和 USDC 便宜得多。

去中心化金融安全:理解風險並降低風險

  • 調用 UnderlyingBurner 合約 execute()函數,繼續向 Curve DAI/USDC/USDT 礦池中添加流動性。UnderlyingBurner 主要持有 USDT,添加的 DAI:USDC:USDT 數量是 100, 000: 100, 000: 227, 079, 039, 776 。這導致該礦池更加不平衡,USDT 的相對數量更高,價值更低。

去中心化金融安全:理解風險並降低風險

  • 攻擊者將他持有的 DAI 和 USDC 添加到 Curve DAI/USDC/USDT 礦池中並享受溢價,這意味著獲得更高數量的 3 CRV LP 代幣。

去中心化金融安全:理解風險並降低風險

  • 攻擊者通過銷毀其 3 CRV LP 代幣並提取 USDT 流動性。

去中心化金融安全:理解風險並降低風險

  • 攻擊者償還閃貸並保留 36.8 K USDT 的利潤。

去中心化金融安全:理解風險並降低風險

在這個過程中,惡意交易指的是攻擊者從 Curve DAI/USDC/USDT 礦池中移除大量的 DAI 和 USDC 流動性,並銷毀 3 CRV LP 代幣的交易。這個交易使得該礦池變得非常不平衡,USDT 的相對數量更高,從而導致其價值更低。

另外兩筆交易指的是攻擊者添加流動性和提取流動性的交易。攻擊者利用價格差異,通過添加自己持有的 DAI 和 USDC 流動性到 Curve DAI/USDC/USDT 礦池,並在溢價時將其提取出來,獲得更高數量的 3 CRV LP 代幣。

這樣,攻擊者通過三明治攻擊將惡意交易與另外兩筆交易包裝在一起,低價購買 USDT 流動性,然後高價出售獲取利潤。

限制交易順序

當涉及到防止三明治攻擊時,代碼實現可能會涉及複雜的智能合約和交易邏輯。以下是一個簡化的示例,展示了如何通過 限制交易順序和引入交易延遲 來預防三明治攻擊。

去中心化金融安全:理解風險並降低風險

在這個例子中,我們假設有一個智能合約 SandwichAttackPrevention,用於管理用戶的餘額和交易操作。為了防止三明治攻擊,我們引入了兩個主要的防禦機制。

首先,在 allowTransaction 函數中,只有合約的擁有者才能將 isTransactionAllowed 設置為 true,從而允許用戶執行交易。這樣可以確保交易按照正確的順序執行,而不允許攻擊者在兩個交易之間插入惡意交易。

其次,在 executeTransaction 函數中,我們引入了交易延遲的概念。只有在當前區塊時間超過設定的延遲時間後,用戶才能執行交易。這樣可以給其他用戶足夠的時間來執行交易並更新價格,從而減少攻擊者利用價格差異的機會。

1.3 預言機攻擊

價格預言機是一種提供加密貨幣實時價格信息的數據源。這些信息對於許多 DeFi 協議的正常運行至關重要。 預言機攻擊是指攻擊者人為地改變預言機提供的數據,目的是從基於操縱價格的交易中獲利。

Rodeo Finance 預言機攻擊事件

Rodeo 是一個 DeFi 平臺,提供價格預言機服務。2023 年 7 月 11 日,價格預言機操縱導致黑客從 Rodeo 協議中竊取了 約 472 ETH(約 88.8 萬美元)。

Attack Tx:

https://explorer.phalcon.xyz/tx/arbitrum/0xb1be5dee3852c818af742f5dd44def285b497ffc5c2eda0d893af542a09fb25a

價格預言機如何被操縱?

Rodeo Finance 攻擊事件的關鍵在於 Rodeo TWAP Oracle。該預言機用於跟蹤 ETH 和 unshETH 之間的價格比率。

  • 分析攻擊交易:攻擊過程始於攻擊者執行一個經過精心計劃的交易。攻擊者利用對平臺架構和時間加權平均價格(TWAP)預言機潛在漏洞的深入理解,發起了這次攻擊。

  • 操縱 TWAP 預言機:攻擊者能夠使用與未配置的策略地址相關聯的 earn 函數,強制交換 USDC 為 unshETH。這種操縱有效地繞過了由於有缺陷的 unshETH 價格預言機而導致的滑點控制。實質上,earn 函數被強制從 USDC 換成 WETH,再換成 unshETH。

  • 計算 TWAP 價格:TWAP 價格是通過對最後四個更新的價格進行平均計算得出的,每個更新間隔為 45 分鐘。然而,有缺陷的價格預言機返回了一個被操縱的價格,導致智能合約認為該持倉是健康的。

  • 開倉槓桿頭寸:攻擊者通過三明治攻擊操縱 TWAP 預言機,然後通過從投資者合約調用 earn 函數來開設槓桿頭寸。他們借入了價值 40 萬美元的 USDC。

去中心化金融安全:理解風險並降低風險

  • 交換資產:攻擊者將借入的資產與底層的 CamelotDEX 池進行交換,同時將其準備好的 unshETH 賣回給池子。

  • 繞過執行驗證:合約通常會驗證操作是否有效。然而,由於攻擊者控制了這個策略,他們輕鬆繞過了這個檢查。這使得攻擊者能夠通過將準備好的 unshETH 賣回給池子來利用被操縱的頭寸,有效地從平臺中提取流動性。

  • 轉移被盜資金:攻擊者將被盜資金從 Arbitrum 轉移到 Ethereum,將 285 個 ETH 換成 unshETH,然後將它們轉移到 Arbitrum 以繼續攻擊。這部分價值 150 個 ETH 的被盜資金隨後被轉移到了 Tornado Cash,一個專注於隱私的以太坊混幣服務。剩餘的 371.2 個 ETH(約價值 701, 679 美元)仍然被攻擊者控制的地址持有。

這次攻擊的一個重大漏洞是 Rodeo TWAP Oracle 的執行存在缺陷。預言機依賴於 WETH/unshETH 交易對的儲備,該交易對的流動性較低,因此價格波動很大。

基於多個預言機來計算價格

確保價格查詢的可靠性,一個可靠的預言機應該使用 多個預言機或聚合餵價 來計算價格,而不僅僅依賴代幣對比率。特別是在礦池流動性較差的情況下,這種多樣化的定價信息來源可以提高價格數據的準確性,並使攻擊者更難操縱數據。

為了實現這一目標,一個可能的解決方案是使用去中心化預言機,例如 Chainlink。Chainlink 預言機可以從各種數據源收集數據,並使用區塊鏈技術驗證和確認數據的準確性。通過使用多個數據源,Chainlink 減少了單點故障的可能性,並且更難以被攻擊者操縱數據。

以下是一個使用 Chainlink 聚合器合約獲取價格數據的示例代碼:

去中心化金融安全:理解風險並降低風險

在上述代碼中,我們使用了一個AggregatorV3Interface類型的數組來存儲多個預言機的實例。構造函數接受一個預言機地址數組作為參數,並將每個地址實例化為一個AggregatorV3Interface對象。

getLatestPrice 函數用於獲取多個數據源的最新價格數據。它遍歷 priceFeeds 數組,並通過調用每個預言機的 latestRoundData 函數來獲取價格數據。所有的價格數據被存儲在一個 int 類型的數組中,並返回給調用者。

通過這種方式,我們可以從多個數據源獲取價格數據,並確保價格查詢更準確地反映資產價格。

2. 智能合約漏洞風險

智能合約漏洞智能合約漏洞是指在以太坊或其他智能合約平臺上編寫的代碼中存在的安全漏洞或錯誤。 DeFi 的核心是基於智能合約的金融協議,因此智能合約漏洞可能導致用戶資金的丟失、操縱市場行為或其他惡意行為。

識別這些漏洞至關重要, 我們 的審計涵蓋了 各種潛在問題 。這包括但不限於可重入漏洞、訪問控制漏洞、整數溢出漏洞和業務邏輯漏洞。我們全面的審計服務旨在加強您的智能合約的安全性,並保護免受這些風險的影響。

以下,以訪問控制漏洞舉例,說明智能合約漏洞對 DeFi 的影響。

LeetSwap 訪問控制漏洞

LeetSwap 遭受了攻擊, 損失超過了 340 ETH 。根本原因在於 LeetSwap V2 Pair 合約存在訪問控制漏洞, _transferFeesSupportingTaxTokens 函數可見性為 public。

Attack Tx:

https://dashboard.tenderly.co/tx/base/0xbb837d417b76dd237b4418e1695a50941a69259a1c4dee561ea57d982b9f10ec

Vulnerable Contract:

https://basescan.org/address/0x94dac4a3ce998143aa119c05460731da80ad90cf

去中心化金融安全:理解風險並降低風險

攻擊者調用了 _transferFeesSupportingTaxTokens 函數來操縱池子,攻擊流程如下:

  • 用 WETH 兌換另一個代幣 A。

  • 調用 _transferFeesSupportingTaxTokens 函數來轉移代幣 A,並隨後調用 sync 函數,導致代幣 A 的價格上漲。

  • 用代幣 A 兌換 更多的 WETH 並清空池子。

解決方案

為了修復 _transferFeesSupportingTaxTokens 函數的訪問控制漏洞,應該將函數可見性更改為 private 或 internal。將函數聲明為 private,只有合約內部的其他函數能夠調用它。將函數聲明為 internal,可以被繼承該合約的合約訪問。其他合約繼承 LeetSwap V2 Pair 合約時,可以通過 super 關鍵字調用_transferFeesSupportingTaxTokens 函數。而外部用戶無法直接訪問該函數,提高了合約的安全性。

需要根據具體的合約邏輯和需求來決定如何更改函數的可見性,確保在提高安全性的同時不影響合約的正常運行。

智能合約審計是識別和預防漏洞的重要步驟。在Salus, 我們擁有一支由經驗豐富的智能合約開發人員和審計專家組成的團隊,可以幫助您增強合約的安全性。 我們的專業知識使我們能夠準確定位潛在的弱點,並確保您的項目的安全性和可靠性。

3. 用戶操作風險

在 DeFi 領域中,用戶操作風險是指用戶在使用 DeFi 平臺時,由於自身的操作失誤、安全意識不足或不謹慎的行為而導致資金損失的風險。 以下是一些常見的用戶操作風險:

  • 點擊惡意連結:用戶可能會誤點擊惡意連結,導致惡意軟體或病毒感染其設備,攻擊者可以利用這些惡意軟體來獲取用戶的敏感信息或控制其錢包。

  • 使用不安全的錢包:如果用戶選擇使用不安全的錢包應用程式或硬體錢包,攻擊者可能會利用這些漏洞來竊取用戶的私鑰或操作權限。

  • 洩露私鑰:用戶如果在未加密的環境中洩露私鑰,或者將私鑰存儲在不安全的地方,那麼攻擊者可能會輕易獲取用戶的私鑰並進而控制其資金。

  • 不謹慎的交易操作:用戶在進行交易時,如果沒有仔細檢查交易細節(如目標地址、交易數量等),可能會導致資金髮送到錯誤的地址或發送錯誤的數量。

為了減少用戶操作風險,以下是一些建議:

  • 提高安全意識:了解常見的網絡釣魚、惡意軟體和詐騙手段,並學習如何識別和避免它們。保持警惕,並仔細檢查與 DeFi 有關的連結和應用。

  • 使用安全錢包:選擇使用經過安全審計和有良好聲譽的錢包應用程式或硬體錢包。確保錢包應用程式和固件是最新版本,並遵循最佳的安全實踐。

  • 備份和保護私鑰:將私鑰存儲在安全的地方,並使用強密碼加密。定期備份私鑰,並將其存儲在離線、安全的地方,以防止意外數據丟失。

  • 仔細檢查交易細節:在執行任何交易之前,仔細檢查交易細節,確保目標地址、交易數量等都是正確的。雙重檢查可以避免由於疏忽導致的資金損失。

4. 總結

請注意,針對以上每一種攻擊和漏洞的解決方案只是簡單的示例,並不能完全防止相對應的攻擊,或者修復相對應的漏洞。如果您對智能合約審計感興趣,請 聯繫我們 ,我們將與您合作,為您提供專業的審計服務,確保您的合約安全可靠。我們致力於為您提供優質的服務和全面的技術支持,以確保您的智能合約在安全和可靠的環境中運行。

  • Related Posts

    報告:DeFi借貸自2022年以來增長959% 達191億美元

    來源:區塊鏈騎士 近期一份Galaxy報告指出,儘管Teth…

    Bankless:比特幣能在鏈上蓬勃發展嗎?

    作者:Jean-Paul Faraj 來源:Bankless…

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    You Missed

    歷史性轉折:比特幣正在成為避險資產

    • By jakiro
    • 19 4 月, 2025
    • 3 views
    歷史性轉折:比特幣正在成為避險資產

    是什麼讓加密貨幣rug pull事件頻發?

    • By jakiro
    • 18 4 月, 2025
    • 8 views
    是什麼讓加密貨幣rug pull事件頻發?

    Wintermute Ventures:我們為什麼投資Euler?

    • By jakiro
    • 18 4 月, 2025
    • 8 views
    Wintermute Ventures:我們為什麼投資Euler?

    川普可以將鮑威爾炒魷魚嗎?會帶來什麼經濟風險?

    • By jakiro
    • 18 4 月, 2025
    • 10 views
    川普可以將鮑威爾炒魷魚嗎?會帶來什麼經濟風險?

    Glassnode:我們正在經歷牛熊轉換嗎?

    • By jakiro
    • 18 4 月, 2025
    • 7 views
    Glassnode:我們正在經歷牛熊轉換嗎?

    The Post Web加速器首批8個入選項目速覽

    • By jakiro
    • 17 4 月, 2025
    • 11 views
    The Post Web加速器首批8個入選項目速覽
    Home
    News
    School
    Search