Cobo安全團隊:區塊鏈安全交易指南

2024-03-21 19:03:21

原文作者:Cobo Global

Cobo 安全團隊通過整理鏈上交易過程中常見的風險點,編寫了交易安全的執行准則,旨在讓用戶在交易過程中規避風險,保障資金安全,防範釣魚攻擊。

前言

隨着比特幣 ETF 的通過,區塊鏈市場开始回暖。幣價的回升讓行業逐漸恢復了往日的繁榮。與此同時黑客活動也开始活躍起來。Cobo 安全團隊觀察到近一兩個月釣魚案件發生的頻率也有所增加。

近期 Restaking, BTC L2 等新的應用熱點开始湧現,鏈上交易逐漸成為 Web3 用戶日常不可或缺的一部分,越來越多的用戶資金也在往鏈上轉移。

而與交易所等中心化應用不同,鏈上應用的账戶安全需要通過用戶自己保障。安全地進行區塊鏈交易是 Web3 原住民最基本的能力。盡管很多基礎設施如瀏覽器插件錢包,甚至瀏覽器本身都對針對釣魚有一定的風險提醒,但用戶因不安全交易導致資產損失的事件還是時有發生(如私鑰泄露,籤名釣魚等)。

Cobo 安全團隊通過整理鏈上交易過程中常見的風險點,編寫了交易安全的執行准則,旨在讓用戶在交易過程中規避風險,保障資金安全,防範釣魚攻擊。

在开始介紹之前,Cobo 安全團隊為大家總結了安全交易的核心准則,如下:

1、拒絕盲籤,不理解的交易、消息不籤名;

2、不厭其煩,反復驗證。

如何進行安全交易

一個完整的 DApp 交易流程包含多個環節: 錢包安裝、訪問 DApp、連接錢包、消息籤名、交易籤名、交易後處理。 其中每個環節都存在一定的安全風險,下面將依次介紹實際操作中的注意事項。

注:本文主要介紹以太坊及各 EVM 兼容鏈上的安全交互流程,其他非 EVM 鏈使用的工具和具體的技術細節可能不同。

錢包安裝

目前 DApp 的主流使用方式是使用瀏覽器插件錢包進行交互。EVM 鏈使用的主流錢包有 Metamask 和 Rabby  等。

Cobo 安全團隊在深度體驗後,基於風險提示的角度,推薦使用 Rabby 插件錢包來作為主要的鏈上交互錢包。其原因在於:相較於 Metamask 錢包,Rabby 錢包提供交易數據解析、交易模擬執行、交易風險預警、授權查詢和歷史籤名數據查詢等功能,在針對釣魚防範上會比 Metamask 錢包具有更大的優勢。

安裝 Chrome 插件錢包,需要確認從 Chrome 應用商店中下載安裝,不要從第三方網站安裝錢包,避免安裝有後門的錢包軟件。

有條件的用戶建議聯合使用硬件錢包,在私鑰保管上可以更大程度地提高整體的安全性。

訪問 DApp

網頁釣魚是 Web3 攻擊中的常見攻擊手法,典型案例是以空投名義誘導用戶訪問釣魚 DApp 應用,在用戶連接錢包後誘導用戶籤署代幣授權、轉账交易或代幣授權籤名,導致用戶資產遭受損失。

因此在訪問 DApp 時,用戶需要保持警惕,避免進入網頁釣魚的陷阱。

在訪問 DApp 前應該確認 DApp 網址的正確性。建議:

  1. 盡量不要從 Google 搜索關鍵字第一名直接進行訪問,釣魚攻擊者可通過購买廣告位使自己的釣魚網站搜索排名置頂,因此第一名不一定是官方網站。

  2. 避免直接點擊 x.com 及各類社交軟件中其他用戶的評論、消息中發布的網址,這類網址很可能是釣魚鏈接。

  3. 反復確認 DApp 網址正確性後進行訪問,可根據 DefiLlama 等 DApp 市場、項目方官方 X 账號、Google 搜索結果多方校對。

  4. 確認安全的網站添加過瀏覽器收藏夾中,後續直接從收藏夾中訪問。

在已經打开 DApp 網頁之後,也需要對地址欄進行安全檢查:

  1. 檢查域名、網址。 通常 DApp 會使用比較簡潔的域名和網址。如 https://app.uniswap.org/;如果遇到特別長的域名,形如 https://zk-polyhedra.network-8jb.xyz/或與知名網站名稱類似的域名,如 https://pufffer.fi(注意多了一個 f),則很可能是登入的釣魚網站,應立刻退出。 識別域名時也要特別注意 1 il, oO 0 等各類形近字符的情況。

  2. 檢查瀏覽器 https 鏈接情況。 目前主流 DApp 均使用 https 鏈接,瀏覽器應該顯示?狀標志。如果不是 https 鏈接或瀏覽器提示證書異常的情況,則訪問的可能不是官方網站或遭遇了劫持攻擊,應該立刻停止訪問。

目前市面上主流瀏覽器插件錢包都已經集成了一定的風險提示功能,如 Metamask/Phantom 等。在訪問一些位於黑名單中的風險網址時,瀏覽器插件錢包甚至 Chrome 瀏覽器本身都可能會展示強安全提示(見下圖)。

連接錢包

進入 DApp 後,可能會自動或在主動點擊 Connect 後觸發連接錢包的操作。插件錢包會針對當前 DApp 的進行一些檢查、信息展示等。

以下是 Rabby 錢包給出的網頁審查信息,可用來輔助進行 DApp 真實性的判斷。

在連接錢包後,通常在用戶沒有其他操作時,DApp 不會主動喚起插件錢包。如果網站在登入後 DApp 頻繁喚起錢包要求籤名消息、籤署交易,甚至在拒絕籤名後仍會不斷彈出籤名的情況,那么也很可能是釣魚網站的情況,需要謹慎處理。

消息籤名

在極端情況下,比方說攻擊者攻擊了協議的官方網站或通過前端劫持等攻擊,對頁面內容進行了替換。普通用戶很難在這種場景下對網站安全性進行甄別。

此時插件錢包的籤名是用戶保存自身資產的最終屏障。只要拒絕掉惡意籤名,就能保障自身資產不受損失。 用戶在籤名任何消息和交易時都應該仔細審查籤名內容,拒絕盲籤。

從技術上講,目前以太坊中常見的籤名類型有三類:

  • 哈希籤名 eth_sign: 針對某個數據的原始 hash 進行籤名。hash 的原始數據可能是消息甚至以太坊交易。

  • 消息籤名 personal_sign: 針對數據明文進行籤名,在用戶登錄驗證或許可協議確認時最為常見。

  • 結構化數據籤名 eth_signTypedData(EIP-712): 針對 DeFi 協議中使用的數據對象的籤名,常見的如 ERC 20 Permit 授權籤名、NFT 掛單籤名等。

針對消息籤名的風險判別,用戶可遵循以下准則:

  1. 自然語言籤名通常可以放行。 這類籤名通常 personal_sign,用於登錄確認或者確認產品須知,為大段的自然語言描述(而非數字、十六制等形式)。此類消息因為包括自然語言,字符串比較復雜,智能合約處理比較困難,因此通常不會用於鏈上鑑權,只是網站用於確認地址身份。因此相對風險較低。

  2. 禁止直接籤名 16 進制原始 hash。 這類籤名通常是  eth_sign 籤名,這類籤名最為危險,因為用戶無法判斷 hash 原本的數據內容是什么。因此大部分錢包已經禁用了針對原始哈希( 16 進制數據)籤名的功能。Metamask 錢包,可在 設置 ->高級 -> Eth_sign 請求 選項卡中確認其配置為關閉狀態。Rabby 錢包,相關配置默認禁用的,無需額外配置。

  3. 結構化數據籤名仔細檢查籤名內容。 如  ERC 20 Permit 授權籤名則要檢查其中 spender 地址是否符合預期,如為 EOA 地址則很可能是點擊了釣魚籤名,應該立即拒絕。

針對消息籤名,這裏需要額外注意的是,盡管在瀏覽器插件錢包中 eth_sign 操作是默認禁止的,但錢包仍可通過 personal_sign 對 hash 類的數據進行籤名。這類籤名不會導致 permit 授權或發起交易。但個別協議(如一些 AA 錢包)仍可能使用 personal_sign 籤名進行鑑權。為避免損失原則上還是不對 16 進制數據進行籤名。這類籤名效果如下:

交易籤名

籤名交易要遵循不盲籤的原則 。目前許多插件錢包會針對待籤名消息進行解碼並展示相關內容,如下是 Rabby 錢包對一筆 DEX 交易的解析示例:

其中用戶可以查看交易的目標地址的一些相關信息,如 是否為 EOA 地址、地址余額以及合約部署時間等。 用戶可以根據這些信息對要籤署的交易進行風險判斷。例如如果交互的地址為 EOA 地址,或交互的合約部署時間小於 7 天,則可以認為該操作具有較大風險,應充分調查後再進行操作。

對於开源協議,主流的瀏覽器插件錢包已經支持對交易數據的解析,通過查看 ABI 解碼後的交易內容,可以更加清楚地了解當前在進行什么操作。合約調用的函數名可以提供一些其功能的參考:如 approve、swap、transfer、deposit 和 withdraw 等。

Rabby,imToken 錢包還集成了模擬執行功能,用戶在交易確認前可以直接看到交易執行結果,通過交易模擬執行,用戶可以查看到當前交易會導致的各種資金轉移情況。用戶應該仔細檢查,對於不符合預期執行結果拒絕籤名。

對於有一定技術儲備的用戶,在自動化工具無法順利解析交易的情況,也可使用一些常見的人工檢查方法:

  1. 通過復制交互目標合約地址到區塊鏈瀏覽器如 etherscan 中進行審查,審查內容主要包括合約是否开源,近期是否存在大量交易和 Etherscan 是否為該地址打上官方標籤或惡意標籤。

  2. 在遇到插件錢包無法識別的交易,可以通過手動復制原始交易數據(raw_data,通過 16 進制數據展示)中的前 8 位數字到 https://openchain.xyz/signatures進行查詢,得到原始的函數名稱,以大概確定交易的行為。

  3. 使用 Phalcon, Tenderly 和 Dedaub 等交易模擬工具進行模擬執行,查看交易具體執行細節。

交易後處理

在躲過了釣魚網頁和惡意籤名後並不意味着萬事大吉,交易後也仍需進行風險管理。

交易後應及時查看交易的上鏈情況,確認其與籤名時預期的狀態是否一致。如果發現異常及時進行資產轉移、授權解除等止損操作。

ERC 20 Approval 授權管理也十分重要。有些案例中用戶對某些合約進行了代幣授權後,多年後這些合約遭受攻擊,攻擊者利用了被攻擊合約的代幣授權額度來竊取用戶資金。

為避免此類情況 Cobo 安全團隊建議用戶遵循以下標准來進行風險防範:

  1. 最小化授權。 當進行代幣授權時,應根據交易的需求有限量的授權相應的代幣數量。如某次交易需要授權 100 USDT,則本次授權數量即限制為 100 USDT,而不要使用默認的無限授權。

  2. 及時撤銷不需要的代幣授權。 通過 Rabby 錢包的 Approval 功能或者登錄 revoke.cash 查詢對應的地址的授權情況,撤銷較長時間沒有交互的協議的授權,防止協議後續存在漏洞導致利用用戶的授權額度造成資產損失。

其他技巧

除了上述交易流程中的風險外,合理利用通過某些工具中集成的功能也可以規避一些風險。

  1. 某些錢包內置錢包導入功能(如 Rabby)。可以通過導入其他移動端錢包的地址,在進行交易時可以進行強制的二次確認(需要喚醒錢包、掃碼和輸入密碼確認)來減緩釣魚風險。同時享有移動端錢包的交易安全檢查(白名單、模擬執行和釣魚提示等)

  2. 某些錢包支持導入的觀察者錢包(如 Rabby,OneKey,TokenPocket,imToken 等),通過觀察者錢包進入一些陌生的網站。仍會正常喚起消息籤名或發起交易的頁面,此時可仔細查看待籤名內容。同時因為沒有私鑰,不必擔心誤操作確認的情況。

  3. 通過 Rabby 錢包的 Approvals 功能查詢地址的授權情況,及時撤銷高危授權。Tips: Rabby 在該功能中使用了多個維度(歷史授權鏈接總金額/24 h 取消授權數量/授權時間/授權資產數量)來對授權風險進行評判,可以更有效幫助用戶識別授權風險。

  4. 誤操作籤名後,通過 Rabby 錢包的 Signature Record 功能及時檢查自己籤名過的交易和文本數據,及時排查授權風險。

在具備了風險意識和做了充足的風險防範的情況下,也仍要進行有效的資金隔離,在極端情況下降低資金的受損程度。Cobo 安全團隊推薦大家使用以下方案來進行資金存放:

  1. 使用 Gnosis Safe 多籤錢包或冷錢包存放大資金;

  2. 使用瀏覽器錢包生成的地址或者其他 EOA 錢包存放小資金用戶交互,並定期更換熱錢包地址。

如果不小心真的發生被釣魚的情況,可以立即執行以下操作來降低損失:

  1. Revoke.cash 及時取消授權;

  2. 如果籤名了釣魚 permit 消息且資金未被轉走,則立刻籤名新的消息並發起 permit 調用使釣魚消息 nonce 失效;

  3. 必要時轉移账號資金。

如何安全領取空投

發放空投是目前項目方用於吸引用戶的常見方式,同時也是用戶被釣魚攻擊的重災區。為此,基於上文的安全交易准則,Cobo 安全團隊為大家整理了一套用於領取鏈上空投的安全交互流程:

  1. 先使用 Rabby 觀察者錢包測試一遍交互流程,確認無代幣授權、代幣轉账類交易。

  2. 領取空投過程中不進行 Permit 類消息籤名。不進行 Approve 合約調用。

  3. 盡量使用「小號」領取空投。

  4. 領空投交易查看模擬執行結果,確認無代幣轉出。

插件工具選取

區塊鏈安全守則的內容很多,有可能不是每次交互都能做到細致的檢查,那么是否存在一種好用的瀏覽器插件來輔助我們做出風險判斷呢?

Cobo 安全團隊體驗了市面上較為主流的交易風險檢查插件,並從 「釣魚網頁攔截」、「惡意授權地址檢查」和「是否开源」 三個維度整理成表格,大家可以根據自身情況選擇使用,如下:

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

動區週報:比特幣新高後回落、鮑爾不急降息 市場情緒轉變、迷因幣火熱…

本週(11/10-11/16)重要大事速覽 比特幣動態 :鮑爾放鷹「 不急降息 」,比特幣價格一度...

Arthur Wang
3 1小時前

繼LTC降級memecoin後,“誰是meme”遊戲开始流行?

隨着美國大選結束,比特幣 Meme 熱潮正在加速蔓延,吸引了大量資金和社區的關注。從特朗普宣布馬斯...

星球日報
3 1小時前

復盤DEXX用戶資金大規模被盜事件,鏈上安全非兒戲

今晨,本應結束一晚上忙碌“打狗”工作的各大 Meme 社區成員因為一則消息瞬間炸开了鍋。 鏈上交易...

星球日報
5 1小時前

SUI新高之際,從用戶角度談談三大Move公鏈區別

11 月 14 日,SUI 升破 3.5 USDT,幣價再創歷史新高;Bitwise 將在瑞士證券...

星球日報
4 17小時前

Hack VC:模塊化是個錯誤嗎?以數據為依據審視以太坊的這一战略

撰文:Alex Pack 及 Alex Botte,Hack VC 合夥人 編譯:Yangz,Te...

TechubNews
4 17小時前

除了 TON, 哪些公鏈在爭奪 Telegram 用戶?數據表現如何?

作者:Stella L ( [email protected] ) 在 2024 年...

陀螺財經_Footprint_Analytics
4 17小時前