KX Web3 特別策劃了《安全特刊》專欄,針對不同類型的鏈上安全問題進行專期解答。通過最發生在用戶身邊最真實案例,與安全領域專家人士或者機構共同聯合,由不同視角進行雙重分享與解答,從而由淺入深梳理並歸納安全交易規則,旨在加強用戶安全教育的同時,幫助用戶從自身開始學會保護私鑰以及錢包資產安全。
(前情提要:慢霧》解析Google假廣告「加密釣魚」背後技術 )
(背景補充:Web3安全避坑指南|錢包分類及風險 )
本文為廣編稿,由 OKX 撰寫、提供,立場與動區無關。
某一天,突然有人送你 1 個價值 100 萬美元的錢包地址私鑰,你會想要把錢立刻轉走嗎?
如果想,那麼這篇文章就是為你量身定製的。
本文是 OKX Web3《安全特刊》第 01 期,特邀加密行業身經「百詐」的知名安全機構——慢霧安全團隊與 OKX Web3 安全團隊,從用戶遭遇的最真實的案例出發,進行分享,乾貨滿滿!
慢霧安全團隊:非常感謝 OKX Web3 的邀請。慢霧(SlowMist)作為一家行業領先的區塊鏈安全公司,主要通過安全審計及反洗錢追蹤溯源等服務廣大客戶,並構建了紮實的威脅情報合作網路。2023 年度 SlowMist 協助客戶、合作伙伴及公開被黑事件凍結資金共計超過 1250 萬美元。希望秉著對行業對安全的敬畏心,繼續輸出有價值的東西。
OKX Web3 安全團隊:大家好,非常開心可以進行本次分享。OKX Web3 安全團隊主要負責 OKX Web3 錢包的安全能力建設,提供產品安全、用戶安全、交易安全等多重防護服務,7X24 小時守護用戶錢包安全的同時,為維護整個區塊鏈安全生態貢獻力量。
_
Q1:能否分享一些真實的被盜案例?
慢霧安全團隊:第一,大部分案例是因為用戶把私鑰或者助記詞存到了網上。比如,用戶經常使用到的Google文檔、騰訊文檔、百度雲盤、微信收藏、備忘錄等雲端儲存服務進行私鑰或者助記詞儲存,一旦這些平臺帳號被駭客收集並「撞庫」成功,私鑰很容易被盜。
第二,用戶下載虛假 APP 後,引發了私鑰洩露。比如,多重簽名騙局是最為典型的案例之一,詐騙者誘導用戶下載假冒錢包並盜取錢包助記詞,隨後立即修改該用戶錢包的帳戶權限:將錢包帳戶權限由用戶本人,變成用戶本人和詐騙者共同持有,從而搶佔該錢包帳戶的控制權。這類詐騙者往往會保持耐心,等待用戶帳戶積累了一定加密資產後,一次性轉走。
OKX Web3 安全團隊:慢霧已經概述了私鑰被盜的 2 類主要情況,而第 2 種,詐騙者利用虛假 APP 盜取用戶私鑰的本質是木馬程式,這類木馬程式通過獲取訪問用戶輸入法、照片等權限,從而盜取用戶私鑰。相對於 IOS 用戶而言,安卓用戶遭遇到的木馬病毒攻擊更多。這裡簡單分享兩個案例:
案例一,用戶反饋錢包資產被盜,經過我們團隊與用戶溝通排查發現:是由於他此前通過谷歌搜索,下載並安裝了被偽裝的某數據平臺軟體,此軟體是木馬程式。但由於用戶在搜索該平臺軟體時,其連結出現在谷歌搜索的TOP5,導致用戶誤以為是官方軟體。事實上,很多用戶對谷歌提供的連結並不進行辨別,所以很容易通過這種方式遭遇到木馬攻擊,我們建議用戶通過防火牆、殺毒軟體、以及 Hosts 配置等多方面進行日常安全防護。
案例二,用戶反饋在投資某個 DeFi 項目時,發生了錢包資產被盜的情況。但通過我們的分析排查發現:該 DeFi 項目本身並不存在問題,用戶 B 錢包資產被盜是由於其在 Twitter 上對該項目評論時,被冒充該 DeFi 項目的官方客服盯上,經該假冒客服的引導,點擊並進入該虛假連結輸入了助記詞,從而導致錢包資產被盜。
由此可見,詐騙者的手段並不高明,但是需要用戶提高辨別意識,任何情況都不能輕易洩漏自己的私鑰。此外,我們錢包已針對該惡意域名進行了安全風險提示。
_
Q2:是否存在最佳的私鑰保管方法?目前有哪些替代方案可以減少對私鑰的依賴?
慢霧安全團隊:私鑰或者助記詞其實是一個單點故障問題,一旦被盜或者丟失就很難挽回。目前,比如安全多方計算 MPC、社交認證技術、Seedless/Keyless、預執行和零知識證明技術等等新的技術,正在幫助用戶減少對私鑰的依賴。
以 MPC 為例,第一,MPC技術是指,所有參與方為了完成一項任務而執行復雜的聯合計算,而他們的數據保持私有和安全,不與其他參與方共享。第二, MPC 錢包通俗來講是,利用 MPC 技術,將一個私鑰安全打碎成多片,由多方共同管理;或者乾脆就是多方共同生成一個虛擬的密鑰,可能後者的情形更為普遍,因為這時候沒有人曾經見過完整的私鑰。總之,MPC 的核心思路為分散控制權以達到分散風險或提高備災的目的,有效避免了單點故障等安全問題。
注意,MPC 涉及到一個詞叫 Keyless ,可以理解為「無助記詞的」,或者也可以說成「無私鑰的」。但這個「無」並不是實際意義上的沒有密鑰,而是指不需要用戶備份助記詞或者私鑰、且感知不到它們的存在。所以關於Keyless 錢包,需要了解這 3 點:
1.創建 Keyless 錢包過程中,私鑰不會在任何時間、任何地點被創建或儲存。
2.在簽署事務時,不涉及私鑰,而且私鑰在任何時候都不會被重構。
3.Keyless 錢包不會在任何時候生成或保存完整的私鑰和種子短語。
OKX Web3 安全團隊:當前並不存在完美的私鑰保管方式。但是我們安全團隊推薦使用硬體錢包、手抄保存私鑰、設置多重簽名、分散儲存助記詞等方式來進行私鑰管理。比如,分散儲存助記詞是指,用戶可以將助記詞分成 2 組或者多組進行儲存,降低助記詞被盜的風險。再比如,設置多重簽名是指,用戶可以選定信任的人,共同簽名來決定交易的安全性。
當然,為保障用戶錢包私鑰安全,OKX Web3 錢包整套底層是不觸網的,用戶助記詞和私鑰相關資訊,全部加密保存在用戶的設備本地,而且相關 SDK 也是開源的,經過了技術社群廣泛的驗證,更加的公開透明。此外,OKX Web3 錢包也通過與慢霧等知名的安全機構進行合作,進行了嚴格的安全審計。
除此之外,為了更好地保護我們的用戶,針對私鑰管理的部分,OKX Web3 安全團隊正在提供並規劃更強大的安全能力,正在持續迭代升級中,在這裡簡單分享一下:
1. 雙因子加密。當前,大部分錢包通常會採用密碼加密助記詞的方式,將加密後的內容保存在本地,但如果用戶中了木馬病毒,該木馬則會掃描加密後的內容,並對用戶輸入的密碼進行監聽,如果一旦被詐騙者監聽到,則可以解密加密的內容,從而獲取到用戶的助記詞。未來,OKX Web3 錢包將會採用雙因子的方式對助記詞進行加密,即使詐騙者通過木馬拿到用戶的密碼,也無法解開加密的內容。
2. 私鑰複製安全。大部分木馬會通過用戶在複製私鑰的時候盜取用戶剪貼板中的資訊,從而導致用戶私鑰洩漏。我們計劃通過增加用戶私鑰複製過程的安全性,比如複製部分私鑰、及時清除剪貼板資訊等方式或者功能,來幫助用戶降低私鑰資訊被盜風險等等。
_
Q3:由私鑰被盜切入,當前常見釣魚方式有什麼?
慢霧安全團隊:據我們的觀察,釣魚活動每個月都在逐步增長。
第一,當前錢包盜賊(Wallet Drainers)構成了當前釣魚活動的主要威脅,持續以各種形式攻擊普通用戶。
錢包盜賊(Wallet Drainers)是一種與加密貨幣相關的惡意軟體,這些軟體部署在釣魚網站上,誘騙用戶簽署惡意交易,從而竊取用戶錢包資產。比如,目前比較活躍的錢包盜賊(Wallet Drainers)有:
1. 通過社會工程學,獲取 Discord Token 並進行釣魚的 Pink Drainer。社會工程學通俗理解就是,以交流的方式套取用戶的私密資訊。
2. 還有 Angel Drainer,會對域名服務提供商進行社會工程學攻擊。在獲取了域名帳戶相關權限後,Angel Drainer 會修改 DNS 解析指向,並將用戶重定向到虛假網站等等。
第二,目前最常見的還是盲簽釣魚,盲簽的意思就是說用戶在和一個項目進行交互的時候不知道要簽要授權的東西是什麼內容,就稀裡糊塗的點了確認,然後就導致了資金被盜。關於盲簽釣魚,我們舉幾個例子:
案例1:比如 eth_sign。eth_sign 是一種開放式簽名方法,它允許對任意 Hash 進行簽名,也就是說它可以被用來對交易或任何數據進行簽名,而一般沒有技術基礎的用戶想要看懂簽名的內容是比較困難的,這裡就會存在一定的釣魚風險。好在現在越來越多的錢包已經開始對這種簽名進行安全提醒,一定程度上可以避免一些資損風險。
案例2:permit 簽名釣魚。我們都知道在 ERC20 幣種的交易中,用戶可以調用 approve 函數進行授權,但是 permit 函數允許用戶在鏈下生成簽名再授權給指定用戶使用一定數量額度的 token,攻擊者利用 permit 方法進行釣魚,當受害者訪問釣魚網站的時候,攻擊者通過網站讓用戶簽署 permit 授權,用戶簽署後攻擊者可以拿到簽名後的數據,攻擊者調用 token 合約的 permit 函數並傳入簽名數據然後廣播到鏈上來獲得 token 的授權額度,進而盜取用戶的 token。
案例3:隱蔽的 create2 手法。create2 允許開發者在將合約部署到以太坊網路之前預測合約的地址。基於create2,攻擊者就可以為每個惡意簽名生成臨時的新地址。欺騙用戶授予權限簽名後,攻擊者就可以在這個地址創建合約然後轉移用戶的資產。因為是空白地址,所以這些地址可以繞過一些釣魚外掛程式和安全公司的監控警報,所以隱蔽性很強,用戶很容易中招。
總之,對於釣魚網站,用戶可以在交互之前對項目的官網進行鑑別,並且留意交互過程中是否有惡意簽名請求,並應該警惕提交助記詞或私鑰的行為,切記不在任何地方洩漏助記詞或私鑰。
OKX Web3 安全團隊:我們對常見的釣魚方式進行了研究,並在產品側提供了多維度的安全防護。就目前用戶遇到的最主要的幾類釣魚方式簡單分享:
第一類,虛假空投類。駭客一般會針對受害者地址生成首尾相似的地址,並對用戶進行小額轉帳、0U 轉帳,或者假代幣轉帳的空投,該類交易會展示在用戶的交易歷史中,如果用戶不小心複製貼上錯地址,則會造成資產損失。針對該類攻擊,OKX Web3 錢包能夠識別其歷史交易並打成風險標,同時在用戶向其地址轉帳的時候,會進行安全風險提示。
第二類,誘導簽名類。通常駭客會在知名項目的Twitter、Discord、TG 等公眾地方進行評論、併發布虛假 DeFi 項目網址或者領取空投的網址,誘導用戶進行點擊,從而盜取用戶資產。除了慢霧提到的 eth_sign、permit、create2 等簽名類釣魚,還有一些就是:
方式1:直接轉帳盜取主鏈代幣。駭客往往會給惡意合約函數起名為 Claim,SeurityUpdate 等具有誘導性名字,而實際函數邏輯為空,從而只轉移用戶主鏈代幣。當前 OKX Web3 錢包已經上線預執行的功能,能夠顯示交易上鍊後的資產變動及授權變動,對用戶進行安全風險提示。
方式2:鏈上授權。駭客通常會誘導用戶簽署 approve / increaseAllowance / decreaseAllowance /setApprovalForAll 交易,該交易會允許駭客指定地址轉移用戶的代幣資產,並在用戶簽署後實時監控用戶的帳號,一旦有對應的資產轉入立馬轉走。針對釣魚者的安全防護過程是一種對抗,也是一個持續升級的過程。
儘管大部分的錢包會對駭客的授權地址進行安全風險檢測,但是攻擊者的攻擊方式也在升級,比如利用 create2 的特性,攻擊者會預先計算好新地址,因新地址並不在安全黑地址庫中,所以可以輕意的繞過安全檢測。攻擊者會等到有魚上鉤後,再去該地址部署合約,並將用戶的資金轉走。比如,近期我們也發現不少攻擊者,會使用戶授權給 uniswap.multicall 合約,因該合約是一個正規項目的合約,也可以繞過安全產品的檢測。
方式3:權限變更:包括 tron 權限變更,和 solana 權限變更等。一是,在 tron 權限變更中,多簽是 tron 鏈的一個特性,在很多釣魚網站中,釣魚者會將更改帳號權限的交易,偽裝成轉帳的交易,如果用戶不小心簽署了這筆交易,則用戶的帳號會變成一個多簽帳號,用戶對其帳號失去了控制權限。二是,在solana權限變更中,釣魚者會通過 SetAuthority 來修改用戶代幣的 ATA 帳號的 Owner, 一旦用戶簽署了這筆交易,該 ata 帳號的 owner 就會變成釣魚者,從而使得釣魚者拿到了用戶的資產。
其他方式:另外,由於協議本身的設計機制等問題,也很容易被釣魚者利用。基於以太坊的中間件協議 EigenLayer 的 queueWithdrawal 調用,允許指定其他地址作為 withdrawer,用戶被釣魚簽署了該交易。七天後,指定地址通過 completeQueuedWithdrawal 獲得用戶的質押資產。
第三類,上傳助記詞。攻擊者通常會提供偽裝的空投項目、或假打新的工具,誘導用戶上傳私鑰或助記詞,具體案例見如上。此外,有時也會偽裝成擴充錢包彈窗,來誘導用戶上傳助記詞。
_
Q4:熱錢包和冷錢包攻擊方式的差異化
OKX Web3 安全團隊:熱錢包跟冷錢包的區別在於私鑰的儲存方式不同,冷錢包的私鑰一般是離線儲存,而熱錢包通常儲存在有網路的環境裡。所以,針對冷錢包跟熱錢包的安全風險會有所不同。熱錢包安全風險上面已經非常全面,不再展開。
冷錢包的安全風險主要包括:
第一,社會工程及物理攻擊風險、和交易過程風險。關於社會工程及物理攻擊風險是指,由於冷錢包通常離線儲存,則可能存在被攻擊者以社會工程手段,偽裝成親人或朋友用以訪問冷錢包的權限。
第二,作為一個物理設備,可能被損壞或丟失。關於交易過程風險是指, 在交易過程中,冷錢包同樣也會遇到前面提到的各類空投,誘導簽名等場景的攻擊方式。
_
Q5:就像開篇所述「贈送高價值的錢包私鑰」,還有哪些另類的釣魚陷阱?
慢霧安全團隊:是的,「故意贈送高價值的錢包私鑰」是非常經典的案例,在多年前就已經出現,但直到現在也還是會有人上當受騙。這種騙局其實就是騙子故意洩露私鑰助記詞,你將私鑰助記詞導入錢包後,攻擊者時刻監控你的錢包,一旦你轉入 ETH,就立刻給你轉走。此類手法就是利用了用戶貪小便宜的心理,導入的人越多,手續費越高,損失就越多。
其次,有部分用戶會認為「我沒有什麼值得攻擊的」,這種防禦低下的心態會讓用戶變得容易受攻擊。任何人的資訊(如電子郵件,密碼,銀行資訊等)對攻擊者來說都是有價值的。甚至還有用戶認為只要不點擊垃圾郵件中的連結,就不會受到威脅,但有些釣魚郵件可能會通過圖片或者附件來植入惡意軟體。
最後,對於「安全」我們需要有個客觀的認識,那就是沒有絕對的安全。何況網路釣魚攻擊的方式演變很多,發展也很快速,大家都應該不斷學習,提高自我安全意識才是最可靠的。
OKX Web3 安全團隊:防範第三方釣魚陷阱確實是一個複雜的問題,因為釣魚者往往利用了人們的心理弱點和常見的安全疏忽。很多人平時都很謹慎,但往往遇到忽如其來的「大餡餅」時,往往放鬆了警惕,放大了自己的貪婪特性,從而導致上當受騙。在這個過程中,人性的弱點會大於技術,就算有更多的安全手段,用戶也會短期忽略,事後回想起來,才會發現自己早已上當受騙。我們要清楚,「天下沒有免費的午餐」,時刻注意提高警惕,注意安全風險,尤其是在區塊鏈這個黑暗森林裡面。
_
Q6:對用戶提高私鑰安全的建議
慢霧安全團隊:回答這個問題之前,我們先梳理下一般攻擊是怎樣去盜取用戶的資產的。攻擊者一般是通過如下兩種方式來盜取用戶的資產的:
方式一:騙取用戶對盜取資產的惡意交易數據進行簽名,如:欺騙用戶將資產授權或轉移給攻擊者
方式二:騙取用戶在惡意網站或者 App 上輸入錢包的助記詞,如:欺騙並誘騙用戶在虛假的錢包頁面中輸入錢包的助記詞
知道了攻擊者是如何盜取錢包資產後,我們就要對可能的風險進行防範:
防範一:儘可能做到所見即所簽。都說錢包是進入 Web3 世界的鑰匙,用戶交互最重要的就是拒絕盲簽,在簽名之前要識別簽名的數據,知道自己簽的交易是做什麼的,否則就放棄簽名。
防範二:雞蛋不要放在同一個籃子裡。通過對不同資產以及使用頻率的情況可以對錢包進行分層級管理,讓資產的風險處於可控。參與空投等活動的錢包由於使用頻率較高,建議存放小額資產。大額資產一般不會頻繁動用,建議放在冷錢包中且使用的時候要確保網路環境,物理環境是安全的。有能力的話儘可能地使用硬體錢包,由於硬體錢包一般不能直接導出助記詞或私鑰,所以可以提高助記詞私鑰被盜門檻。
防範三:各種釣魚手法和事件層出不窮,用戶要學會自行識別各種釣魚手法,提高安全意識,進行自我教育避免被騙,掌握自救能力。
防範四:不急不貪、多方驗證。此外,用戶如果想要了解更全面的資產管理方案,可以參考慢霧出品的《加密資產安全解決方案》,瞭解更多的安全意識及自我教育,則可以參考《區塊鏈黑暗森林自救手冊》。
OKX Web3 安全團隊:私鑰作為訪問和控制錢包加密資產的唯一憑證,保護錢包私鑰安全至關重要。
防範一:瞭解你的 DApp。在進行鏈上 DeFi 投資的時候,一定要對使用的 DApp 進行全方面的瞭解,以防止訪問了虛假 DApp 造成資產損失。儘管我們 OKX Web3 錢包針對 DApp 進行了多種策略的風險檢測和提示,但攻擊者會持續更新攻擊手法,並繞過安全風險檢測。用戶在投資的時候,一定要擦亮眼睛。
防範二:瞭解你的簽名。用戶在進行鏈上交易簽名的時候,一定要對交易進行確認,確保瞭解交易的細節,對於看不懂的交易一定要謹慎,不要盲目簽名。OKX Web3 錢包會對鏈上交易以及離線簽名進行解析,並模擬執行,展示資產變動及授權變動的結果。用戶可以在交易前,重點關注該結果看是否符合預期。
防範三:瞭解你下載的軟體。下載輔助交易及投資軟體時,要確保是從官方平臺上下載的,下載後要及時使用殺毒軟體掃描。如果下載惡意軟體,木馬會通過截圖監控剪貼板、內存掃描、上傳緩存文件等手段,來獲取用戶的助記詞或私鑰。
防範四:提升安全意識,妥善保管私鑰。儘可能不要複製助記詞,私鑰等重要資訊,不要截圖,不要將該類資訊保存到第三方的雲端平臺中。
防範五:強密碼&多簽,在使用密碼的過程中,用戶應該儘可能增加密碼的複雜度,防止駭客在拿到私鑰加密文件後,對其進行爆破。在交易過程中,如果有多簽機制,一定要採用多簽,這樣,如果一方的助記詞或私鑰洩漏,也不會影響整體的交易。
📍相關報導📍
小心 Github 上的開源 Bot!慢霧余弦:某免費開源機器人藏後門、竊取 Solana 私鑰