安全特刊 01|OKX Web3 & 慢霧:身經“百詐”的經驗分享
某一天,突然有人送你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:比如ethsign。ethsign是一種開放式簽名方法,它允許對任意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、SecurityUpdate等具有誘導性名字,而實際函數邏輯為空,從而只轉移用戶主鏈代幣。當前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錢包會對鏈上交易以及離線簽名進行解析,並模擬執行,展示資產變動及授權變動的結果。用戶可以在交易前,重點關注該結果看是否符合預期。
防範三:了解你下載的軟件。下載輔助交易及投資軟件時,要確保是從官方平台上下載的,下載後要及時使用殺毒軟件掃描。如果下載惡意軟件,木馬會通過截圖監控剪貼板、內存掃描、上傳緩存文件等手段,來獲取用戶的助記詞或私鑰。
防範四:提升安全意識,妥善保管私鑰。盡可能不要複製助記詞,私鑰等重要信息,不要截圖,不要將該類信息保存到第三方的雲平台中。
防範五:強密碼&多簽,在使用密碼的過程中,用戶應該盡可能增加密碼的複雜度,防止黑客在拿到私鑰加密文件後,對其進行爆破。在交易過程中,如果有多簽機制,一定要採用多簽,這樣,如果一方的助記詞或私鑰泄漏,也不會影響整體的交易。