作者:360 信息安全部
來源:FreeBuf.COM
區塊鏈技術的迅速發展,使得數字貨幣漸漸走入的大眾的視線,在2017年底,這股熱潮達到頂峰,直接攪動著金融市場與科技市場,大量的數字貨幣交易流水催生了數字錢包開發行業, 根據錢包使用時的聯網狀態分為熱錢包和冷錢包。
隨著各種數字貨幣的誕生,為了方便用戶記錄地址和私鑰,官方會同時發布全節點錢包,例如Bitcoin Core,Parity錢包 ,同時也有一些第三方公司為了進一步提高用戶體驗,他們相繼開發了如比特派,imToken,AToken,幣信,幣包等錢包APP,它們並不同步所有的區塊數據,因此稱其為輕錢包,這兩種數字錢包都屬於熱錢包。冷錢包也稱為硬體錢包,常見的冷錢包有庫神錢包,Ledger Nano S,Trezor等,由於私鑰不接觸網絡,相對安全性也較高。不過由於業務場景的快速迭代以及推廣需求,無論熱錢包還是冷錢包都會有一些的安全隱患會被忽視。
近期,我們對應用市場上流通的熱錢包以及冷錢包進行了相關安全審核評估,發現了很多安全問題,360信息安全部依靠通過對各類攻擊威脅的深入分析及多年的安全大數據積累,旨在區塊鏈時代為數字貨幣錢包廠商提供安全性建議,保障廠商與用戶的安全,因此發布數字貨幣錢包安全白皮書為其作為參考。
近期360安全團隊發現了國外某知名錢包APP的一個錢包不正確加密存儲漏洞,其錢包APP在第一次運行的時候,默認為用戶創建一個新錢包並將錢包文件未加密存儲在系統本地,攻擊者可以讀取存儲的錢包文件,通過對錢包應用逆向分析等技術手段,還原該錢包的算法邏輯,並由此直接恢復出用戶的助記詞以及根密鑰等敏感數據。
我們對目前熱門的近二十款錢包APP進行了安全分析,從應用運行開始,創建助記詞、備份數據、查看貨幣價值到進行交易,如下圖我們的模擬攻擊流程。
圖:1-1 模擬黑客攻擊流程
由於數字貨幣交易的一個安全重點就是運行環境,Android是一個非常龐大而且複雜的系統,APP的運行環境,針對數字錢包本身的功能設計,都將存在很大的安全隱患,如下圖所示,我們將發現的安全風險較大的點進行歸納說明。
圖:1-2 Top5的安全隱患
我們可以看到,在無root下的截屏、錄屏可以將我們輸入的助記詞,交易密碼等信息進行得到;利用Janus籤名問題對APP進行偽造,將軟體植入惡意代碼,可以修改轉帳人地址等操作,這些都會令用戶的錢財受到損失。
區塊鏈在造就無數財富神話的同時,伴隨著而來的,是一系列已經發生的區塊鏈攻擊事件。2017年11月,以太坊錢包Parity被爆漏洞,導致93萬個以太坊被凍結,價值2.8億美金。無獨有偶,2018年1月,日本最大比特幣交易所 Coincheck被黑,價值5.3億美金的NEM被盜。可見,力圖去中心化的區塊鏈金融,並不符合大眾腦海中科技安全的第一印象。我們將錢包APP分為APP端與服務端,分別進行說明。
基於我們對當前數字錢包APP的安全現狀分析,我們將發現的安全隱患進行歸納總結,如下文。
圖:2-1 APP端安全審核覆蓋範圍
1.1. 運行環境安全檢測
1.1.1. 手機系統漏洞掃描
錢包APP未對於手機當前系統版本進行檢測並做出相關,將導致已知漏洞對手機系統的損害,使得錢包APP容易被黑客控制權限,我們將掃描相關嚴重漏洞,判斷當前手機系統安全性。
1.1.2. Root環境檢測
錢包APP未對於手機環境進行root檢測,會導致APP運行在已root的手機上,使得APP相關核心執行過程被逆向調試分析,我們將會掃描root常見手段,來判定設備是否已被root。
1.1.3. APP完整性檢測
錢包APP未做完整性檢測,會導致黑客可以對APP重新打包植入惡意代碼,竊取用戶助記詞,私鑰等敏感信息,我們將進行模擬攻擊,對APP進行重打包,修改驗證機制來判定是否可利用此漏洞。
1.1.4. 網絡代理檢測
APP在運行中,未檢測是否使用相關代理,將會導致協議交互過程中網絡數據被黑客監聽,我們將進行模擬黑客攻擊,確認是否安全。
1.1.5. 網絡安全檢測
錢包APP未檢測驗證當前使用網絡的DNS是否安全,將會會存在被劫持的可能,導致一些網絡回傳的數據被黑客惡意修改,我們將通過技術手段模擬黑客攻擊,來確認是否安全。
1.2. 協議交互安全檢測
1.2.1. 新用戶註冊安全
在安裝完APP後,新用戶需要進行註冊,才能使用錢包APP,在這個註冊過程中,如將用戶敏感信息上傳至伺服器,會存在很大安全風險,比如傳輸過程或伺服器上被黑客攻擊獲取註冊信息,我們將對網絡傳輸數據進行逆向分析,查看是否存在隱患。
1.2.2. 創建交易安全
在用戶創建交易時,交易雙方的帳號如果沒有二次驗證,則容易導致收款帳戶信息被惡意替換後無法知道,導致用戶錢財損失問題,我們將會使用技術手段進行測試,驗證錢包APP是否存在此風險。
1.2.3. 交易籤名安全
在交易創建後,發送正式籤名交易過程,如果相關協議設計不嚴格,會導致用戶財產受到損失,我們會對交易過程邏輯代碼進行逆向分析,查看是否存在相關安全隱患。
1.2.4. 交易完畢確認
交易完畢後,如果未對交易內容進行確認,會導致使用戶清晰了解此次交易過程的記錄,在APP上無法記錄相關信息,無法查詢個人交易記錄,我們會對此過程進行分析,查看是否存在相關安全隱患。
1.2.5. 餘額查詢安全
錢包APP在進行餘額查詢時,無論是從貨幣官方伺服器,還是錢包廠商伺服器進行的查詢,應嚴格對其返回給客戶端的數據進行完整性驗證,否則容意導致用戶APP數據接收虛假、異常信息,我們會對此流程進行確認,查看是否存在安全隱患。
1.3 數據存儲安全檢測
1.3.1 助記詞創建安全
新用戶使用錢包APP時,會生成助記詞要求用戶記錄,此過程是否有檢測截屏,錄屏等操作,如未進行安全檢測,將會導致錢包核心敏感信息洩露,用戶錢財損失。
1.3.2. 助記詞存儲安全
助記詞生成後,如果會在本地保存,在本地保存時是明文存儲,將會導致黑客進行攻擊獲取用戶助記詞信息。如果是加密存儲,加密算法安全性不高,將會導致黑客可以逆向分析算法,將加密數據進行恢復明文,導致用戶助記詞信息洩露。我們會模擬黑客攻擊,檢測相關流程是否存在安全隱患。
1.3.3. 私鑰生成安全
錢包APP在新用戶私鑰生成過程,相關算法如果可被逆向分析,會導致黑客模擬生成的私鑰,使用戶的錢財受到損失,我們將會模擬黑客攻擊,逆向分析相關算法,確認是否存在此安全隱患。
1.3.4. 私鑰儲存安全
私鑰生成後,如果會在本地保存,在本地保存時是明文存儲,將會導致黑客進行攻擊獲取用戶私鑰信息。如果是加密存儲,加密算法安全性不高,將會導致黑客可以逆向分析算法,將加密數據進行恢復明文,導致用戶私鑰信息洩露。我們會模擬黑客攻擊,檢測相關流程是否存在安全隱患。
1.3.5. 本地存儲數據敏感性檢測
在本地存儲數據時,是否會將敏感信息保存在本地,如果一些對用戶敏感的信息保存在本地,容易被攻擊者進行逆向分析,我們會對其進行逆向分析,查看本地是否存在敏感信息。
1.4. 功能設計安全檢測
1.4.1. 導入錢包功能安全
用戶使用導入錢包的功能,是會將之前用戶存儲在系統中的私鑰直接恢復,恢復過程如果被監控,相關功能設計不嚴格,會導致在此過程被黑客攻擊,我們會模擬黑客攻擊,進行相關驗證。
1.4.2. 交易密碼安全
交易密碼如果未檢測弱口令,將會導致黑客對密碼進行猜解,直接進行交易;交易密碼日字旁本地存儲,本地儲存加密不嚴格,則會導致黑客對其進行逆向分析,獲取到交易密碼,我們將模擬黑客攻擊,驗證此安全隱患是否存在。
1.4.3. 用戶輸入安全
用戶輸入數據,如果功能設計不嚴格,將會被黑客監聽竊取;如果採用第三方鍵盤進行,未對用戶輸入邏輯做校驗,容易被黑客監聽獲取敏感信息,我們將會模擬黑客攻擊,查看相關流程是否嚴格,驗證此安全隱患是否存在。
1.4.4. 轉帳地址安全檢測
錢包APP在輸入轉帳地址或掃描二維碼轉帳地址後,如果未檢測地址被篡改,保證轉帳地址完整,會導致用戶錢財受到損失,我們將會模擬黑客攻擊,查看相關流程是否存在安全隱患。
1.4.5. 助記詞,私鑰網絡儲存安全
助記詞和私鑰應當禁止通過網絡傳輸回APP廠商,防止伺服器被攻擊用戶數據與錢財被盜取,如果有相關回傳數據操作,容易導致用戶數據與錢財被盜。我們將逆向分析相關網絡協議,查看是否存在相關安全隱患。
1.4.6. https通信中的證書校驗
在數據網絡交互通信中,如果使用https,未對證書做嚴格的校驗,將會導致中間人劫持攻擊,黑客將數據替換,導致用戶在APP上收到虛假信息,我們將會模擬黑客攻擊,對此過程進行驗證,確認是否存在相關安全隱患。
服務端作為區塊鏈數字錢包的中心化對象,顯然已是黑客十分青睞的攻擊目標,安全是其健壯運行的核心基石。
基於我們對當前數字錢包服務端的安全現狀分析,我們將相關審計點進行歸納總結,並提供相關安全建議。
圖:2-2 錢包APP服務端安全審核覆蓋範圍
2.1. 域名DNS安全檢測
2.1.1. 域名註冊商安全檢測評估
對數字錢包所用域名註冊商,需進行評估,防止錢包域名被惡意社工篡改和攻擊。建議使用國內外排名靠前的域名註冊商。
2.1.2. 域名記錄安全檢測
對數字錢包接口所用域名及其解析記錄,增改進行審核,並定期複查,防止被CNAME/NS/SOA劫持,做好權限管理和日誌收集。數字錢包使用雲CDN時,合理配置相關參數,避免子域劫持,域名前置,Web緩存欺騙等安全問題,同時選用業界安全性較好的CDN服務提供商。
2.1.3. DNS 服務安全檢測
域名解析服務,錢包廠商自建的,做好上線前的審計和運行後的定期複查。使用第三方DNS解析服務的,建議一定要選用國內外大廠商,預防域名解析被惡意社工或利用漏洞篡改,或拒絕服務攻擊。合理配置DNS配置參數,預防偽造郵件,證書校驗,DNSSEC,高緯度攻擊BGP等安全問題。
2.1.4. TLD/gTLD安全檢測
建議使用org等頂級域名,不要選用小眾後綴域名,防止被惡意篡改和劫持上層記錄。如2017年6月,Matthew劫持io頂級域.
2.1.5. 全網多節點DNS解析監測
選用排名靠前的第三方服務,使用全球不同節點對DNS記錄進行解析,監控解析結果是否正常,是否被汙染篡改等。如遇大面積故障,協調多方及時應急響應。
2.1.6. 證書安全
數字錢包內置證書時,選用20年等時間較長的證書,避免APP升級迭代後的兼容問題。同時建議選擇國內外知名證書機構籤發的證書,避免信任鏈牽連問題。
2.2. 主機實例安全檢測
2.2.1. 口令安全
審計數字錢包所用服務口令強度,建議設置為強密碼,SSH類使用證書登陸,最好前置堡壘機。
2.2.2. 系統安全
數字錢包服務端系統,高危漏洞及時更新,系統和內核等加固配置,減輕未知的漏洞,預防被攻擊後的提權和橫向滲透等操作。
2.2.3. 訪問控制
數字錢包服務端在雲上時,雲安全組ACL是其第一道防線,嚴格限制出入站埠和ip的開放,避免高危和敏感服務暴露。同時,控制敏感服務出站流量。VPC是在雲中預配置出一個邏輯隔離的環境,不要選用經典網絡等各租戶互通的網絡環境,預防阿里雲租戶之前的經典網絡內網攻擊路線。數字錢包服務端系統,使用Iptables等保護系統相互隔離,控制資源僅可信域連接。
2.2.4. 日誌審計
搜集和保存數字錢包服務端各種日誌,便於服務狀態監控,故障排查,被滲透後的溯源追蹤等。日誌保存時間至少6個月以上。
2.2.5. 冗餘安全
對數字錢包核心系統進行冗餘配置,保證服務的高可用。定期進行系統快照,核心數據備份等。檢測數字錢包帳戶下EBS(區塊存儲),RDS(雲資料庫 ),AMI(主機鏡像)等所有快照和備份服務,嚴格保證其為私密權限,防止意外暴露。
2.2.6. 雲IAM授權檢測
如使用雲IAM,因為IAM是雲上對用戶權限,資源權限控制的一種服務,檢測數字錢包使用過程中的配置安全問題。妥善保管憑證,合理分配權限。
2.3. 服務端應用安全檢測
2.3.1. 代碼安全
數字錢包APP代碼和服務端代碼,上線前進行進行安全審核,檢查通過後,允許上線。每次改動代碼後,也要進行安全複查,同時定期進行黑灰盒掃描測試。另外對代碼進行嚴格控制,防止上傳到Github等第三方代碼託管平臺。
2.3.2. 服務應用安全
數字錢包服務端應用上線前,先進行安全加固,運行時保持低權限運行,同時定期監控,黑白盒掃描漏洞。
2.3.3. 環境隔離
數字錢包不同功能的服務,建議模塊化運行,保持相互獨立且隔離,防止越權訪問和讀取數據,減輕被攻擊後的橫向滲透。
2.3.4. 雲存儲
數字錢包如使用類似Amazon S3的對象存儲服務時,嚴格控制權限問題,防止未授權可讀寫造成一系列安全問題。
2018年,技術處於全球領先的硬體數字錢包製造商Ledger在完成7500萬美元的B輪融資後被爆出錢包設計存在缺陷,黑客可通過惡意軟體篡改錢包地址,並將數字貨幣轉給黑客。
硬體錢包目前也是使用趨勢,實際上是將密鑰保存在了硬體晶片當中,不過依然會存在很多安全風險,我們將從以下幾點說明。
圖:3-1 冷錢包安全審核覆蓋範圍
1. 設備系統安全機制
1.1 硬體錢包是否存在聯網控制
設備在使用過程中,是否有聯網操作,是否全程隔絕物理網絡,如未做相關設計,黑客的攻擊面則會變大,導致設備更加容易被攻擊。
1.2 硬體錢包系統安全檢測
設備是否保留藍牙,wifi,nfc相關近景協議模塊,是否有安全防護措施,是否有漏洞掃描。
1.3 硬體錢包系統漏洞更新機制
如何設備存在漏洞,更新機制是如何進行的,在更新過程中,是設備與電腦進行連接刷機還是什麼方式,如未校驗系統完整性,則導致更新刷入的系統無法控制,刷入黑客修改的惡意系統,對所有流程進行控制。
1.4 設備丟失鎖定方案
是否有健全的機制對設備丟失模式進行判定,將設備鎖定,如未做相關設計,則容易導致用戶錢財受到損失。
2. 設備訪問權限控制
2.1 是否允許用戶對設備進行連接調試
對設備是否加入了嚴格的權限控制,防止攻擊者對設備進行連接調試,分析轉帳中功能實現部分,交易過程中本地數據讀取等。
2.2 是否允許用戶對設備存儲區進行讀寫
對於設備存儲區,是否有做嚴格加密,對存儲區的權限控制是否嚴格,如不嚴格,則會被黑客進行拆機對存儲區做分析提取數據。
2.3 是否允許用戶對設備內存進行轉儲分析
對設備被調試是否有做檢測,防止內存數據洩露,如未做相關設計,則會導致黑客進行數據採集和逆向分析。
2.4 是否採用加密晶片
私鑰存儲是否採用加密晶片保存相關信息,運行系統和私鑰存儲是否分離,如未採用,則安全性相對會低。
3. 業務功能實現機制
3.1 設備使用密碼設置
是否提醒用戶設置解鎖密碼,解鎖手勢或指紋解鎖,錯誤密碼解鎖時間周期,設備交易密碼強度是否為較高,如未有完善的密碼設置控制,則在設備丟失後無法被人直接進入查看個人隱私信息,進行交易。
3.2 創建錢包助記詞安全
新用戶使用錢包時創建助記詞,私鑰過程是否安全,是否本地保存,本地保存如何來做,如相關功能設計未考慮安全性,則會導致相關數據被逆向調試分析洩露,對用戶錢財造成損失。
3.3 交易過程安全
對於收帳地址是否完全顯示,是否有驗證地址被修改,如未校驗,則容易使用戶轉帳轉錯,錢財受到損失。。
3.4 數據存儲安全
有哪些數據是保存在存儲設備上,私鑰儲存方式如何,是否保存在設備存儲卡上,被外部獲取,如相關功能設計不完善,則容易被黑客攻擊。
3.5 系統完整性安全
設備系統是否有嚴格的完整性校驗,用於自檢設備是否被人刷機,正品保障,否則容易在設備出廠經銷地方被黑客或攻擊者進行篡改。
現階段,市面上有大量良莠不齊的數字貨幣錢包存在,而不少開發團隊在以業務優先的原則下,暫時對自身錢包產品的安全性並未做到足夠的防護,一旦出現安全性問題會導致大量用戶出現帳戶貨幣被盜,而由於數字貨幣實現的特殊性,被盜資產非常難以追回,因此錢包的安全性是至關重要的。我們團隊會不斷跟進錢包安全,為區塊鏈生態安全貢獻一份力量。
對於漏洞等級的相關說明,我們做了一下總結,如下表:
名稱 | 等級 | 危害 |
---|---|---|
助記詞創建過程不安全 | 高級 | 助記詞的創建過程如果允許被錄屏,截屏等操作,會導致助記詞被竊取 |
助記詞不安全存儲 | 高級 | 助記詞明文或者弱加密存儲,黑客在拿到後可以暴力解密出來導致助記詞被竊取 |
私鑰不安全生成 | 高級 | 私鑰生成過程存在問題,導致攻擊者可模擬私鑰生成,造成私鑰被竊取 |
私鑰不安全存儲 | 高級 | 私鑰使用不安全存儲可能導致惡意應用獲取到私鑰,造成私鑰被竊取 |
硬體錢包助記詞不安全存儲 | 高級 | 助記詞的不安全存儲可能導致助記詞被竊取 |
轉帳地址可篡改 | 高級 | 如果惡意軟體可以篡改轉帳地址將會導致用戶將數字貨幣轉到黑客帳戶 |
伺服器弱口令 | 高級 | 伺服器使用弱口令,黑客極易拿下伺服器權限 |
硬體錢包系統漏洞攻擊 | 高級 | 不進行定期掃描系統漏洞可能會存在漏洞,導致黑客攻擊獲取郵件錢包權限 |
本地敏感信息不安全存儲 | 中級 | 本地敏感信息不安全存儲可能導致敏感信息的洩露 |
錢包導入過程不安全 | 中級 | 錢包導入的時候如果允許錄屏截屏會導緻密鑰洩露 |
交易密碼弱口令 | 中級 | 如果交易密鑰使用弱口令,黑客可以暴力破解並操作帳戶 |
用戶輸入不安全 | 中級 | 用戶輸入如果被黑客監聽或者劫持,關鍵信息可能會被黑客猜測出來 |
助記詞/私鑰回傳 | 中級 | 數字錢包開發商將私鑰/助記詞等數據回傳可能導致私鑰/助記詞的洩露 |
查詢越權 | 中級 | 如果用戶數據在錢包伺服器進行存儲,越權漏洞會洩露用戶信息 |
未進行系統漏洞掃描 | 中級 | 未進行系統漏洞掃描,系統可能存在能被黑客利用的漏洞,可能被黑客竊取到關鍵數據 |
域名解析被篡改 | 中級 | 域名解析被篡改會導致劫持 |
錢包域名DNS汙染 | 中級 | DNS被汙染可能導致用戶被劫持,可能被釣魚竊取用戶帳戶密碼身份證等信息 |
伺服器未定期進行漏洞掃描 | 中級 | 伺服器未定期做漏洞掃描可能會存在高危漏洞,導致被黑客入侵拿下權限 |
雲伺服器未做訪問控制 | 中級 | 伺服器未做訪問控制 |
伺服器未進行日誌審計 | 中級 | 伺服器未定期審計日誌可能會導致黑客長期控制伺服器 |
核心代碼洩露 | 中級 | 伺服器和數字錢包核心代碼洩露容易被黑客獲取到審計出漏洞 |
伺服器應用存在漏洞 | 中級 | 存在漏洞的伺服器容易被黑客攻擊,洩露用戶敏感數據 |
伺服器未實行環境隔離 | 中級 | 伺服器未實現運行環境隔離可能會導致其它惡意應用竊取到用戶敏感數據 |
雲存儲不安全配置 | 中級 | 使用第三方雲存儲上存儲數字錢包數據時需做嚴格權限控制 |
硬體錢包無丟失應急機制 | 中級 | 當用戶丟失硬體錢包,如無丟失應急機制,可能導致帳戶被盜 |
硬體錢包可調式 | 中級 | 硬體錢包可調式可導致程序運行時關鍵數據洩露 |
硬體錢包固件可讀寫 | 中級 | 攻擊者可以通過晶片引腳進行固件的提取,導致固件被逆向分析 |
硬體錢包晶片未加密 | 中級 | 未加密的晶片降低了被逆向分析的難度 |
硬體錢包未設置密碼 | 中級 | 硬體錢包未設置密碼可能在丟失後被直接用於轉帳,令用戶處於極高的風險下 |
硬體錢包存儲不安全 | 中級 | 如果存儲設備可讀寫會導致敏感信息的洩露 |
硬體錢包固件完整性未校驗 | 中級 | 未檢測固件完整性,可能導致固件被篡改,植入惡意代碼導致交易風險 |
https證書不嚴格校驗 | 中級 | 證書不嚴格校驗可導致中間人攻擊 |
圖:4-1 漏洞風險等級列表
360信息安全部致力於保護內部安全和業務安全,抵禦外部惡意網絡攻擊,並逐步形成了一套自己的安全防禦體系,積累了豐富的安全運營和對突發安全事件應急處理經驗,建立起了完善的安全應急響應系統,對安全威脅做到早發現,早解決,為安全保駕護航。技術能力處於業內領先水平,培養出了較多明星安全團隊及研究員,研究成果多次受國內外廠商官方致謝,如微軟、谷歌、蘋果等,多次受邀參加國內外安全大會議題演講。目前主要研究方向有區塊鏈安全、WEB安全、移動安全(Android、iOS)、網絡安全、雲安全、IOT安全、等多個方向,基本覆蓋網際網路安全主要領域。