當前位置:首頁 > 知識 >

區塊鏈錢包安全嗎?

近年來,數字錢包安全事件頻發。

2019年11月19日,Ars Technica報道稱兩個加密貨幣錢包數據遭泄露,220萬賬戶信息被盜。安全研究員Troy Hunt證實,被盜數據來自加密貨幣錢包GateHub和RuneScape機器人提供商EpicBot的賬戶。

這已經不是Gatehub第一次遭遇數據泄露了。據報道,去年6月,黑客入侵了大約100 個XRP Ledger錢包,導致近1000萬美元的資金被盜。

2019年3月29日,Bithumb失竊事件鬧得沸沸揚揚。據猜測,這次事件起因為Bithumb擁有的g4ydomrxhege帳戶的私鑰被黑客盜取。

隨即,黑客將竊取的資金分散到各個交易所,包括火幣,HitBTC,WB和EXmo。根據非官方數據和用戶估計,Bithumb遭受的損失高達300萬個EOS幣(約1300萬美元)和2000萬個XRP幣(約600萬美元)以上。

由於數字貨幣的匿名性及去中心化,導致被盜資產在一定程度上難以追回。因此,錢包的安全性至關重要。

區塊鏈錢包安全嗎?

2020年8月9日,CertiK的安全工程師在DEF CON區塊鏈安全大會上發表了演講主題為:Exploit Insecure Crypto Wallet(加密錢包漏洞利用與分析)的主題報告,分享了對於加密錢包安全的見解。

加密錢包是一種幫助用戶管理帳戶和簡化交易過程的應用程序。

有些區塊鏈項目發布加密錢包應用程序來支持本鏈的發展——比如用於CertiK Chain的Deepwallet。

此外,還有像Shapeshift這樣的公司,其構建了支持不同區塊鏈協議的錢包。

從安全的角度來看,加密錢包最需重視的問題是防止攻擊者竊取用戶錢包的助記詞和私鑰等信息。

近一年來,CertiK技術團隊對多個加密錢包進行了測試和研究,並在此分享針對基於軟件不同類型的加密錢包進行安全評估的方法及流程。

加密錢包基礎審計清單

要對一個應用程序進行評估,首先需要了解其工作原理→代碼實現是否遵循最佳安全標準→如何對安全性不足的部分進行修正及提高。

CertiK技術團隊針對加密錢包製作了一個基礎審計清單,這份清單反映了所有形式的加密錢包應用(手機、web、擴展、桌麵),尤其是手機和web錢包是如何生產和儲存用戶私鑰的。

應用程序如何生成私鑰?

應用程序如何以及在何處存儲原始信息和私鑰?

錢包連接到的是否是值得信任的區塊鏈節點?

應用程序允許用戶配置自定義區塊鏈節點嗎?如果允許,惡意區塊鏈節點會對應用程序造成什麼影響?

應用程序是否連接了中心化服務器?如果是,客戶端應用會向服務器發送哪些信息?

應用程序是否要求用戶設置一個安全性高的密碼?

當用戶試圖訪問敏感信息或轉賬時,應用程序是否要求二次驗證?

應用程序是否使用了存在漏洞且可被攻擊的第三方庫?

有沒有秘密(比如:API密鑰,AWS憑證)在源代碼存儲庫中泄漏?

有沒有明顯的不良代碼實現(例如對密碼學的錯誤理解)在程序源代碼中出現?

應用服務器是否強製TLS連接?

手機錢包

相比於筆記本電腦,手機等移動設備更容易丟失或被盜。

在分析針對移動設備的威脅時,必須考慮攻擊者可以直接訪問用戶設備的情況。

在評估過程中,如果攻擊者獲得訪問用戶設備的權限,或者用戶設備感染惡意軟件,我們需要設法識別導致賬戶和密碼資產受損的潛在問題。

除了基礎清單以外,以下是在評估手機錢包時要增加檢查的審計類目:

應用程序是否警告用戶不要對敏感數據進行截屏——在顯示敏感數據時,安卓應用是否會阻止用戶截屏?iOS應用是否警告用戶不要對敏感數據進行截屏?

區塊鏈錢包安全嗎?

應用程序是否在後台截圖中泄漏敏感信息?

應用程序是否檢測設備是否越獄/root?

應用程序是否鎖定後台服務器的證書?

應用程序是否在程序的log中記錄了敏感信息?

應用程序是否包含配置錯誤的deeplink和intent,它們可被利用嗎?

應用程序包是否混淆代碼?

應用程序是否實現了反調試功能?

應用程序是否檢查應用程序重新打包?

(iOS)儲存在iOS Keychain中的數據是否具有足夠安全的屬性?

應用程序是否受到密鑰鏈數據持久性的影響?

當用戶輸入敏感信息時,應用程序是否禁用自定義鍵盤?

應用程序是否安全使用“webview”來加載外部網站?

Web錢包

對於一個完全去中心化的錢包來說,Web應用程序逐漸成為不太受歡迎的選擇。MyCrypto不允許用戶在web應用程序中使用密鑰庫/助記詞/私鑰訪問錢包,MyEtherWallet也同樣建議用戶不要這樣做。

與在其他三種平台上運行的錢包相比,以web應用程序的形式對錢包進行釣魚攻擊相對來說更容易;如果攻擊者入侵了web服務器,他可以通過向web頁麵注入惡意的JavaScript,輕鬆竊取用戶的錢包信息。

然而,一個安全構建並經過徹底測試的web錢包依舊是用戶管理其加密資產的不二之選。

除了上麵常規的基礎審計類目之外,我們在評估客戶端web錢包時,還列出了以下需要審計的類目列表:

應用程序存在跨站點腳本XSS漏洞嗎?

應用程序存在點擊劫持漏洞嗎?

應用程序有沒有有效的Content Security Policy?

應用程序存在開放式重定向漏洞嗎?

應用程序存在HTML注入漏洞嗎?

現在網頁錢包使用cookie的情況很少見,但如果有的話,應檢查:

Cookie屬性

跨站請求偽造(CSRF)

跨域資源共享(CORS)配置錯誤

該應用程序是否包含除基本錢包功能之外的其他功能? 這些功能存在可被利用的漏洞嗎?

OWASP Top 10中未在上文提到的漏洞。

擴展錢包

Metamask是最有名和最常用的加密錢包之一,它以瀏覽器擴展的形式出現。

擴展錢包在內部的工作方式與web應用程序非常相似。

不同之處在於它包含被稱為content script和background script的獨特組件。

網站通過content script和background script傳遞事件或消息來與擴展頁麵進行交流。

在擴展錢包評估期間,最重要的事情之一就是測試一個惡意網站是否可以在未經用戶同意的情況下讀取或寫入屬於擴展錢包的數據。

除了基礎清單以外,以下是在評估擴展錢包時要增加檢查的審計類目:

擴展要求了哪些權限?

擴展應用如何決定哪個網站允許與擴展錢包進行交流?

擴展錢包如何與web頁麵交互?

惡意網站是否可以通過擴展中的漏洞來攻擊擴展本身或瀏覽器中其他的頁麵?

惡意網站是否可以在未經用戶同意的情況下讀取或修改屬於擴展的數據?

擴展錢包存在點擊劫持漏洞嗎?

擴展錢包(通常是background script)在處理消息之前是否已檢查消息來源?

應用程序是否實現了有效的內容安全策略?

Electron桌麵錢包

在編寫了web應用程序的代碼之後,為什麼不用這些代碼來建造一個Electron中桌麵應用程序呢?

在以往測試過的桌麵錢包中,大約80%的桌麵錢包是基於Electron框架的。在測試基於Electron的桌麵應用程序時,不僅要尋找web應用程序中可能存在的漏洞,還要檢查Electron配置是否安全。

CertiK曾針對Electron的桌麵應用程序漏洞進行了分析,你可以點擊訪問此文章了解詳情。

以下是基於Electron的桌麵錢包受評估時要增加檢查的審計類目:

應用程序使用什麼版本的Electron?

應用程序是否加載遠程內容?

應用程序是否禁用“nodeIntegration”和“enableRemoteModule”?

應用程序是否啟用了“contextisolation”, “sandbox” and “webSecurity”選項?

應用程序是否允許用戶在同一窗口中從當前錢包頁麵跳轉到任意的外部頁麵?

應用程序是否實現了有效的內容安全策略?

preload script是否包含可能被濫用的代碼?

應用程序是否將用戶輸入直接傳遞到危險函數中(如“openExternal”)?

應用程序會使不安全的自定義協議嗎?

服務器端漏洞檢查列表

在我們測試過的加密錢包應用程序中,有一半以上是沒有中心化服務器的,他們直接與區塊鏈節點相連。

CertiK技術團隊認為這是減少攻擊麵和保護用戶隱私的方法。

但是,如果應用程序希望為客戶提供除了帳戶管理和令牌傳輸之外的更多功能,那麼該應用程序可能需要一個帶有數據庫和服務器端代碼的中心化服務器。

服務器端組件要測試的項目高度依賴於應用程序特性。

根據在研究以及與客戶接觸中發現的服務器端漏洞,我們編寫了下文的漏洞檢查表。當然,它並不包含所有可能產生的服務器端漏洞。

認證和授權

KYC及其有效性

競賽條件

雲端服務器配置錯誤

Web服務器配置錯誤

不安全的直接對象引用(IDOR)

服務端請求偽造(SSRF)

不安全的文件上傳

任何類型的注入(SQL,命令,template)漏洞

任意文件讀/寫

業務邏輯錯誤

速率限製

拒絕服務

信息泄漏

總結

隨著技術的發展,黑客們實施的欺詐和攻擊手段也越來越多樣化。

CertiK安全技術團隊希望通過對加密錢包安全隱患的分享讓用戶更清楚的認識和了解數字貨幣錢包的安全性問題、提高警惕。

現階段,許多開發團隊對於安全的問題重視程度遠遠低於對於業務的重視程度,對自身的錢包產品並未做到足夠的安全防護。通過分享加密錢包的安全審計類目,CertiK期望加密錢包項目方對於產品的安全標準擁有清晰的認知,從而促進產品安全升級,共同保護用戶資產的安全性。

數字貨幣攻擊是多技術維度的綜合攻擊,需要考慮到在數字貨幣管理流通過程中所有涉及到的應用安全,包括電腦硬件、區塊鏈軟件,錢包等區塊鏈服務軟件,智能合約等。

加密錢包需要重視對於潛在攻擊方式的檢測和監視,避免多次受到同一方式的攻擊,並且加強數字貨幣賬戶安全保護方法,使用物理加密的離線冷存儲(cold storage)來保存重要數字貨幣。除此之外,需要聘請專業的安全團隊進行網絡層麵的測試,並通過遠程模擬攻擊來尋找漏洞。

猜你喜歡

微信二維碼

微信二維碼