加密錢包安全審計清單 | CertiK:你的錢包是否安全?

近一個月,比特幣幣值從1.8萬美元到2萬美元,漲勢如虹。幣圈傳出訊息:聖誕節前,比特幣必將大漲一波。

昨日晚間,btc就十分爭氣的衝上了23000的高位。


在比特幣漲勢帶領下,幣圈陷入瘋狂,加密數字行情炙手可熱,以太坊、瑞波幣、萊特幣等加密貨幣同樣漲勢喜人。

從昨日晚間到今日,幣圈上演了一幕幕大型“真香”現場,市場的狂熱投資者陸續進場“搏鬥”。

相比於2017年的比特幣狂歡,這次的漲勢看起來可能更加的穩定。

2020年對於所有人來說都是特殊的一年,疫情爆發,幣圈動盪。去中心化金融defi的出現和發展熱潮使得區塊鏈開始再次受到人們的關注。

隨著新區塊鏈專案的推出,超過兩千種的加密資產,越來越多的加密錢包進入市場,越來越多的使用者也開始湧入這個領域。
當加密領域擁有的資產越來越龐大,來自於安全隱患方面的危機也顯露無遺。

比特幣大漲,你的錢包是否還安全?

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

去年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的情況很少見,但如果有的話,應檢查:

  1.  cookie屬性
  2.  跨站請求偽造(csrf)
  3.  跨域資源共享(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)來儲存重要數字貨幣。除此之外,需要聘請專業的安全團隊進行網路層面的測試,並透過遠端模擬攻擊來尋找漏洞。

歡迎搜尋微信【certikchina】關注certik官方微信公眾號,點選公眾號底部對話方塊,留言免費獲取諮詢及報價!


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读