📢 Gate廣場 #MBG任务挑战# 發帖贏大獎活動火熱開啓!
想要瓜分1,000枚MBG?現在就來參與,展示你的洞察與實操,成爲MBG推廣達人!
💰️ 本期將評選出20位優質發帖用戶,每人可輕鬆獲得50枚MBG!
如何參與:
1️⃣ 調研MBG項目
對MBG的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與MBG相關活動(包括CandyDrop、Launchpool或現貨交易),並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是現貨行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
MBG熱門活動(帖文需附下列活動連結):
Gate第287期Launchpool:MBG — 質押ETH、MBG即可免費瓜分112,500 MBG,每小時領取獎勵!參與攻略見公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通過首次交易、交易MBG、邀請好友註冊交易即可分187,500 MBG!參與攻略見公告:https://www.gate.com/announcements
DeFi常見安全漏洞解析:閃電貸、價格操縱與重入攻擊防範
DeFi 常見安全漏洞及預防措施
近期,一位安全專家爲社區成員分享了一堂 DeFi 安全課。他回顧了過去一年多 Web3 行業遭遇的重大安全事件,探討了這些事件發生的原因以及如何規避,總結了常見智能合約的安全漏洞及預防措施,還對項目方和普通用戶給出了一些安全建議。
常見的 DeFi 漏洞類型包括閃電貸、價格操縱、函數權限問題、任意外部調用、fallback 函數問題、業務邏輯漏洞、私鑰泄漏、重入等。下面重點介紹閃電貸、價格操控以及重入攻擊這三種類型。
閃電貸
閃電貸本身是 DeFi 的一種創新,但被黑客利用時,他們無需成本就可以借到大量資金,在執行完套利後歸還,只需支付少量 Gas 費用就可獲得巨額收益。
過去兩年,閃電貸問題頻發。一些項目看似收益很高,但實際上項目方水平參差不齊。即便代碼本身沒有漏洞,在邏輯上仍可能存在問題。例如,有項目會在固定時間根據持倉者持有的代幣數量發放獎勵,卻被攻擊者利用閃電貸購買大量代幣,在獎勵發放時獲取大部分獎勵。還有一些通過代幣來計算價格的項目,可以通過閃電貸影響價格。項目方應該對這些問題提高警惕。
價格操控
價格操控問題與閃電貸關係密切,主要有兩種類型:
計算價格時使用第三方數據,但使用方式不正確或檢查缺失導致價格被惡意操控。
使用某些地址的代幣數量作爲計算變量,而這些地址的代幣餘額可以被臨時增加或減少。
重入攻擊
調用外部合約的主要危險之一是它們可以接管控制流,並對數據進行調用函數未預料到的更改。
針對不同的合約,重入存在的方式很多,可以結合合約的不同函數或多個不同合約的函數完成重入攻擊,所以解決重入問題時需要注意:
不只是防止單一函數的重入問題
遵循 Checks-Effects-Interactions 模式進行編碼
使用經過時間驗證的防重入 modifier
最怕的就是重復造輪子,需要什麼都自己寫。在這個圈內有很多最佳安全實踐,我們拿來用就好,完全沒有必要重復造輪子。當你造一個輪子時,是沒有通過充分驗證的,這個時候出問題的概率,很明顯比用一個非常成熟的久經考驗的出問題的概率要大得多。
安全建議
項目方安全 Tips
合約開發遵循最佳安全實踐。
合約可升級、暫停:很多攻擊不是一次性把幣全轉走,而是分多筆交易執行,如果有相對健全的監控機制,是可以發現的,發現後如果合約可以暫停,就可以有效降低損失。
採用時間鎖:如果有時間鎖,假設是 48 小時內才能完成,這個時候在時間鎖期間很多人能發現創建者重新更新了一個所有人都可以使用的 mint 方法,監控的人就知道項目可能被黑了,可以通知項目方去改變,即使通知了也沒人管,至少可以先把自己的那部分錢給拿出來,先保證自己的收益不受損。所以說一個項目如果沒有時間鎖,理論上來講是增加了出問題的概率。
加大安全投入,建立完善的安全體系:安全不是一個點,也不是一條線,安全是成體系的。不要覺得作爲項目方,合約通過多家公司審計就沒問題了,要考慮各種可能導致資金損失的風險。要盡量做風險建模,然後逐步將大部分風險規避掉,剩餘風險也是可接受風險,在可承受範圍內。安全和效率是不可能兼得的,要做一定的取舍。但如果完全不管安全,在安全上沒有投入,被攻擊是很正常的。
提高所有員工的安全意識:提高安全意識並不需要很多技術。在這個大環境內,只要稍微多問一些爲什麼,稍微多想一點就能規避掉很多問題。
預防內部作惡,在提升效率的同時增強風控:比如合約的 Owner 是單籤還是多籤、是否使用時間鎖等,都需要考慮。
三方引入安全性:作爲生態中的一環,項目方都會有自己的上下遊。安全上有一個"默認上下遊都是不安全"的原則。無論對於上遊還是下遊,都要做校驗。對於三方我們是很難控制,安全的風險敞口實際上特別大,所以要很注意三方的引入。合約是開源的,可以去引入、調用它;如果合約不開源,就絕對不能引用。
用戶/LP 如何判斷智能合約是否安全?
對於普通用戶,判斷項目是否安全主要看以下六點:
合約是否開源:凡是合約不開源的項目,堅決不碰,因爲我們無從得知合約寫的是什麼。
Owner 是否採用多籤,多籤是否去中心化:如果不用多籤,我們無法判斷項目的業務邏輯和內容,一旦出現安全事件,無法判斷是否爲黑客所爲。即便採用多籤,也需要判斷一下多籤是不是去中心化的。
合約已有的交易情況:尤其市面上有很多搞釣魚詐騙的項目,可能會做一個比較相似的合約,這個時候我們就要看一下合約的部署時間、交互次數等,這些都是判斷合約是否是安全的衡量標準。
合約是否爲代理合約,是否可升級,是否有時間鎖:如果合約完全不能升級,就太死板了,還是推薦項目的合約是可以升級的。但是升級要講究方法,當升級有升級內容、重要參數更改的時候,要有一個時間鎖定,要有給大家一個時間窗口去判斷真實升級是對用戶有害的還是有利的,這也是公開透明的一種方式。
合約是否接受過多家機構審計(不要盲目信任審計公司), Owner 權限是否過大:首先不要只相信一家審計公司,因爲不同的審計公司,不同的審計人員,看問題的角度是不一樣的。其次要看 Owner 的權限是否過大。一個正常的項目 Owner 的權限一定是可控的,這樣就不會有太多高危操作,操作也會用時間鎖的方式,讓用戶知道操作的是什麼。
注意預言機:如果項目使用市面上的龍頭預言機,基本上不會有太大問題,但如果使用自建的預言機,或者用一些隨便抵押一些代幣就可以往裏去喂價的預言機,那就要注意了。當發現預言機可能會存在一些問題,或者說存在被操縱可能的時候,即便項目收益再高也不能參與。