DeFi安全指南:閃電貸、價格操控和重入攻擊的防範策略

robot
摘要生成中

DeFi 常見安全漏洞及預防措施

近期,某安全專家爲社區成員分享了一堂 DeFi 安全課。他回顧了過去一年多 Web3 行業遭遇的重大安全事件,探討了這些安全事件發生的原因以及如何規避,總結了常見智能合約的安全漏洞及預防措施,還對項目方和普通用戶給出了一些安全建議。

常見的 DeFi 漏洞類型主要包括閃電貸、價格操縱、函數權限問題、任意外部調用、fallback 函數問題、業務邏輯漏洞、私鑰泄漏和重入攻擊。本文將重點介紹閃電貸、價格操控以及重入攻擊這三種類型。

Cobo DeFi 安全課(下):DeFi 常⻅安全漏洞及預防

閃電貸

閃電貸本身是 DeFi 的一種創新,但當被黑客利用時,他們可以在不花費任何成本的情況下借到大量資金,執行套利後歸還,只需支付少量 Gas 費用就可獲得巨額收益。

許多 DeFi 項目看似收益很高,但實際上項目方的水平參差不齊。有些項目的代碼可能是購買的,即便代碼本身沒有漏洞,在邏輯上仍可能存在問題。例如,某項目會在固定時間根據持倉者持有的代幣數量發放獎勵,卻被攻擊者利用閃電貸購買大量代幣,在獎勵發放時獲得大部分獎勵。

此外,還有一些通過代幣來計算價格的項目,可以通過閃電貸影響價格。作爲項目方應該對這些問題提高警惕。

價格操控

價格操控問題與閃電貸關係密切,主要有兩種常見類型:

  1. 計算價格時使用第三方數據,但使用方式不正確或檢查缺失導致價格被惡意操控。

  2. 使用某些地址的代幣數量作爲計算變量,而這些地址的代幣餘額可以被臨時增加或減少。

重入攻擊

調用外部合約的主要危險之一是它們可以接管控制流,並對數據進行調用函數未預料到的更改。例如:

solidity mapping (address => uint) private userBalances;

function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }

由於用戶的餘額直到函數的最後才設置爲 0,第二次(和以後的)調用仍然會成功,並且會一遍又一遍地提取餘額。

解決重入問題需要注意以下幾點:

  1. 不只是防止單一函數的重入問題
  2. 遵循 Checks-Effects-Interactions 模式進行編碼
  3. 使用經過時間驗證的防重入 modifier

在這個領域有很多最佳安全實踐,我們應該直接使用而不是重復造輪子。使用成熟的、久經考驗的方案比自己開發的新方案出問題的概率要小得多。

項目方安全建議

  1. 合約開發遵循最佳安全實踐。

  2. 合約可升級、可暫停:很多攻擊不是一次性的把幣全轉走,而是分多筆交易去執行。如果有一個相對健全的監控機制,可以及時發現並暫停合約,有效降低損失。

  3. 採用時間鎖:如果有時間鎖,可以給予足夠的時間讓人發現異常並採取行動。

  4. 加大安全投入,建立完善的安全體系:安全是成體系的,不僅僅包括合約審計,還包括私鑰管理、經濟模型等多個方面。

  5. 提高所有員工的安全意識:很多安全問題可以通過提高警惕來避免。

  6. 預防內部作惡,在提升效率的同時增強風控:採用多籤、時間鎖等機制可以在保證效率的同時提升安全性。

  7. 三方引入安全性:對上下遊都要進行安全校驗,尤其是對於不開源的合約要特別謹慎。

用戶/LP 如何判斷智能合約是否安全?

  1. 合約是否開源:不開源的項目不要參與。

  2. Owner 是否採用多籤,多籤是否去中心化。

  3. 查看合約已有的交易情況:包括部署時間、交互次數等。

  4. 合約是否爲代理合約,是否可升級,是否有時間鎖。

  5. 合約是否接受過多家機構審計,Owner 權限是否過大。

  6. 注意預言機:使用知名預言機的項目相對更安全,自建或易被操縱的預言機要格外警惕。

總之,在 Web3 環境中,保持警惕、多問幾個爲什麼,就能規避很多潛在風險。無論是項目方還是普通用戶,都應該重視安全問題,建立完善的安全意識和防範機制。

DEFI1.32%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
MEV猎手不亏本vip
· 9小時前
这些安全问题算个der
回復0
空投刷子姐vip
· 21小時前
还不如教教怎么刷空投
回復0
熊市搬砖人vip
· 21小時前
漏洞都被你发完了 还让黑客咋玩
回復0
闪电梭哈侠vip
· 21小時前
别说了 上次梭哈输光就是闪电贷搞的鬼
回復0
FUD_Whisperervip
· 21小時前
搞了大半年defi 不如黑客一个手速快
回復0
defi_detectivevip
· 21小時前
又被割韭菜了吗
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)