0
| 本文作者: 李勤 | 2018-05-09 18:01 |
雷鋒網編者按:“我們不生產幣,我們是幣的搬運工。”白帽匯安全研究院負責人鄧煥如此描繪他所觀察到黑客在區塊鏈幣世界的猖獗現象。“有些技術可以產品先行,但是自帶金融屬性的技術必須得安全先行。”白帽匯 CEO 趙武這樣說。在專業的安全研究人員看來,黑客要想攻擊區塊鏈實在太簡單了,那么自帶金融屬性的區塊鏈又受到了哪些安全威脅?5月8日,白帽匯安全研究院聯合安全智庫發布了一份《區塊鏈安全分析報告》,雷鋒網截取了其中“區塊鏈攻擊對象分析”部分章節。

3.5.1 合約虛擬機
隨著區塊鏈技術的不斷升級,區塊鏈已經具備在鏈上繁衍出多種應用的功能,而實現這種功能的基礎就是合約虛擬機(用于運行各種智能合約的平臺),此技術的出現極大的提高了區塊鏈的可擴展性,是區塊鏈2.0的重要標志。
合約虛擬機的出現為合約代碼提供了沙盒式的執行環境。
風險
合約虛擬機運行在區塊鏈的各個節點上,接受并部署來自節點的智能合約代碼,若虛擬機存在漏洞或相關限制機制不完善,很可能運行來自攻擊者的惡意的智能合約。
針對合約虛擬機的安全風險,我們分析總結了以下攻擊方式:
逃逸漏洞
虛擬機在運行字節碼的時候會提供一個沙盒環境,一般用戶只能在沙盒的限制中執行相應的代碼,此類型漏洞會使得攻擊者退出沙盒環境,執行其他本不能執行的代碼。
邏輯漏洞
虛擬機在發現數據或代碼不符合規范時,可能會對數據做一些“容錯處理”,這就導致可能會出現一些邏輯問題,最典型的是“以太坊短地址攻擊”。
堆棧溢出漏洞
攻擊者可通過編寫惡意代碼讓虛擬機去解析執行,最終導致棧的深度超過虛擬機允許的最大深度,或不斷占用系統內存導致內存溢出。
此種攻擊可引發多種威脅,最嚴重的是造成命令執行漏洞。
資源濫用漏洞
攻擊者可以在虛擬機上部署一份惡意代碼,消耗系統的網絡資源、存儲資源、計算資源、內存資源。
所以在虛擬機中必須要有相應的限制機制來防止系統的資源被濫用。
在以太坊中采用的是gas機制,攻擊者想要在以太坊虛擬機上做更多操作,需要付出經濟代價。
案例
以太坊短地址漏洞:由于EVM并沒有嚴格校驗地址的位數,并且還擅自自動補充消失的位數,使得合約多發送很多代幣出來。
3.5.2 智能合約
智能合約是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易。這些交易可追蹤且不可逆轉。
風險
智能合約本質上是一份代碼程序,難免會有因為考慮不周的導致出現漏洞的情況,所以在發布一份智能合約之前,進行大量的模糊測試與白盒審計是必不可少的。
在將大量資金放入合約之前,合約應當進行大量的長時間的測試。
至少應該:
擁有100%測試覆蓋率的完整測試套件(或接近它)
在自己的testnet上部署
在公共測試網上部署大量測試和錯誤獎勵
徹底的測試應該允許各種玩家與合約進行大規模互動
在主網上部署beta版以限制風險總額
針對智能合約的安全風險,我們分析總結了以下攻擊方式:
可重入攻擊
當智能合約A調用智能合約B時,智能合約B可以在被調用的函數中寫入“使智能合約A調用智能合約B”的代碼,這樣就造成了可重入攻擊。
比較典型的一個案例:
1. 智能合約A向智能合約B發起提現請求
2. 智能合約B向智能合約A轉賬,并調用智能合約A的回調函數
3. 智能合約A的回調函數中被寫入的操作是“智能合約A向智能合約B發起提現請求”。
4. 又回到了步驟1,一直循環步驟1234直到不滿足循環條件。
5. 提現結束
調用深度攻擊
在合約虛擬機中,會對智能合約的互相調用的深度定一個閾值,超過這個深度調用就會失敗,例如在以太坊EVM中,調用深度被限制為1024。
調用深度攻擊可以讓合約調用失敗,即使這個調用在邏輯上不存在任何問題,但是在虛擬機層面以及不被允許了,因為調用深度達到了虛擬機中的閾值,超過閾值不再往下執行。
攻擊者可以通過控制調用深度,來使某些關鍵操作無法執行,例如:轉賬、余額清零等。
交易順序依賴攻擊
智能合約的執行會隨著當前交易處理順序的不同而產生不同的結果。
場景:攻擊者發布一個解題合約,在合約中寫給出豐厚的解題獎勵。等有人提交了正確答案后,此時的答案還需要經過其他節點的確認,合約才會執行獎勵操作。此時攻擊者可以提交一個將獎勵額度調低的交易,這筆交易肯定是在獎勵操作的后面,理論上不會造成給答題人帶來損失。
但是,在區塊鏈項目中,交易順序并不是一成不變的,例如在以太坊中,交易順序就會隨著交易發布者的gas(交易費)的高低來決定先確認哪筆交易。
此時若攻擊者更改獎勵額度的交易給的交易費比較高,驗證節點會先執行這筆交易,最終會導致答題人最后得到的獎勵額度是調低的額度。而攻擊者以一個較低的成本就買到了正確答案。
時間戳依賴攻擊
如果智能合約在敏感操作中依賴時間戳,可能會導致執行結果被預測。
場景:若發布一個抽獎合約,抽獎結果由當前區塊的時間戳和其他因素組合計算而來,攻擊者可以通過提前嘗試不同的時間戳來計算這個抽獎結果,從而導致結果被預測。
誤操作異常攻擊
當合約A調用另外一個合約B的操作的時候,合約B操作的執行可能會因為種種原因導致執行失敗,從而退回到未執行前的狀態,此時合約A若不檢查合約B執行的結果繼續往下執行,會導致很多問題。
場景:合約A調用合約B的提現操作后并在合約A的余額中增加與提現額度一樣的數值。此時若沒檢查合約B的執行提現操作的返回值,就可能會導致合約B中的余額并沒減少,而合約A中的余額卻已經增加了。
整數溢出攻擊
在常見的程序語言中,對整數類型的變量一般都會有最大值和最小值。智能合約本質上也是一份程序代碼,合約中的整數也會有相應的最大值和最小值。一旦變量所存儲的值超過了最大值就會發生整數上溢錯誤,導致變量最后存儲的值為0,反之則是整數下溢錯誤,變量最后存儲的值為變量最大值。當然,溢出的情況并不限于以上整數上溢或者整數下溢,還可能會在計算、轉換等過程中發生溢出。
場景:假設某個智能合約中的余額為無符號整數類型,此類型的范圍為0~65535,當攻擊者通過某種方法使余額小于0時,它在智能合約中的余額將下溢為65535。使余額大于65535時,它在智能合約中的余額將上溢為0。
基于以太坊的多個ERC20智能合約就遭受過整形溢出漏洞的影響,如圖:該漏洞就是一個典型的整形溢出導致,繞過業務邏輯,能夠刷出大量的token。
ERC20相關的智能合約中就曾曝出過batchTransfer(CVE-2018–10299),SmartMesh 合約中transferProxy函數,proxyTransfer函數(CVE-2018-10376),UET合約的 transferFrom函數(CVE-2018-10468),都出現過整形溢出的問題。
案例
1. 2016年6月發生了一起史上最大的智能合約事件,它就是著名的The DAO攻擊事件。導致價值6000萬美元的以太幣被盜,迫使以太幣被硬分叉為ETH和ETC。
2. 2017年7月,以太坊發生了Parity多重簽名錢包被盜事件,黑客從從三個高安全的多重簽名合約中竊取到超過15萬ETH(約3000萬美元)。
3. 2018年4月,BeautyChain(BEC)智能合約中出現了一個災難性的漏洞(整形溢出漏洞),導致損失約10億美元
4. 2018年4月, SMT的智能合約漏洞(整形溢出)。
3.6.1 交易平臺
3.6.1.1 網絡帶寬
目前在網絡中有許多以區塊鏈作為底層技術的加密貨幣的交易平臺,用戶在通過交易平臺來購買和出售加密貨幣,對于主流的交易平臺,每天都有大量的用戶在平臺上進行交易,其網絡帶寬對于交易平臺來說至關重要。
風險
針對交易平臺的安全風險主要為拒絕服務攻擊:
拒絕服務攻擊
由于交易平臺對于網絡帶寬的存在高需求,所以一旦發生DDoS攻擊,對于平臺和整個行業來說是非常嚴重的。若交易平臺被DDoS攻擊,不但交易平臺蒙受損失,區塊鏈貨幣的交易量也將大大減少,間接影響區塊鏈貨幣的漲跌,在我們統計的安全事件中,以及調查的相關案例顯示目前只要是交易平臺上線都遭受到DDOS攻擊過。
場景:攻擊者首先通過DDOS使平臺無法訪問,此時通常一定會有相關的新聞資訊報道這次事件。然而普通大眾并分不清拒絕訪問攻擊與入侵的區別,在自己所使用的交易平臺被“攻擊”后,為了自己的資金安全通常會選擇轉向別的平臺,導致此平臺資金、用戶流失。
案例
1. 2017年5月12日,Poloniex交易平臺遭受了嚴重的DDoS攻擊,BTC/USDT的交易價格一度困于1761美元,絕大多數用戶都無法執行訂單或是提取資金。
2. 2017年12月12日,比特幣交易平臺Bitfinex遭受嚴重DDoS攻擊,API癱瘓。消息傳出后,比特幣下跌1.1%,報16968美元。
3.6.1.2 賬戶體系
賬戶是交易平臺必須具備的基礎配置,賬戶是開戶的憑證,包含賬號和密碼,意味著你成為他們的用戶,平臺必須根據相關條約對你賬號的隱私、安全負責。
風險
交易平臺為保證用戶的資金安全需要建立高強度的賬戶安全體系。具體需要做到如下幾點:
1. 防撞庫,人機識別
2. 進行敏感操作的時候啟用多因素認證
3. 邏輯縝密,務必要杜絕“密碼找回漏洞”、“登陸繞過”、“越權訪問/調用”等漏洞
4. 防暴力破解,對登陸頻率進行限制
5. 防cookie泄露,開啟httponly,杜絕XSS漏洞
6. 防跨站請求偽造,提交動作盡量使用POST并且增加token,杜絕CSRF漏洞
7. 若使用SSO、oauth等登陸方式,務必嚴格遵循協議標準實現
8. 賬號風控
針對交易平臺賬戶體系的安全風險,我們分析總結了以下攻擊方式:
撞庫攻擊
由于目前的網民普遍安全意識不足,經常會使用通用的用戶名和密碼,在不同的網站上使用同樣的賬號和口令登陸。
導致攻擊者通過手機互聯網上已公開或還未公開的用戶名、郵箱、密碼等信息來在要攻擊的網站上通過程序批量嘗試。
場景:攻擊者通過網絡釣魚或者收集網絡上已公開的與區塊鏈相關網站的用戶數據(包括用戶名、密碼等)在目標交易平臺上使用程序自動化逐個嘗試,導致賬戶安全受到極大威脅。
窮舉攻擊
若網站不對登陸接口做請求限制或者風控,會導致攻擊者可以無限發送請求逐個測試可能的值來暴力破解某些關鍵信息。
場景:
1. 在短信驗證中,若不對短信驗證碼的有效期做限制或者驗證接口做限制,很容易短信驗證碼被破解。
2. 若登陸接口未做請求限制,攻擊者可以通過大量的密碼字典來暴力破解某個賬戶的密碼。又或者說,攻擊者可以通過大量的用戶名字典來暴力破解密碼為某個值的用戶,比如密碼為123456的用戶。
單點登陸漏洞
在賬戶體系中此類漏洞比較隱蔽,攻擊者可以通過CSRF、XSS等手段來竊取用戶登陸的ticket,從而導致用戶賬號被竊取。
主要有以下攻擊面:
● 未使用HTTPS導致中間人劫持
● Jsonp接口泄露ticket
● CSRF漏洞竊取ticket
● XSS漏洞竊取ticket
oAuth協議漏洞
oAuth協議到2.0實際上已經足夠安全,但是只是協議安全,并不代表它的最終實現就沒有問題,在安全意識不足的情況下很容易導致出現一些潛在威脅,導致攻擊者可以通過CSRF等手段來越權登陸他人賬號。
主要有以下攻擊面:
● 利用CSRF漏洞綁定劫持
● 利用redirect_uri授權劫持
● 利用scope權限控制不當越權訪問
案例
2017年10月2日,OKCoin旗下交易所出現大量賬戶被盜情況,不完全統計損失金額在一千余萬人民幣左右,用戶懷疑平臺已被攻擊,或有已被關閉平臺的交易所員工向黑客泄漏了平臺用戶的賬戶信息,黑客通過用戶信息破解賬戶密碼登錄平臺,然后在平臺上完成數字資產轉移。
3.6.1.3 支付體系
交易平臺內充值、提現都涉及到了支付,所以完整的支付體系也是交易平臺必備的基礎配置。
風險
針對交易平臺支付體系的安全風險,我們分析總結了以下攻擊方式:
支付漏洞
凡是涉及到支付,則就有可能出現支付漏洞,且支付漏洞直接涉及到資金的安全問題,無論對平臺或是用戶來說都是高風險,必須要謹慎對待。以下總結了支付體系中常見的問題:
1. 修改支付價格問題:在支付時未對支付價格做后端驗證,導致可以將價格調低甚至設為負數來通過交易獲得收入。
2. 修改購買數量問題:在支付的過程中,數量也同時決定著價格,比如:1個數量商品對應的是100,2個數據就是200,那么當你修改這個值數量值為負數時,那么其金額也會變為負數,最后就會導致支付問題的產生。
3. 最大值支付問題:通過購買大量商品使得最后的支付數額非常大,后端可能存在大整數溢出漏洞,當數值超過了某個閾值后,得到的結果會為0或者負數。
4. 越權支付問題:后端缺少驗證,導致可通過改包修改當前用戶ID使用他人余額進行支付。
案例
目前暫無實際攻擊曝光,但在某些層面可能存在致命安全隱患
3.6.1.4 業務邏輯
業務邏輯即交易平臺的業務流程或用戶操作流程,還包含交易平臺的交易策略和規范。
風險
針對交易平臺業務邏輯的安全風險,我們分析總結了以下攻擊方式:
邏輯漏洞
業務邏輯必須嚴謹,必須要對每段業務邏輯代碼進行大量的模糊測試與代碼審計,因為此類漏洞很難用傳統的方式發現,只能借助于人的邏輯思維去思考其中可能出現的問題。目前常見的業務邏輯漏洞有如下幾種:
● 越權漏洞
● 驗證碼漏洞
● 條件競爭漏洞
● 認證漏洞
案例
目前暫無實際攻擊曝光,但在某些層面可能存在致命安全隱患
3.6.2 首次代幣發行(ICO)
ICO是類似于IPO的一種區塊鏈項目融資方式,用于項目的起步資金,與IPO不同的是:ICO是一種以幣換幣的融資行為,一般以比特幣或以太坊換取該項目代幣。
風險
針對目前ICO的業務形態,已經發生了各種針對ICO業務的特定攻擊場景如下:
篡改攻擊
ICO在募集資金的時候,一般會在項目官網上掛出收款地址,然后投資人會陸續往此地址轉賬以換取相應代幣。
攻擊場景:黑客通過域名劫持、web漏洞、或社會工程學等等之類的攻擊手段來篡改項目官網上的收款地址,此之后項目募集到的資金便落到了黑客的手中。
釣魚攻擊
攻擊者利用社會工程學等手段來冒充官方,使用戶向攻擊者的錢包地址中轉賬。
攻擊場景:
1. 利用近似域名+高度仿冒網站欺騙投資者
2. 利用電子郵件散步虛假信息,如ICO項目的收款地址更改通知等
3. 在社交軟件、媒體上散步釣魚信息來欺詐投資者
案例
2017年7月,CoinDash項目ICO收款地址遭到黑客篡改,價值約1000萬美元的eth流入黑客錢包。
3.6.3 礦工
3.6.3.1 礦機系統
普通的家用PC、服務器等,并不是挖礦最合適的設備。一些廠商為了減少挖礦成本以及提高挖礦效率,根據幣種的算法專門研發出了相應的挖礦設備。并在上面搭建相應的訪問來提供遠程訪問以及控制,這種專門用來進行挖礦的設備即被稱為礦機。
風險
設備廠商們的安全防護意識是參差不齊的,而且由于其閉源的特性,其代碼的安全性無法被大眾檢查,一旦出現安全問題,結果就是致命的。
而且設備廠商是否會在設備中穿插后門進行遠程控制,亦或是偷偷竊取挖礦產出,這些都還有待商榷。
針對礦機系統的安全風險,我們分析總結了以下攻擊方式:
0day漏洞攻擊
礦機系統大多都是屬于通用系統,很少會定制開發。一般是廠家售賣礦機時自帶的,多個廠商肯能會使用同一套系統,只是貼牌配置不一樣的硬件。
沒有絕對安全的系統,礦機也不例外,一旦某個礦機系統被發現存在0day漏洞[15],那系統的安全壁壘將瞬間被打破,攻擊者可以利用漏洞拿到修改權限后進行獎勵接收地址篡改然后劫持用戶的獎勵。
所以有必要對礦機進行訪問控制以及網絡隔離,以及相應的防護來抵御0day漏洞攻擊。
滲透攻擊
目前已經有組織對礦機進行持續性的滲透攻擊,利用漏洞組合拳,最終獲取到系統的篡改控制權限威脅礦機的系統安全,該攻擊方式不限制于某一特定漏洞,最終以拿到系統權限為目的。
弱口令攻擊
目前市面的礦機系統都是以B/S架構,在訪問礦機系統一般是通過web或者是別的途徑,若是在礦機上使用弱密碼,則會極易遭到入侵。
獎勵接收地址篡改
在挖礦主機系統被攻陷后,可能利用各種漏洞,最終黑客目的都是為了獲取相關利益,而最直接的就是通過修改獎勵的接受地址來使受害者的收獲全部被黑客獲取。
案例
1. 2017年4月份,比特大陸旗下螞蟻礦機被指存在后門,可導致礦機被遠程關閉。若此攻擊發生,將導致比特幣區塊鏈中損失大量算力。
2. 以下某挖礦系統存在弱口令,可導致比特幣接受地址被篡改。
3.6.3.2 礦池
由于比特幣全網的運算水準在不斷的呈指數級別上漲,單個設備或少量的算力都無法在比特幣網絡上獲取到比特幣網絡提供的區塊獎勵。在全網算力提升到了一定程度后,過低的獲取獎勵的概率,促使一些“bitcointalk”(全球最大的比特幣論壇)上的極客開發出一種可以將少量算力合并聯合運作的方法,使用這種方式建立的網站便被稱作“礦池”(Mining Pool)。
在此機制中,不論個人礦工所能使用的運算力多寡,只要是透過加入礦池來參與挖礦活動,無論是否有成功挖掘出有效資料塊,皆可經由對礦池的貢獻來獲得少量比特幣獎勵,亦即多人合作挖礦,獲得的比特幣獎勵也由多人依照貢獻度分享。
截止2018年4月,全球算力排名前五的比特幣礦池有:AntPool、BTC.com 、BTC.TOP、ViaBTC、F2Pool,目前全球約70%的算力在中國礦工手中。(以上數據來至https://btc.com/stats/pool)
風險
針對礦池平臺的安全風險以及礦池本身在區塊鏈網絡的特殊角色,我們分析總結了以下影響區塊鏈網絡的攻擊方式:
算力偽造攻擊
礦池會通過某種特定的工作量證明檢驗算法來檢驗當前礦工的實際算力,但是在算法的實現上可能不一定完美無瑕,當算法的實現上存在某種漏洞可以虛報算力時,會給礦池平臺帶來很大的經濟損失。
因為當前礦工實際上并沒有給礦池貢獻那么高的算力,卻拿了與算力相當的獎勵分配,對于礦池中的其他礦工來說極其不公平。
場景:黑客通過尋找礦池算力檢驗算法的漏洞來虛報算力,然后獲取到與實際算力不想當的超額獎勵。
扣塊攻擊
也叫做藏塊攻擊。在礦工參與礦池進行挖礦的過程中,只要有一個礦工解題成功,題解會上交給礦池,整個礦池所有的礦工便會共享這次的解題成果,并按照算力貢獻大小來分配獎勵。
但在實際情況中,礦池中的礦工可以不遵守規則,在得到題解后不回傳給礦池,而是選擇私吞,在這種情況下就會造成礦池利益的極大損失。
場景:礦池中的某節點在挖到區塊之后并不上交給礦池,而是選擇“私吞”,這樣既能享受礦池所帶來的福利,又能從挖礦中獲得利益。
自私采礦攻擊
自私采礦攻擊(Selfish Mining Attack)[11]是針對區塊鏈的一種典型攻擊。由于挖取像比特幣這樣的加密貨幣,對于一個礦工(Miner)來說,需要高計算能力來解決密碼難題(即工作量證明),因此采礦變得十分困難。鑒于此,一組礦工(Mining pool,采礦池)通常會相互組合起來,并在成功解決密碼難題之后,分享收到的獎勵。這樣有助于個體礦工在單獨采礦時產生較連續恒定的收入而不是很少的收益。Eyal和Sirer認為如果存在一群自私的礦工,采用自私的采礦戰略,并獲得成功,就可能會使誠實礦工的工作無效。這種自私采礦攻擊表現為:一個惡意的采礦池決定不發布它發現的塊,進而創建一個分叉,因此,網絡中就存在由誠實礦工維護的公共鏈和惡意采礦池的私人分叉惡意采礦池在此私人分叉下繼續進行挖掘,當私人分叉比公共鏈長的時候,惡意采礦池就發布該私人分叉,由于該分叉是當前網絡中最長的鏈,因此會被誠實的礦工認定為合法鏈,所以原公共鏈及其包含的誠實數據將被丟棄。研究結果表明,一般情況下惡意采礦池采用自私采礦策略將獲得更多的收益。
中心化問題(算力過于集中問題)
目前因為礦池的存在,違背了區塊鏈去中心化的原則,當礦池做大,算力提高后,礦池變得過于集中,當算力達到全網的51%后,從理倫上來說,如果能夠控制整個網絡達到或超過51%以上的算力,將可以壟斷開采權、記賬權、分配權,將影響區塊鏈的生態安全,這樣加密貨幣的信用體系將不復存在,加密貨幣體系也將徹底摧毀。
案例
1. 2014年5月份,Eligius礦池遭受扣塊攻擊,損失約300個比特幣,在當時價值約16萬美元
3.6.4 普通用戶
3.6.4.1 系統資源
在使用PoW共識機制的區塊鏈中,存在一個非常重要的角色,那就是“礦工”,他們的主要作用是:
1. 解題:礦工需要通過計算來解決每過一段時間產生的“數學難題”,并通過“解題答案”來證明自己的工作結果,從而獲取報酬。
2. 對賬:對區塊內的交易合法性以及其他礦工廣播的“解題答案”進行核對,確認交易沒有造假以及“解題答案”是正確的并蓋章。
3. 記賬:核對交易的合法性以及“解題答案”后,將這段時間的交易打包進新區塊中。
風險
針對目前用戶的普通用戶計算資源被濫用,用于挖礦的安全風險,我們分析總結了以下一些風險點:
挖礦傀儡
并不是人人都愿意當“礦工”。對于黑客而言,通過一些漏洞獲得一些主機的權限或者網頁端來挖礦是很容易的,黑客可以輕易地在被入侵主機上部署挖礦程序,消耗主機的系統資源與電力,以此來獲取利益,目前市面上被黑客應用最多的就是門羅幣(Monero),因為植入部署方便,導致現在很大一部分黑產團體從原來的篡改網頁,到現在直接植入挖礦腳本在網頁里。
案例
1. 2017年下旬,有人發現很多網站首頁中插入了coinhive平臺的JS挖礦代碼,使得大量訪問網站的人系統變慢,疑似為黑客篡改首頁權限導致。
2. 2018年初,上百款《荒野行動》游戲輔助被植入挖礦木馬,利用游戲主機的高性能來挖礦獲取利益。
3. 2017年至現在,很多攻擊者利用“永恒之藍”漏洞獲取大量主機權限,然后在受害者的系統內長期潛伏挖礦。
3.6.4.2 錢包
區塊鏈的錢包指的是存儲區塊鏈資產的地址和私鑰的文件。
目前主流的錢包分為冷錢包和熱錢包。冷錢包是沒有聯網環境的,如市面上的硬件錢包就是冷錢包,由于其不聯網的特性,使得它的安全性要在熱錢包之上,但不方便交易。熱錢包是在線的,例如電腦客戶端錢包、手機APP錢包、網頁錢包等,都屬于熱錢包,它的交易是很方便的,但是安全性相對于冷錢包來說要低很多。
風險
針對錢包的安全風險,我們分析總結了以下攻擊方式:
錢包客戶端RPC API風險
區塊鏈項目的客戶端中目前通常都會有RPC API接口,給用戶提供一個可程序化操作的接口,其中涉及到用戶的一些敏感操作,例如:轉賬。
所以API的訪問控制和鑒權至關重要,在沒有鑒權和訪問控制的情況下會造成如下攻擊場景,以eth客戶端geth為例。
場景:
1. 用戶開啟RPC API,此時API只能做常規查詢操作,并不能轉賬
2. 用戶執行解鎖錢包操作,此時API能執行轉賬操作并且無任何鑒權
3. 攻擊者趁機在此API上執行轉賬操作
4. 代幣竊取完畢
釣魚攻擊
在目前的互聯網環境中,欺詐隨處可見,這種攻擊手段在區塊鏈應用上也同樣受用。攻擊者可以偽造某個錢包客戶端,無論從界面和操作上都可以做到和真錢包沒有區別,可能他們只是在你轉賬的時候竊取你的私鑰信息或者在轉賬地址上動手腳,就可以輕易地偷偷竊取你的資產。
所以,客戶端一定要在官網下載,并驗證官網發布的客戶端文件hash是否與下載的客戶端文件hash一致。
私鑰竊取
因為私鑰信息至關重要,所以很多人會選擇將錢包私鑰文件多點備份,而備份得多或者備份點不安全都有可能導致錢包私鑰泄露。經調研,目前針對比特幣的wallet.dat文件就出現在各個互聯網中,例如:OSS服務、網盤、GitHub、NAS服務器、Web服務等等互聯網可接入的地方,都能看到密鑰的存儲,這是極其危險的,甚至已經有攻擊者開始針對密鑰文件進行專門掃描,以及開發相關的木馬病毒進竊取。
錢包軟硬件漏洞攻擊
錢包軟件本身可能因為其本身或是開放的一些服務存在漏洞,影響用戶的資金安全。
硬件廠商提供的錢包只是將錢包與線上網絡隔離,并不能保證其本身的安全性就足夠,由于其是封閉的,其代碼質量對于大眾是未知,且不良廠商在其中穿插后門也不是并無可能。
在線錢包賬號竊取
由于在線錢包其方便、快捷等特性,使得很多人直接選擇使用在線錢包。所以個人的資產安全與服務商的安全是一個強綁定的關系,個人的資產過分依賴于外部保障其實和中心化的應用比較類似,這與區塊鏈根本理念相沖突,同時也給個人資產帶來的很大風險。
案例
1 2013年11月,比特幣在線錢包服務商Inputs.io遭受黑客攻擊,黑客透過電子郵件賬號進行入侵,進而劫持代管賬號,從中盜取了4100個比特幣(在當時折算為130萬美元)。
2 萊特幣假錢包客戶端盜幣事件,攻擊者通過修改開源錢包源代碼,將顯示的錢包地址固化為攻擊者的錢包地址再重新編譯,用戶使用此地址接收轉賬的時候很自然的就轉賬到了攻擊者的賬戶中。
3 Ledger 硬件錢包漏洞,該漏洞讓黑客可以在設備發貨之前和發貨之后竊取密碼。
4 2015年2月23日,比特幣錢包運營商比特幣存錢罐被盜,比特幣存錢罐官方表示:黑客于2014年6月30日入侵了平臺的Linode賬號,并修改了Linode賬號密碼和服務器的root密碼,從而入侵了服務器并且獲得了服務器的控制和管理權限,導致比特幣被盜。
5 在社區上,經常有用戶表示自己的比特幣余額被盜,而原因大多與錢包私鑰泄露有關。
6 2018年3月25日,幣安發布公告表示部分社區ERC20錢包用戶收到一封冒充Binance名義發送的“Binance開啟ERC20私鑰綁定”詐騙郵件,郵件主要是為了盜取用戶的ERC20錢包私鑰。
7 2018年1月份,名錢包開發商 Electrum 近期針對其比特幣錢包的 JSONRPC 接口漏洞發布了安全補丁,這個漏洞能使攻擊者通過JSONPRNC接口獲取私人數據和加密貨幣。
3.6.4.3 交易所賬戶
要在交易所中進行交易需要注冊相應的賬戶,有了交易所賬戶就可以很方便的在交易所內進行買入賣出交易,相當于交易所賬戶掌握了你的數字貨幣的買賣權。
風險
在交易所中的賬戶安全需要在各個方面都有保障,只要有一個短板就會面臨危險。
針對交易所賬戶的安全風險,從用戶角度來說,我們分析總結了以下攻擊方式:
釣魚攻擊
通過仿冒交易所網站的域名和頁面來達到從視覺上欺騙受害者的手段,一般用來竊取用戶的交易所登陸口令,攻擊者拿到相關口令后開始進行轉賬操作。
中間人劫持攻擊
攻擊者可以在流量中轉處截獲流量,例如:路由器、網關等流量出口。不過好在目前多數的交易所一般都是采用https,在此方面問題不算大,但是不排除在某些API接口的子域名未使用https。
木馬劫持攻擊
木馬通過按鍵記錄,或是hook瀏覽器的方式來獲取交易所賬號的登陸口令或是直接劫持用戶的資產,在歷史安全事件就有攻擊團體再各種相關虛擬貨幣網站,論壇社區發布帶有木馬的APP程序,來盜取劫持用戶。
案例
1. 2018年3月8日,幣安網公布部分幣安釣魚網站案例
2. 2017年8月份,一款名為Trickbot的木馬就針對包括Coinbase在內的幾家數字貨幣交易所增加了web注入攻擊的功能,在受害者購買數字貨幣的時候和會將接受錢包重定向到攻擊者的錢包,讓用戶誤以為轉賬成功,其實最終轉賬操作都進了攻擊者的錢包。
3.6.4.4 交易所API
各大交易所為了滿足用戶需要調用平臺數據的需求,會開放一些API提供給用戶使用。交易所API大致分為兩類:
1. 公共 API 可以參考交易所的訂單狀況、公開的交易記錄、交易版信息。
2. 私有 API 可以確認交易所的新訂單及其取消、個人余額等信息,需要相應的key才可以使用。
風險
針對交易所API的安全風險,我們分析總結了以下攻擊方式:
關鍵Key&Token竊取
私有API一般都涉及到用戶的一些敏感操作,例如:買入、賣出等操作。所以,API key一旦泄露,很可能會使自己的賬戶蒙受經濟損失。而大部分人,甚至包括程序員都不一定有這種安全意識,存在key泄露的隱患,例如一些使用者,開發者可能有意或者無意就把相關的代碼配置信息同步在GitHub、公開網盤等互聯網公共區域,互聯網任意用戶都能輕易的通過一些檢索把這些敏感信息找出來。
案例
2018年3月8日,幣安網大量用戶API key泄露,通過泄露的key直接操作用戶買賣,導致一萬余枚的比特幣被用于購買其他幣種,造成幣市動蕩。而某些交易所的API key到目前截稿為止在GitHub還能搜到。
雷鋒網注:若想獲取整份報告,鏈接如下:https://www.bcsec.org。
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。