Cobo 安全團隊:牛市 DeFi 互動指南
作者:Cobo 安全團隊
自 2019 年 DeFi Summer 開啟後,以以太坊為首,出現了越來越多富有創意的去中心化金融協議(DeFi 協議),大大豐富了鏈上資產的可用性,使區塊鏈用戶可以更好地利用鏈上資產進行更多樣的金融活動並為此創造豐厚的收益。但隨著越來越多 DeFi 協議的興起,安全挑戰也隨之而來。據不完全統計,僅 2023 年一年,因區塊鏈攻擊而導致的資產損失已達到 26.1 億美元。可見,在參與 DeFi 協議的過程中,除了評估對應的收益預期以外,協議安全性方面的評估也不可忽視,否則會給用戶帶來大的損失。
一般而言,目前對協議安全評估的主流定義為代碼的安全性評估,這種定義的維度是比較單一的,這裡的問題在於,評估的本身只是考慮了協議在靜態過程下的安全性,而在 DeFi 交互過程中,安全性往往是動態的,包含賬戶管理、協議交互前的準備、交互完成後的資產管理、數據監控及極端情況下資產損失後的自救等多個階段。
作為一個即將要進入 DeFi 新手村的用戶,該如何在賺取收益的同時最大限度地保障資金的安全?Cobo 安全團隊梳理了 DeFi 交互中常見的安全風險及對應的安全防範措施,希望可以對大家在牛市中的 DeFi 安全交互有所啟發和幫助。
DeFi 交互中的常見安全風險和防範措施
一、賬戶私鑰洩露
賬戶私鑰洩露是目前新手用戶較為容易中招的問題之一,由於當前市面上錢包種類繁多,新手用戶缺乏自行判別錢包安全性的能力,很多新手用戶會下載一些不安全的錢包,並使用其來生成私鑰,從而導致私鑰被惡意回傳到攻擊者手中,造成私鑰洩露。很多資深用戶發現自己的主賬號在某一天被轉走所有資產,分析大半天發現所有行為都正常,這種案例下大部分情況就是早期該賬戶使用了不安全的錢包來生成自己的私鑰導致私鑰早已洩露。
同時,由於區塊鏈空投導致的財富效應,很多新手用戶會盲目點擊一些所謂的空投網站,這些空投網站將自己包裝成非常正經的項目網頁,並告訴用戶存在大量未領取代幣。在利益的驅使下,很多新手用戶會在網頁的誘導下,填入自己的賬戶私鑰,導致私鑰洩露。
為了防止私鑰洩露,用戶需要做到以下幾點來加以防範:
使用知名度較高的區塊鏈錢包,並從對應的官網進行錢包的下載。有條件的用戶建議使用硬體錢包。
永遠不要將自己的私鑰明文暴露在聯網環境中,也不要隨意將自己的私鑰輸入到任何網頁當中。
二、簽名釣魚風險
簽名釣魚風險和私鑰洩露一樣,同樣也是新手用戶的重災區。區別於直接讓用戶填入私鑰,此類釣魚攻擊則是誘導用戶發起一筆交易或簽名,從而獲取用戶相關資產的授權,具有隱蔽性高、不易分析以及難以察覺等特點。
通常,攻擊者會先把用戶誘導到釣魚網頁中,以領取空投、驗證登錄等名義讓用戶發起簽名,此時,用戶的瀏覽器錢包提示用戶需要完成簽名。
釣魚交易的類型可能有多種:
直接轉帳類型。直接轉帳 ETH 或進行 ERC20 transfer 調用將錢包資產轉移到攻擊者地址。
Approve 類型。調用 ERC20 Approve 方法授權攻擊者錢包。用戶簽名時不會發生資產轉移。但攻擊者錢包可通過調用 transferFrom 轉移用戶資產。
EIP712 消息簽名。如 ERC20 Permit 方法;Permit2 授權;NFT 掛單簽名等。此類簽名通常在錢包中展示為 Json 數據或者格式化較好的樹狀數據。用戶簽名時不會發起交易,不會有 gas 消耗。但簽名結果會被釣魚網站記錄,攻擊者可以使用該簽名結果轉移受害者的 ERC20 或 NFT 資產。
原始 hash 簽名。簽名數據為 16 進制 hash 數據,從簽名數據本身無法推斷具體的簽名內容。hash 背後可能是上述 1-3 種類型數據。簽名很可能導致資產損失。不過目前主流錢包通常會禁止此種簽名方式或者予以明顯的風險提示。
最近一些案例中還發現某些釣魚網站會要求用戶連續進行多筆簽名,且前幾筆均為無害的正常簽名。然後混雜一筆惡意簽名內容。利用用戶的操作慣性誘導用戶完成簽名操作。
為了防止釣魚導致的資金損失,核心在於拒絕盲簽。對於每筆簽名認真審核,對於不確定內容的交易拒絕簽名。具體來說,可以在簽名過程中注意以下內容:
確認交互網站為 DeFi 項目官網,檢查完整域名。
檢查合約調用的方法,對於 transfer, approve 方法重點檢查。
檢查交易附帶的 ETH 轉帳。某些釣魚網站會嘗試構造看起來安全的方法(如 Claim),但實際會在調用時附帶 ETH 轉帳造成 ETH 等鏈原生代幣的損失。
不簽名原始 hash 內容。
三、轉帳地址投毒
轉帳地址投毒為近來較為新穎的攻擊方式,其攻擊手法為在用戶發起一筆轉帳(ERC20, native token 等)時,使用與該交易中的接收地址相似的地址,向用戶發送一筆金額相同的交易,或金額相同但對應代幣為 fake token 的交易。
舉例:
Alice 每月會固定轉移了 1 ETH 給 Bob 作為薪資發放。Charlie 監控到了這筆交易,用與 Bob 相似的地址(地址前 8 位和後 8 位相同)發送 0.001 ETH 給 Alice。這種操作後,在下次 Alice 再向 Bob 轉帳的時候,就有可能使用 Charlie 的地址來作為交易的接收地址。會發生這樣的情況的原因在於區塊鏈地址長度較長且無規律,用戶難以記憶,導致很多時候用戶會貪圖方便直接從上一次的交易記錄中複製地址。由於 Charlie 和 Bob 的地址極為相似,導致 Alice 難以分辨,最終導致資產損失。
為了防止中招轉帳地址投毒,用戶可以採取以下手段進行防範:
每次交易均核對轉帳地址,且要核對完整內容而不是僅比較前後幾字節。
將常用的地址設置進地址白名單(地址簿)中設置別名,儘量只使用地址簿中的地址進行轉帳。
避免將從鏈上渠道(包括區塊鏈瀏覽器、錢包交易記錄等)中複製地址作為轉帳目標。
四、代幣過度授權
代幣授權幾乎是進行 DeFi 交互的第一步。在進行 DeFi 操作時,由於交易數據是通過項方網頁構造而不是用戶構造,在通常情況下,為了方便用戶多次交互而不需要重複授權,項方網頁通常會構造一個無限授權的交易讓用戶簽名。其出發點是為用戶節省 gas,但是這也為後續資金安全埋下了隱患。假設後續項目代碼發生問題,如未授權接口,或任意調用漏洞,用戶對合約的無限授權將導致被攻擊者利用,導致用戶資產被轉移。這種攻擊場景在跨鏈橋和 DEX 協議中較為常見。
為了防止後續項目在升級中引入風險代碼或項目代碼本身存在未發現的漏洞,用戶應採用最小授權的原則,儘量僅授權本次交易中使用到的額度,防止後續項目風險導致自己的資產損失。
五、不安全的 DeFi 操作
除了交互前的準備外,在交互過程中同樣存在很多容易忽視的風險。這些風險通常源於用戶對項目本身的不了解導致。具體的例子為:
在通過鏈上兌換協議進行代幣兌換時滑點設置過大或者編寫腳本進行 swap 沒有設置最低接收數量(出於編寫方便設置為 0),導致交易受到 MEV 機器人的"三明治"攻擊。
在通過鏈上借貸協議進行借貸操作時,沒有對倉位健康度進行及時管理,導致大波動行情中倉位被清算。
在與某些項目交互時,沒有對項方憑證進行良好的保管,如把 Uniswap V3 的 NFT 憑證當成是普通 NFT 到 OpenSea 中進行售賣。
為了防範這些風險,用戶在進行項目交互時,一定要做好對應的項目調研,明確項目機制和相關特性,防止資產損失。
DeFi 安全交易新範式 -- Cobo Argus
上文介紹了在區塊鏈進行 DeFi 活動常見的交互風險。用戶不小心中招其中一個,都有可能導致多年的努力全盤皆失,稍有不慎萬劫不復。那么,是否存在一個安全有效,又便於管理的風控方案呢?一個新的選擇方案是 Cobo Argus。
Cobo Argus 是一款由 Cobo 團隊進行開發,基於 Gnosis Safe 進行構建的鏈上風控產品。主要的作用在於可以通過構建不同的 ACL 策略,對用戶交易進行解析,對其中不符合風控規則的交易進行攔截,從而確保用戶資金安全。
Cobo Argus 如何應對 DeFi 環境中的安全風險?
1. 底層多簽錢包,上層單簽授權:避免私鑰洩露單點風險,減緩被釣魚風險,同時保證操作效率
Cobo Argus 是一個基於 Safe {Wallet} 的多簽錢包構建的產品,其基礎和核心為多簽合約錢包。所以 Cobo Argus 天然繼承了 Safe {Wallet} 多簽錢包的安全性。
通過把資金從單個私鑰管理變成多個私鑰共同維護,可以杜絕由單個私鑰洩露帶來的資產丟失/鎖定風險。多簽錢包本身需要多個簽名來觸發交易的執行,單個地址私鑰的洩露也不會影響總體資金的安全。另外可以發起多簽交易來替換丟失或有風險的單簽地址,保證多簽錢包的安全性。
另外由於從單簽地址切換到了多簽地址後,在交易簽名時,需要每個用戶對一筆交易進行簽名,有利於交叉審計交易內容,從而大大降低了被釣魚的可能性。
多簽由於需要多人審核,對操作效率有一定影響。Cobo Argus 允許用戶配置靈活的授權規則,允許將某些風險較低的高頻操作(如進行 Farming 時定期 Claim 收益的操作)授權給某個 EOA 地址。該地址可以代替多簽錢包發起操作,提高工作效率。同時由於該地址權限被嚴格限制,錢包整體的安全性不會受到明顯影響。
2. 自定義機器人:7*24 小時自動風險監測與響應
通過配置 Cobo Argus 監控機器人,可以自定義需要監控的條件和觸發條件需要執行的操作。
以借貸項目的槓桿管理為例,用戶可以通過配置 Argus 機器人監控自己的 health factor,當倉位接近清算時,可以由機器人進行補充抵押物、還款等降低槓桿的操作。
3. 自定義的 ACL 策略
除了自定義監控機器人以外,有一定開發能力的用戶,還可以通過開發自定義的 ACL(Access Control List)合約來實現更加靈活的權限管理。這是 Cobo Argus 的核心功能之一。下面通過若干例子來感受該功能的魅力所在:
針對地址投毒攻擊,可以通過編寫 ACL 合約,用戶可以在 ACL 合約中指定常用的地址作為白名單,在交易過程中,ACL 合約會對交易中的接收地址進行解析(ERC20 / native token),並對用戶設置的白名單地址進行比對,如果接收地址不在對應的地址內,則該筆交易無法成功完成。
針對過度授權問題,用戶可以通過編寫 ACL 策略合約對 Approve 交易中的授權額度進行解析,限制代幣的 Approve 授權額度不超過用戶預設值。或可通過配置自定義機器人,定期對相關代幣的授權清零。
針對不安全的 DeFi 操作,如無滑點檢查的 swap 交易,可以通過編寫 Argus ACL 策略合約,設定兌換交易可接受的最低滑點,在設定完成後,ACL 策略合約便可根據設定的滑點對不同的 swap 交易進行解析,如果兌換滑點不滿足,則可以對該筆交易進行攔截。
總結
DeFi 交互中存在很多難以防範的風險,文中提到的內容雖然涉及了很多常見場景,但也不能完全覆蓋所有風險點。用戶需要認真處理每一筆交易。
Cobo Argus 可以為用戶提供可靠且易於配置的手段來防範常見的一些安全風險。通過 ACL 可以完成靈活且安全的授權管理,在保證安全性的前提下,提高操作效率;自定義機器人則可以減少人工操作,同時實時監控的能力可以 7*24 小時保障用戶資金安全。
DeFi 固然可以帶給用戶可觀的收益,但是資金安全才是資產穩步增長的核心。Cobo Argus 將守護每位 DeFi Farmer,幫助大家在牛市創造更多價值。