白帽匯安全研究院釋出區塊鏈安全分析報告

yanengineers發表於2018-05-23

前 言

  當今,全球資訊領域的新一輪科技創新和產業變革持續深入,滲透範圍越發廣泛,作為研發投入最為集中、應用成效最大的資訊科技,正是此次引領變革的主導力量和技術創新的競爭高地。

  在此背景下,區塊鏈作為一種分散式資料儲存、點對點傳輸、共識機制、加密演算法等技術的新型整合應用,發展勢頭迅猛,近年來已經成為世界各國研究討論的焦點。其生態系統已延伸到物聯網、雲端計算、大資料、人工智慧等多個領域,應用場景也涵蓋了金融、投資、監管等機構,引發了新一輪的技術創新和產業變革。

  一直以來,安全問題都是資訊產業的重大發展方向,隨著科技技術的演變和複雜化,資訊保安問題的需求日益迫切,同時也被賦予了新的內涵外延。而區塊鏈作為一種新興技術,安全性威脅是其迄今為止所面臨的最重要的問題之一。

  為全面瞭解和推動區塊鏈技術和產業發展,解決區塊鏈目前面臨的安全問題,“白帽匯安全研究院”採用自主創新技術,根據區塊鏈的資料層、網路層、共識層、擴充套件層和業務層的不同應用場景下的主流攻擊事件進行探索,分析和總結,提出了安全加固、滲透測試、仿冒監測和合約審計四類安全解決方案,與國家安全機構、金融企業、資訊保安部門、網際網路巨頭等建立深度合作關係,多項研究成果成功應用於漏洞預警和產品服務,最終整合編纂形成了《區塊鏈產業安全分析報告》,並希望以此契機建立起安全可靠的區塊鏈技術安全生態體系。
            目錄
  一、區塊鏈概述
  二、區塊鏈安全性
  三、區塊鏈攻擊物件分析
  四、區塊鏈安全解決方案
  五、總結與展望
  六、關於我們
  七、參考來源

  一 區塊鏈概述

  1.1 定義

  區塊鏈[1]是一種分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式,是以比特幣為代表的數字加密貨幣體系的核心支撐技術,且可以從兩個方面來進行定義:從狹義的角度上來講,區塊鏈是一種以時間順序排列的鏈式結構資料,並透過密碼學的方式來保證資料的不可篡改、不可偽造。從廣義的角度來講,區塊鏈技術是利用塊鏈式資料結構來儲存資料、利用鏈式資料的前後關係來驗證資料、利用分散式節點來生成資料,利用共識演算法來更新資料、利用密碼學來保證資料的真實性、利用由程式程式碼組成的智慧合約保證協議的不可違約性的一種同時具備高可用、高擴充套件、高安全等特性的全新資料系統。

      其核心優勢是去中心化,能夠透過運用資料加密、時間戳、分散式共識和經濟激勵等手段,在節點無需互相信任的分散式系統中實現基於去中心化信用的點對點交易、協調與協作,從而為解決中心化機構普遍存在的高成本、低效率和資料儲存不安全等問題提供瞭解決方案。

  如下圖所示,高亮的點是區塊鏈系統中分佈在全球各地的各個節點;而這些節點可以簡單理解為一臺伺服器或伺服器叢集,並能夠協同運轉的資料庫儲存系統。區別於傳統資料庫運作——讀寫許可權掌握在一個公司或者一個集權手上(中心化的特徵),區塊鏈認為,任何有能力架設伺服器的個體都可以參與其中。

白帽匯安全研究院:區塊鏈安全分析報告

      來自全球各地的開發人員在當地部署了自己的伺服器,並連線到區塊鏈網路中,成為這個分散式資料庫儲存系統中的一個節點;一旦加入,該節點享有同其他所有節點完全一樣的權利與義務(去中心化、分散式的特徵)。與此同時,對於在區塊鏈上開展服務的參與者,可以往這個系統中的任意節點進行讀寫操作,最後全世界所有節點會根據某種機制完成一次又一次的同步,從而實現在區塊鏈網路中所有節點的資料完全一致。

  1.2 特徵

  區塊鏈技術是具有普適性的底層技術框架,可以為金融、經濟、科技甚至政治等各領域帶來深刻變革。在資訊網路化的大背景下,當需要進行資訊交換的時候,如何防止遭遇惡意欺詐,從而做出正確決策?具有去中心化、可追溯性等特徵的區塊鏈技術正好解決了此類難題,區塊鏈的核心技術均圍繞此進行展開。

  1.2.1 去中心化

  區塊鏈使用分散式架構,在區塊鏈網路中的節點同時扮演著“傳播者”和“驗證者”的角色,享受同等的權利、承受同等的義務,節點與節點之間可以自由通訊,系統中的資料塊由具有儲存能力的節點共同儲存。

白帽匯安全研究院:區塊鏈安全分析報告

  1.2.2 開放性

  區塊鏈整體系統是開放的,除了節點的私鑰以外,網路中的節點資訊對所有人公開,區塊鏈中的資料對所有人公開,區塊鏈的原始碼對所有人公開。

  1.2.3 自治性

  區塊鏈採用基於預先設定好的規範或協議使得整個網路中的所有節點能夠在自由、安全、無障礙的情況下的進行互動。

  區塊鏈技術將原本人與人之間”的信任轉化為人對機器的信任,任何人為的行為都難以撼動機器計算的結果。

  1.2.4 不可篡改性

  在區塊鏈系統中,由於使用了雜湊函式以及非對稱加密等先進的密碼學技術,在資訊經過驗證後會被打包至區塊中,由於區塊鏈只做加法,所以區塊鏈上的區塊資料不可銷燬。由於它是分散式的,所以單個節點對區塊的修改對於整個區塊鏈來說毫無影響,因此區塊鏈的資料穩定性和可靠性都是極高的。

  1.2.5 可追溯性

  儘管區塊鏈中的匿名性無法看到交易雙方的身份資訊,但區塊+鏈的形式儲存了從第一個區塊開始的所有歷史資料,連線的形式是後一個區塊擁有前一個區塊的HASH值,區塊鏈上任意一條記錄都可透過鏈式結構追溯本源,這樣從另一個方面保障了資訊的安全性。

  1.3 分類

  基於多種應用參與方式,區塊鏈目前主要分為公有區塊鏈、聯盟區塊鏈和私有區塊鏈。

  1.3.1 公有區塊鏈

  公有區塊鏈是指:世界上任何個體或者團體都可以傳送交易,且交易能夠獲得該區塊鏈的有效確認,任何人都可以參與其共識過程。公有區塊鏈是最早的區塊鏈,也是目前應用最廣

  泛的的區塊鏈。是指像比特幣區塊鏈這樣的完全去中心化的、不受任何機構控制的區塊鏈。共識過程的參與者透過密碼學技術以及內建的經濟激勵維護資料庫的安全。

  1.3.2 聯盟區塊鏈

  聯盟區塊鏈是指:由某個群體內部指定多個預選的節點為記賬人,每個塊的生成由所有的預選節點共同決定,其他接入節點可以參與交易,但不過問記賬過程(本質上還是託管記賬,只是變成分散式記賬,預選節點的多少,如何決定每個塊的記賬者成為該區塊鏈的主要風險點),其他任何人可以透過該區塊鏈開放的API進行限定查詢。

  參與區塊鏈的節點是事先選擇好的,節點間很可能是有很好的網路連線。這樣的區塊鏈上可以採用非工作量證明的其他共識演算法,比如有100家金融機構之間建立了某個區塊鏈,規定必須67個以上的機構同意才算達成共識。

  1.3.3 私有區塊鏈

  私有區塊鏈是指存在一定的中心化控制的區塊鏈。僅僅使用區塊鏈的總賬技術進行記賬,可以是一個公司,也可以是個人,獨享該區塊鏈的寫入許可權,本鏈與其他的分散式儲存方案沒有太大區別。參與的節點只有使用者自己,資料的訪問和使用有嚴格的許可權管理。聯盟鏈由於存在一定的中心化控制,所以也可以認為是屬於私有鏈範疇。

  此三種定義的主要區別如下表所示:

白帽匯安全研究院:區塊鏈安全分析報告

  1.4 發展

  早在1976年,Bailey W. Diffie、Martin E. Hellman兩位密碼學的大師發表了論文《密碼學的新方向》,論文覆蓋了未來幾十年密碼學所有的新的進展領域,包括非對稱加密、橢圓曲線演算法、雜湊等一些手段,奠定了迄今為止整個密碼學的發展方向,也對區塊鏈的技術和比特幣的誕生起到決定性作用。

  在21世紀到來之際,區塊鏈相關的領域又有了幾次重大進展:首先是點對點分散式網路,1999到2001的三年時間內,Napster、EDonkey 2000和BitTorrent分別先後出現,奠定了P2P網路計算的基礎。2001年另一件重要的事情,就是NSA釋出了SHA-2系列演算法。

  2008年11月,“中本聰”發表論文《比特幣:一種點對點的電子現金系統》,提出了區塊鏈這種資料結構,區塊鏈技術迎來了爆發式的增長和關注,技術迭代速度之快,超出任何人的想象,每隔一段時間就會有重量級事件發生,進一步助推了整個技術的發展。

白帽匯安全研究院:區塊鏈安全分析報告

  二 區塊鏈安全性

  2.1 背景

  安全問題一直是資訊化社會的主旋律,隨著區塊鏈技術的廣泛應用,隨之而來的問題也越來越多,由於區塊鏈去中心化,匿名性等一系列特點,目前在資本行業被大量使用,其中用於投資的情況也越來越多,正因為這一系列的特性與場景結合,隨之而來的各類攻擊也開始不斷出現,從之前的區塊鏈底層安全技術研究曝光,發展到後來越來越多的虛擬貨幣被盜,交易所被攻擊等事件。而這些只是目前被暴露的一部分,隨著區塊鏈技術所產生的價值越來越高,所面臨的攻擊將持續增加。

  區塊鏈技術自身尚處於快速發展的初級階段,面臨的風險不僅來自外部實體的攻擊,也有可能來自內部參與者的攻擊,應對區塊鏈技術的安全特點和缺陷,需要圍繞物理、資料、應用系統、加密、風險控制等構建安全體系。與此同時,區塊鏈技術的普及應用對保障資料儲存,資料傳輸和資料應用等多個方面的安全和隱私保護提出了全新的要求。

  隨著目前所發生的一系列交易平臺監守自盜、交易所遭受駭客攻擊、使用者賬戶被盜等安全事件,我們不得不承認一個事實,區塊鏈的“安全神話”已然破滅。

  由於區塊鏈目前異常活躍,不僅推動了虛擬貨幣的發展,而且還加強了現有的安全解決方案,對認證機制、資料保護和基礎設施的全域性發展提出了全新的要求。因此,急需建立一種或多種協同安全解決方案來提升區塊鏈整體系統的安全效能。

  2.2 底層原理

  以鏈式結構儲存基礎資料,多個節點參與系統執行,以一定的演算法對基礎資料的操作達成一致性共識。

  在“中本聰”的論文中,區塊鏈是由若干個時間順序、包含交易資訊的區塊從後向前有序連結起來的資料結構,每一個區塊都包含了當前區塊構成時間內所有的資訊,並由一個Hash值進行封裝和指向上一個區塊。資料結構可以被視為一個垂直的棧,可形象化地描述為每一個區塊就像一個箱子,每一個新的區塊都堆在上一個區塊之上,形成了一摞箱子,於是“高度”就可以表示區塊和首區塊的距離;“頂端”就是指最新的區塊;區塊頭就像是箱子的表面,封裝了內部的交易資訊,並標明父系區塊鏈的位置。每一個區塊頭都可以找到其父系的區塊,並最終回溯到創世區塊上。

白帽匯安全研究院:區塊鏈安全分析報告

  由於區塊頭要包含“父系區塊Hash”的欄位,所以任何父系區塊的修改,都會引發子區塊的改變,而子區塊的改變將引起孫區塊的改變,這種變化會一直傳導到最新的區塊,並且這種改變是沒有規律的,服從“雪崩效應”,這就意味著任何人想要更改之前區塊的內容,將會耗費大量的算力來運算更長的鏈條,即實現“51%攻擊”。這對於修改者來說,成本過於高昂。此外,即使實現了“51%攻擊”,也只能抹除自己的交易資訊,並不能修改整個程式和引數。

  因此,區塊鏈具有如下安全特性:(1)寫入資料的安全性:對於寫入區塊鏈的資料而言,在共識機制的制約之下,當全網大部分的節點或者核心的節點認可這個記錄時,這個資料的

  合法性和真實性才得以確保,記錄才允許被永久寫入區塊鏈中。(2)讀取資料的安全性:由於區塊鏈中的資料是加密儲存的,只有擁有使用者私鑰的節點才可以解密區塊中的核心資料,進而獲取區塊內容。此外,區塊鏈的共識機制是複雜的,能否確保大部分的使用者能夠看到一個相同的賬本。(3)分散式拒絕服務(DDOS)攻擊抵抗:區塊鏈的去中心化架構相比於傳統的網路架構,其節點分散、無固定中心且具備冗餘的特性,針對區塊鏈的DDOS攻擊將會更難展開。攻擊者對某個節點攻擊時,即便這個節點失效,也不會影響整個區塊鏈系統。

  2.3 安全分析

  目前區塊鏈面臨了諸多方面的安全挑戰,主要包含以下幾個方面:

  (1)密碼演算法安全性:目前區塊鏈基於的演算法主要是公鑰演算法和雜湊演算法,其安全性來源於數學難度,相對是安全的。但是隨著高效能運算和量子計算的發展和商業化,目前所有的加密演算法均存在被破解的可能性,這也是區塊鏈面臨的一個威脅。

  (2)協議安全性:區塊鏈中,如果一個節點能夠掌控全網51%的計算能力,就可以偽造或者篡改區塊鏈的資料。在目前典型的電子貨幣的應用場景中,這是得不償失。但是隨著區塊鏈應用範圍的擴寬,攻擊者為了達到某種目的,有可能實施這樣的攻擊。

  (3)使用安全性:區塊鏈有著無法篡改,不可偽造,計算不可逆的特點,但是必須是在私鑰安全的前提之下。但是目前針對金鑰的攻擊層出不窮,一旦使用者使用不當,造成私鑰丟失,就會給區塊鏈系統帶來危險。

  (4)系統安全性:在區塊鏈的編碼,以及執行的系統中,不可避免會存在很多的安全漏洞,針對這些漏洞展開的攻擊日益增多,這對區塊鏈的應用和推廣帶來極大的影響。

  2.4 歷史安全事件

  儘管區塊鏈在最底層原理方面保障了其可靠性,但目前區塊鏈安全機制並不十分健全,攻擊者主要選擇保護相對薄弱的資料層、網路層、共識層、擴充套件層和業務層進行攻擊,每年因區塊鏈安全漏洞造成的損失高達數十億美元。

  從分析結果來看,攻擊事件大致可分為四類安全事件:共識機制、智慧合約、交易平臺和使用者自身。

  以下是2011年至2018年4月30日發生的各類安全事件所造成的損失:

白帽匯安全研究院:區塊鏈安全分析報告

  及2011年至2018年發生的安全事件數量統計:

白帽匯安全研究院:區塊鏈安全分析報告

  2011年至2018年發生的安全事件所造成的損失折線圖:

白帽匯安全研究院:區塊鏈安全分析報告

  我們透過對歷史的安全事件影響分析得知,目前近80%的攻擊損失都是基於業務層面的攻擊所造成的,其損失額度從2017年開始呈現出指數上升的趨勢,截止到2018年第一季度,所暴露的安全事件就已經造成了8.1億美元的損失,按照歷史的攻擊趨勢,相信以後此類攻擊事件會越來越嚴重。

  以下是2011年至2018年所發生安全事件的詳細說明。

  2.3.1 區塊鏈自身安全事件

白帽匯安全研究院:區塊鏈安全分析報告

  2.3.2 智慧合約安全事件

白帽匯安全研究院:區塊鏈安全分析報告

  2.3.3 交易平臺安全事件

白帽匯安全研究院:區塊鏈安全分析報告

  2.3.4 使用者自身安全事件

白帽匯安全研究院:區塊鏈安全分析報告

  2.3.5 其他安全事件

白帽匯安全研究院:區塊鏈安全分析報告

  三 區塊鏈攻擊物件分析

  基於目前世界各國對加密貨幣的態度不盡一致,在區塊鏈貨幣領域駭客幾乎可以為所欲為,尚處於無法監管的狀態,所以思考已經發生或者可能發生的安全問題對於區塊鏈應用來說是必不可少的。

  就目前區塊鏈的特徵,我們進行了如下分層:應用服務層、中間協議層和基礎網路。並基於以下層面出發,針對每層中各個“攻擊面”去分析已發生或者可能發生的安全風險:

白帽匯安全研究院:區塊鏈安全分析報告

  一般來說,區塊鏈系統由資料層、網路層、共識層、激勵層、合約層和業務服務層組成。其中,資料層封裝了底層資料塊區以及相關的資料加密和時間戳等技術;網路層則包括分散式組網機制、資料傳播機制和資料驗證機制等;共識層主要封裝網路節點和各類共識演算法;激勵層將經濟因素整合到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;合約層主要封裝各類指令碼、演算法和智慧合約,是區塊鏈可程式設計特性的基礎;業務層則封裝了區塊鏈的各種應用場景和案例。

  該模型中,基於時間戳的鏈式塊區結構、分散式節點的共識機制、基於共識算力的經濟激勵和靈活可程式設計的智慧合約是區塊鏈技術最具代表性的創新點。經過對區塊鏈技術的各個層面進行縱向剖析,並針對上述層次的不同“角色”進行安全性分析後,我們發現目前攻擊者通常從兩個點出發:

  1. 區塊鏈中的中心化物件:交易平臺、線上錢包等。

  2. 區塊鏈中的去中心化物件:智慧合約、共識機制等。

  我們根據攻擊者主要採用的攻擊方式、物件和等級,總結如下表所示:

白帽匯安全研究院:區塊鏈安全分析報告

  3.1 資料層

  3.1.1 區塊資料

  簡要

  基於區塊鏈技術本身的特性,區塊資料是分佈在多個節點上的鏈式結構資料,節點與節點之間的“互動”將記錄在區塊中,然後在各個節點之間同步完整的區塊資料,每個節點都有自己的一份區塊資料,單一或少部分的節點的區塊資料自行或被篡改,都無法影響整個區塊鏈的執行,依賴這種去中心化的架構,可以很容易做到資料防篡改。

  風險

  針對區塊資料的安全風險,我們分析總結了以下攻擊方式:

  惡意資訊攻擊

  在區塊鏈中寫入惡意資訊,例如病毒特徵碼、政治敏感話題等。藉助區塊鏈資料不可刪除的特性,資訊被寫入區塊鏈後很難刪除。若區塊鏈中出現惡意資訊,將會遭到防毒軟體、政治敏感等多方面的問題。

  資源濫用攻擊

  隨著時間的推移,區塊資料可能會爆炸式增長(節點之間惡意頻繁互動),也可能會呈線性增長,這主要取決於此區塊鏈應用的設計,依賴現有的計算機儲存技術,區塊資料若發生爆炸式增長,可能導致節點無法容納又或者使區塊鏈運轉緩慢,從而使穩定執行的節點越來越少,節點越少,則越趨於中心化,引發區塊鏈危機。

  不過目前主流的區塊鏈應用譬如BTC、ETH等,都完好的解決了此問題,比特幣的解決方法為固定區塊大小為1M,防止區塊過度膨脹,區塊鏈大小呈線性增長,即使到2029年區塊資料也只有1T左右,但是此解決方案並不優雅,限制區塊大小的同時也給比特幣帶來了交易時間長的詬病,目前比特幣的一筆交易需要確認數小時。

  攻擊場景距離:若鏈中沒有設計相應的操作限制,攻擊者可以透過傳送大量的垃圾資訊來堵塞整個區塊鏈,使區塊鏈中真正的資訊遲遲得不到處理,又或者使區塊鏈中的儲存節點超負荷執行。

  案例

  2017年2月份,以太坊的Ropsten測試鏈就遭到了一次惡意攻擊,攻擊者發動了千萬級別的垃圾交易資訊,直接阻塞的網路的正常執行。

  此案例雖然發生在測試網路上,並沒有使以太坊網路受到實質性的影響,但也給我們敲響了警鐘,區塊鏈的應用目前還處於萌芽階段,主流的應用不存在此問題理所當然,但不代表新的區塊鏈應用不會存在這類問題,這都是區塊鏈開發者需要注意的。

  2017年在EuskalHack安全會議上,有安全研究者提出了基於區塊鏈模式的botnet網路,利用區塊鏈網路進行C&C的惡意指令釋出的並且提供了POC[17]。

  3.1.2 簽名與加密方式

  簡要

  密碼學是保證區塊鏈的安全性和不可篡改性的關鍵,而且區塊鏈技術大量依賴了密碼學的研究成果,為區塊鏈的資訊完整性、認證性和不可抵賴性提供了關鍵保障。

  風險

  加密技術作為一個區塊鏈整體的支柱,其安全性顯得尤為重要,例如前些年所流行的MD5和sha1摘要演算法,目前已經證明安全性不足,現在已經不能被商用。

  所以,公認的高強度加密演算法在經過長時間的各方面實踐與論證後,已被大家所認可,但不代表其不存在漏洞,不可被破解。

  如比特幣目前大量使用的是sha256演算法,到目前為止,此演算法還是安全的,雖然有人依然持有質疑,但是並沒有任何直接的公開證據表明此演算法存在漏洞。

  然而,比特幣所使用的演算法也並不是毫無瑕疵,至少目前引發了以下問題:

  1. sha256演算法對應的ASIC礦機以及礦池的出現,打破了中本聰最初設計“一CPU一票”的理念,淘汰了普通GPU挖礦,全網的節點逐漸減少,逐漸趨於中心化。

  2. 假名制,透過公共賬本你可以檢視任意賬戶的所有交易資訊,這顯然是和隱私保護背道而馳的,而且在日常的網際網路生活中很難不在網際網路中留下痕跡,例如:在論壇中釋出交易資訊,錢包地址就與論壇賬戶產生了對應關係。門羅幣在此方面則優於比特幣。

  所以,在設計區塊鏈應用的時候,務必要對加密方式慎重選擇。對於目前主流的簽名方式[11]有如下:

白帽匯安全研究院:區塊鏈安全分析報告

  針對加密方式的安全風險,我們分析總結了以下攻擊方式:

  窮舉攻擊

  此類攻擊方式主要作用於雜湊函式中,且幾乎所有雜湊函式或多或少都受此攻擊方式影響,而且其影響程度與函式本身無關,而是與生成的hash長度有關,主要是一個機率論的問題,其中最典型的的方式是基於生日悖論的“生日攻擊”。

  生日悖論:如果一個房間裡有23個或23個以上的人,那麼至少有兩個人的生日相同的機率要大於50%。這就意味著在一個典型的標準小學班級(30人)中,存在兩人生日相同的可能性更高。對於60或者更多的人,這種機率要大於99%。

  碰撞攻擊

  此種攻擊方式主要作用於雜湊函式中,比較典型的案例是“md5摘要演算法”和“sha1摘要演算法”。

  它的攻擊原理是透過尋找演算法的弱點,瓦解它的強抗碰撞性這一特性,使得雜湊函式原本要在相當長一段時間才能尋找到兩個值不同hash相同的值的特性被弱化,攻擊者能在較短的時間能尋找到值不同但hash相同的兩個值。

  長度擴充套件攻擊

  此種攻擊方式主要作用於雜湊函式中,準確的說是基於Merkle–Damg?rd構造的摘要演算法。其原理是透過演算法弱點,在已知密文hash和密文長度的情況下,推匯出密文與另一訊息拼接後計算出來的hash。

  後門攻擊

  此種攻擊方式作用於所有開源加密演算法庫中,RSA演算法是區塊鏈中身份驗證的基石,RSA演算法本身是沒問題的,但是在實際情況中,人們可能更多的是選擇別人已經寫好的“輪子”直接拿來用,而不是自己再去實現一套加密函式。

  這就帶來了一個問題,在別人已經寫好的“輪子”中,可能被安插後門,比較典型的案例是:NSA在RSA演算法中安插後門,使得攻擊者能直接透過公鑰算出私鑰。

  量子攻擊[3]

  此種攻擊方式作用於大部分密碼學演算法。目前所有的加密演算法以及摘要演算法,其安全強度取決於它被窮舉的時間複雜度,這使得依賴現有的計算機的計算能力,針對比較強的加密演算法要對它進行暴力破解是非常難的,但是量子計算機擁有傳統計算機無可比擬的算力,使得時間複雜度大大降低,於是,其安全強度便可能被瓦解,此問題是比特幣社群中一直在討論的問題。

  案例

  目前暫無實際攻擊曝光,但在某些層面可能存在致命安全隱患

  3.2 網路層

  3.2.1 P2P網路

  簡要

  區塊鏈的資訊傳播主要依賴於其點對點傳輸的特性,採用P2P[4]式的網路架構,尋找適宜的節點進行資訊傳播,當建立一個或多個連線後,節點將一條包含自身IP地址訊息傳送給其相鄰節點。相鄰節點再將此訊息依次轉發給它們各自的相鄰節點,從而保證節點資訊被多個節點所接收、保證連線更穩定。

  風險

  P2P網路依賴附近的節點來進行資訊傳輸必須要互相暴露對方的IP,若網路中存在一個攻擊者,就很容易給其他節點帶來安全威脅,中心化的網路不會太過擔心此問題的原因是組織的網路中心的安全性都是極高的,即使暴露也不會有太大問題。

  而去中心化的公鏈網路節點可能是普通家庭PC,可能是雲伺服器等等,其安全性必然是參差不齊的,其中必有安全性較差的節點,對其進行攻擊將直接威脅節點的安全。

  針對P2P網路的安全風險,我們分析總結了以下攻擊方式:

  日食攻擊

  日食攻擊[5]是其他節點實施的網路層面攻擊,其攻擊手段是囤積和霸佔受害者的點對點連線間隙,將該節點保留在一個隔離的網路中。這種型別的攻擊旨在阻止最新的區塊鏈資訊進入到日食節點,從而隔離節點。

  竊聽攻擊

  攻擊者可以使用這種攻擊來讓區塊鏈中的使用者標識與ip關聯起來,在某些情況下甚至可以追溯到使用者的家庭地址。

  以比特幣為例,當你在比特幣網路上執行交易時,你的比特幣客戶端通常透過連線到一組八臺伺服器來加入網路,這個初始連線集合就是你的入口節點,每個使用者都會獲得一組唯一的入口節點。

  當你的錢包傳送比特幣完成購買時,入口節點將交易轉交給比特幣網路的其餘部分,研究人員發現,識別一組一口節點意味著識別一個特定的比特幣客戶端,以此來推匯出某個使用者。

  那麼,攻擊者要做的是與比特幣伺服器建立多個連線,連線後,攻擊者必須聽取客戶端與服務端的初始連線,這會洩露客戶端的ip地址。

  隨著交易流經網路,它們將會與客戶端的入口節點相關聯,如果匹配,那麼攻擊者就知道這是來自一個特定客戶端的交易。

  BGP劫持攻擊

  邊界閘道器協議(BGP)是因特網的關鍵組成部分,用於確定路由路徑。BGP劫持,即利用BGP操縱因特網路由路徑,最近幾年中已經變得越來越頻繁。 無論是網路犯罪分子還是政府,都可以利用這種技術來達到自己的目的,如誤導和攔截流量等,目前在區塊鏈網路中節點的流量一但被接管又能對整個網路造成巨大的影響,如破壞共識機制,交易等各種資訊。而對於BGP劫持攻擊中,目前有安全研究者已經證明該攻擊的概念可行性,從2015年11月5日至2016年11月15日透過對節點網路的分析統計目前大多數比特幣節點都託管在少數特定的幾個網際網路服務提供商(ISPs),而60%的比特幣連線都是在這幾個ISP。所以這幾個ISP可以看到60%的比特幣流量,所以也能夠做到對目前比特幣網路的流量控制權,研究者透過劫持的場景驗證了至少如下兩個攻擊概念是可行的,同時給出了驗證的程式碼[8]。

  分割攻擊

  攻擊者可以利用BGP劫持來講區塊鏈網路劃分成兩個或多個不相交的網路,此時的區塊鏈會分叉為兩條或多條並行鏈。攻擊停止後,區塊鏈會重新統一為一條鏈,以最長的鏈為主鏈,其他的鏈將被廢棄,其上的交易、獎勵等全部無效。

  攻擊場景舉例:

  1) 首先,攻擊者發動BGP劫持,將網路分割為兩部分,一個大網路、一個小網路。

  2) 在小網路中,攻擊者釋出交易賣出自己全部的加密貨幣,並兌換為法幣。

  3) 經過小網路的“全網確認”,這筆交易生效,攻擊者獲得等值的法幣。

  4) 攻擊者釋放BGP劫持,大網路與小網路互通,小網路上的一切交易被大網路否定,攻擊者的加密貨幣全部迴歸到賬戶,而交易得來的法幣,依然還在攻擊者手中,完成獲利。

  延遲攻擊

  攻擊者可以利用BGP劫持來延遲目標的區塊更新,而且不被發現。因為它是基於中間人修改目標請求區塊的資料來做到的:在目標請求獲取最新區塊的時候,將它的這一請求修改為獲取舊區塊的請求,使得目標獲得較舊的塊。

  攻擊場景舉例:

  1) 攻擊者修改礦工獲取最新塊請求

  2) 礦工無法獲取到新區塊

  3) 礦工損失算力以及獎勵機會

  節點客戶端漏洞

  攻擊者在內網或者外網利用各種手段譬如漏洞掃描,0day漏洞利用等技術,對節點客戶端進行攻擊,此類攻擊主要針對客戶端自身軟體可能存在安全漏洞進行利用,獲取節點的控制許可權。

  拒絕服務攻擊

  透過大流量,或者漏洞的方式攻擊P2P網路中的節點,使網路中部分節點網路癱瘓,節點癱瘓意味著鏈中總算力受損,使得其更容易遭受51%攻擊,而目前進行拒絕服務攻擊成本也較低,大量的攻擊工具平臺能輕易在黑市購買用於攻擊。

  案例

  2018年3月22日,閃電網路[10]節點遭受DDOS攻擊,導致大約200個節點離線,從大約1,050個節點降到了870個。

  3.2.2 廣播機制

  簡要

  在區塊鏈中,節點是與節點互相連線的。當某節點接入到區塊鏈網路後,單個節點會與其他節點建立連線。此時該節點就具備了廣播資訊的資格,在將資訊傳播給其他節點後,其他節點會驗證此資訊是否為有效的資訊,確認無誤後再繼續向其他節點廣播。

  風險

  針對廣播機制的安全風險,我們分析總結了以下攻擊方式:

  雙重支出攻擊

  又稱雙花問題[9],指的是一個代幣花費在多筆交易中的攻擊,它的實現方法主要有以下幾種。

  1. 種族攻擊:在面對0確認的交易便立刻進行付款的商家可能會遭遇此攻擊。欺詐者直接向商家傳送支付給商家的交易,併傳送衝突的交易,將代幣投入自己到網路的其餘部分。第二個衝突的交易很可能會被開採出來,並被區塊鏈節點認為是真的,於是付款交易作廢。

  2. 芬尼攻擊:當接受0確認的付款時可能會遭遇此攻擊。假設攻擊者偶爾產生資料塊。在他生成的每個區塊中,他包括從他控制的地址A到地址B的轉移。為了欺騙你,當他生成一個塊時,他不會廣播它。相反,他開啟您的商店網頁,並使用地址A向您的地址C付款。您可能會花費幾秒鐘的時間尋找雙重花費,然後轉讓商品。接著他廣播他之前的區塊,他的交易將優先於你的交易,於是付款交易作廢。

  3. Vector76攻擊:也被稱為單一確認攻擊,是種族攻擊和芬尼攻擊的組合,因此即使有一次確認的交易仍然可以逆轉。對於種族攻擊,相同的保護措施顯然降低了發生這種情況的風險。 值得注意的是,成功的攻擊會使攻擊者花費一個塊,他們需要透過不傳播它來“犧牲”一個塊,而是僅將其轉讓給被攻擊的節點。

  4. 替代歷史攻擊:即使商家等待一些確認,這種攻擊也有機會成功,但風險較高。攻擊者向商家提交支付的交易,同時私下挖掘其中包含欺詐性雙重支出交易的分支。等待n次確認後,商家傳送產品。如果攻擊者此時碰巧找到n個以上的區塊,他就會釋放他的分支並重新獲得他的硬幣。

  5. 51%攻擊:如果攻擊者控制全網算力的一半以上,則前面提到的替代歷史攻擊有100%的機率成功。由於攻擊者可以比網路的其他部分更快地生成塊,所以他可以堅持自己的私有分支,直到它比誠實節點網路建立的分支更長,它將代替主鏈。

  交易延展性攻擊

  延展性攻擊者偵聽P2P網路中的交易,利用交易簽名演算法的特徵修改原交易中的input 簽名, 生成擁有一樣input和output的新交易,然後廣播到網路中形成雙花,這樣原來的交易就可能有一定的機率不能被確認,在虛擬貨幣交易的情況下,它可以被用來進行二次存款或雙重提現。

  案例

  1. 2014年8月,線上黑市Silk Road 2遭遇交易延展性攻擊,部分比特幣被盜,損失約260萬美元

  2. 2013年11月,GHash.io礦池對賭博網站BetCoin Dice進行多次付款欺詐,實施雙重支出攻擊

  3.2.3 驗證機制

  簡要

  區塊鏈的執行為了維持其資料的有效性與真實性,必須要有相應的驗證機制來限制節點必須將真實資訊寫入區塊中。

  風險

  針對驗證機制的安全風險,我們分析總結了以下攻擊方式:

  驗證繞過

  驗證機制的程式碼是區塊鏈應用的核心之一,一旦出現問題將直接導致區塊鏈的資料混亂,而且核心程式碼的修改與升級都涉及到區塊鏈分叉的問題,所以驗證機制的嚴謹性就顯得尤為重要。

  必須要結合驗證機制程式碼的語言特性來進行大量的白盒審計或是模糊測試,來保證驗證機制的不可繞過。

  案例

  比特幣無限造幣漏洞:2010年8月15日,有人在比特幣區塊鏈的第74638塊上發現了一條讓人驚愕的交易,這筆交易裡竟然出現了184,467,440,737.09551616個比特幣,其中各有922億個比特幣被髮送到兩個比特幣地址。

  這次攻擊的根本原因則是比特幣的驗證機制中存在大整數溢位漏洞,由於大整數溢位為負數,網路各個節點對駭客的交易均驗證透過,導致了比特幣區塊鏈中憑空出現了大量比特幣。

  3.3 激勵層

  3.3.1 獎勵機制

  簡要

  激勵層目的是提供一定的激勵措施鼓勵節點參與區塊鏈的安全驗證工作。區塊鏈的安全性依賴於眾多節點的參與。例如比特幣區塊鏈的安全性是基於眾多節點參與工作量證明帶來的巨大的計算量,使得攻擊者無法提供更高的計算量。節點的驗證過程通常需要耗費的計算資源和電能。為了鼓勵節點參與,區塊鏈通常會採用虛擬貨幣的形式獎勵參與者,目前比特幣、萊特幣、以太幣都是這種機制的產物。以比特幣為例,獎勵機制包括了兩種,第一種是新區快產生後系統生成的比特幣,第二種是每筆交易會扣除萬分之一比特幣作為手續費。在前期,每一個區塊的建立者都會獲得一定數量的比特幣,創世區塊提供50個比特幣,之後隨著系統中比特幣數量的持續增加,這種模式提供的比特幣數量會持續減半。當比特幣總量達到2100萬時,新產生的區塊將不再生成比特幣。這時主要依靠第二種手續費作為獎勵機制。

  風險

  獎勵不符合市場預期

  區塊鏈專案需要順應市場自動適當調整獎勵,而不是一味降低。若在區塊鏈專案獎勵機制中,當節點們的工作成本小於和接近於收益的時候,他們往往會選擇不再為這個區塊鏈工作,從而很容易導致中心化問題。

  攻擊場景:

  1. 比特幣區塊鏈上的被全部開採完畢

  2. 礦工獎勵驟降,大量礦工下鏈

  3. 攻擊者以較低成本發動51%攻擊

  案例

  目前暫無實際攻擊曝光,但在某些層面可能存在致命安全隱患

  3.4 共識層

  3.4.1 共識機制

  簡要

  共識機制賦予了區塊鏈技術靈魂,使它與其他的P2P技術差異化。

  目前常用的共識機制有PoW(工作量證明機制)、PoS(權益證明機制)、DPoS(股份授權證明機制),然而他們都不是完美的,都有各自的優點與缺點。對於各種共識機制的對比[11]我們列出如下列表進行說明:

白帽匯安全研究院:區塊鏈安全分析報告

   風險

  針對共識機制的安全風險,我們分析總結了以下攻擊方式以及適用範圍:  

白帽匯安全研究院:區塊鏈安全分析報告

  短距離攻擊

  此類攻擊比較典型的是“賄賂攻擊”,此攻擊主要影響PoS共識機制,賄賂攻擊流程如下:

  1) 攻擊者購買某個商品或服務。

  2) 商戶開始等待網路確認這筆交易。

  3) 此時,攻擊者開始在網路中首次宣稱,對目前相對最長的不包含這次交易的主鏈進行獎勵。

  4) 當主鏈足夠長時,攻擊者開始放出更大的獎勵,獎勵那些在包含此次交易的鏈條中挖礦的礦工。

  5) 六次確認達成後,放棄獎勵。

  6) 貨物到手,同時放棄攻擊者選中的鏈條。

  因此,只要此次賄賂攻擊的成本小於貨物或者服務費用,此次攻擊就是成功的。相比之下,PoW 機制中賄賂攻擊就需要賄賂大多數礦工,因此成本極高,難以實現。

  長距離攻擊

  此類攻擊比較典型的是“51%”攻擊。在PoS 中,產生每個 Block 的速度相對 PoW 快了很多。因此,少數不懷好意的節點會想著把整個區塊鏈共識賬本全部重寫。這在 PoW 中是經典的 51% 問題,即:當某一個節點控制了 51% 及以上算力,就有能力篡改賬本,但達到 51% 算力是件極其困難的事情。而在 PoS 中缺乏對算力的約束,那麼就存在潛在可能篡改賬本。

  幣齡累計攻擊

  在最早的 Peercoin 版本中,挖礦難度不僅與當前賬戶餘額有關,也與每個幣的持幣時間掛鉤。這就導致,部分節點在等待足夠長時間後,就有能力利用 Age 的增加來控制整個網路,產生非常顯著的影響。

  預計算攻擊

  當 PoS 中的某一節點佔有了一定量的算力後,PoS 中佔有特定算力的節點,就有能力透過控制 Hprev 來使自己所在算力範圍有能力去計算 Hnext。

  女巫攻擊

  又稱Sybil攻擊,在Sybil攻擊中,攻擊者透過建立大量的假名標識來破壞對等網路的信譽系統,使用它們獲得不成比例的大的影響。對等網路上的實體是能夠訪問本地資源的一塊軟體。實體透過呈現身份在網路上通告自身。 多於一個標識可以對應於單個實體。

  換句話說,身份到實體的對映是多對一的。對等網路中的實體為了冗餘,資源共享,可靠性和完整性而使用多個標識。

  在對等網路中,身份用作抽象,使得遠端實體可以知道身份而不必知道身份與本地實體的對應關係。

  預設情況下,通常假定每個不同的標識對應於不同的本地實體。實際上,許多身份可以對應於相同的本地實體。

  對手可以向對等網路呈現多個身份,以便出現並充當多個不同的節點。因此,對手可能能夠獲得對網路的不成比例的控制水平,例如透過影響投票結果。

  案例

  1. 2016年8月份,基於以太坊的數字貨幣Krypton遭受來自一個名為“51% Crew”的組織透過租用Nicehash的算力,進行51%攻擊,導致該區塊鏈損失約21,465 KR的代幣。

  3.5 合約層

  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 業務層

  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%的算力在中國礦工手中。

白帽匯安全研究院:區塊鏈安全分析報告
(以上資料來至)

  風險

  針對礦池平臺的安全風險以及礦池本身在區塊鏈網路的特殊角色,我們分析總結了以下影響區塊鏈網路的攻擊方式:

  算力偽造攻擊

  礦池會透過某種特定的工作量證明檢驗演算法來檢驗當前礦工的實際算力,但是在演算法的實現上可能不一定完美無瑕,當演算法的實現上存在某種漏洞可以虛報算力時,會給礦池平臺帶來很大的經濟損失。

  因為當前礦工實際上並沒有給礦池貢獻那麼高的算力,卻拿了與算力相當的獎勵分配,對於礦池中的其他礦工來說極其不公平。

  場景:駭客透過尋找礦池算力檢驗演算法的漏洞來虛報算力,然後獲取到與實際算力不想當的超額獎勵。

  扣塊攻擊

  也叫做藏塊攻擊。在礦工參與礦池進行挖礦的過程中,只要有一個礦工解題成功,題解會上交給礦池,整個礦池所有的礦工便會共享這次的解題成果,並按照算力貢獻大小來分配獎勵。

  但在實際情況中,礦池中的礦工可以不遵守規則,在得到題解後不回傳給礦池,而是選擇私吞,在這種情況下就會造成礦池利益的極大損失。

  場景:礦池中的某節點在挖到區塊之後並不上交給礦池,而是選擇“私吞”,這樣既能享受礦池所帶來的福利,又能從挖礦中獲得利益。

  自私採礦攻擊

  自私採礦攻擊(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還能搜到。

白帽匯安全研究院:區塊鏈安全分析報告

白帽匯安全研究院:區塊鏈安全分析報告

  四 區塊鏈安全解決方案

  基於上述區塊鏈產業歷史的攻擊案例,結合區塊鏈技術安全特點和安全威脅,白帽匯安全研究院建議從多個維度去進行綜合防護,同時對於產業生態的安全需要區塊鏈產業與區塊鏈安全企業來共同提高區塊鏈產業的安全性。

  區塊鏈產業安全主要圍繞交易平臺安全、礦池與礦機安全、使用者安全、區塊鏈底層安全、區塊鏈業務安全。從基礎安全建設、安全測試、安全審計、安全監測、應急響應,同時建立並完善區塊鏈安全的規範、提高區塊鏈產業人員安全意識多個方面來進行。最終提高區塊鏈產業生態安全性。

  4.1 區塊鏈底層安全

  區塊鏈作為底層技術基礎,支撐著整個系統。如底層出現安全問題,必將導致依託於此的上層均受到影響。其區塊鏈底層的安全研究與防範變得極為重要。

  在系統設計之初就應加入安全性設計,整個系統的安全防範、安全的處理在最初就應考慮。

  區塊鏈底層安全主要由區塊鏈專案的建立者與區塊鏈安全企業進行配合,來對其區塊鏈整個系統進行安全方面的提高。

  4.1.1 資料層

  資料是區塊鏈技術的最基本內容,為了防止上述針對資料的的攻擊,主要從資料儲存與加密演算法兩個方面來進行安全改進。

  資訊儲存方面,建議對使用者輸入的資料(如備註資訊)等內容進行過濾檢查機制,防止被惡意利用或濫用。另外一方面,加密演算法和簽名機制出於安全上的考慮,不要輕易自寫加密演算法,建議使用成熟且可靠的加密演算法。防止遭遇到演算法漏洞的攻擊和安全風險。

  4.1.2 網路層

  區塊鏈與網際網路是密不可分的,針對網路層的安全防禦主要從P2P網路安全、網路驗證機制兩個方面來提升安全性。

  可透過如下幾點來進行防範:

  ● 在網路的傳輸過程中,使用可靠的加密演算法進行傳輸,防止惡意攻擊者對節點網路進行流量竊取或劫持。如開啟Jsonrpc的節點強制使用https傳輸,而不是HTTP協議進行傳輸。

  ● 加強網路資料中傳輸的有效性、合理性、安全性進行驗證,防止出現整型溢位等情況導致出現的資料錯誤。

  ● 節點網路安全性加強。重要操作和資訊客戶端節點做必要的驗證。

  4.2 區塊鏈業務安全

  區塊鏈2.0以後,出現智慧合約等新的理念,使得區塊鏈的擴充性、便捷性極大增強。隨之而來的安全漏洞也會越來越多。如上述提到的經典The Dao攻擊事件。目前對於業務層面的安全主要透過安全審計來進行解決。

  對於業務層的安全,主要依靠區塊鏈安全企業開發相應安全產品或進行安全技術支撐,與區塊鏈發起者建立合作等,從而避免或減少業務層上的攻擊事件發生。

  4.2.1 安全審計

  針對歷史案例以及可能存在的業務層安全問題,在正式釋出之前進行安全審計工作尤為必要。

  開發業務層程式碼安全問題,白帽匯安全研究院有如下幾點安全建議和注意事項提示:

  ● 儘量避免外部呼叫

  ● 仔細權衡再發生重要操作時的程式碼邏輯,避免邏輯陷阱

  ● 處理外部呼叫錯誤

  ● 不要假設你知道外部呼叫的控制流程

  ● 標記不受信任的業務內容

  ● 正確的使用斷言

  ● 小心整數除法的四捨五入

  ● 不要假設業務建立時餘額為零

  ● 記住鏈上的資料是公開的

  ● 在雙方或多方參與的業務應用中,參與者可能會“離線離線”後不再返回

  ● 明確標明函式和狀態變數的可見性

  ● 將程式鎖定到特定的編譯器版本

  ● 小心分母為零

  ● 區分函式和事件

  ● 避免死迴圈

  ● 升級有問題的業務層程式碼

  4.3 交易平臺安全

  交易平臺主要提供線上交易,形式主要為網站和App的形式。針對交易平臺的安全性主要更加偏傳統的安全防護。對於交易平臺的安全性提高則主要由交易平臺和安全企業或交易平臺自建的網路安全部門。

  白帽匯安全研究院針對區塊鏈交易平臺給出如下安全解決方案與建議:

  ● 再建設之初就設計網路安全架構。並隨著發展不斷調整

  ● 網路安全隔離策略,僅對需要對外開放服務的埠進行開放

  ● 選擇使用具備高防護能力的IDC廠商,提高攻擊者發起DDOS攻擊的成本

  ● 線上業務系統需經過嚴格的安全測試,安全審計

  ● 對交易平臺的所有資產進行實時的監控,對漏洞進行安全管理

  ● 建立安全預警機制,加強先於駭客發現安全威脅的能力

  ● 安全應急響應機制,出現安全問題第一時間進行處理

  ● 定期的安全測試、安全檢查

  ● 對交易平臺企業內部的安全管理

  ● 資料加密儲存,防止資料被竊取後被濫用或使使用者錢包或隱私資訊被洩露而遭受損失情況

  ● 建立安全制度管理

  ● 提高交易平臺企業內部人員的安全意識。建議定期對員工進行安全培訓

  ● 與安全企業建立合作關係或建立SRC(安全應急響應中心)

  ● 給交易平臺使用者進行安全引導

  4.4 礦池與礦機安全

  4.4.1 礦池平臺安全

  目前礦池平臺聚集了大量的礦工,礦池平臺出現安全問題,影響也將巨大。目前礦池平臺也主要提供服務為主。白帽匯安全研究院針對礦池平臺給出如下安全解決方案與建議:

  ● 在建設之初就設計網路安全架構,並隨著發展不斷調整

  ● 網路安全隔離策略,僅對需要對外開放服務的埠進行開放

  ● 選擇使用具備高防護能力的IDC廠商,提高攻擊者發起DDOS攻擊的成本

  ● 建立安全預警機制,加強先於駭客發現安全威脅的能力

  ● 安全應急響應機制,出現安全問題第一時間進行處理

  ● 定期的安全測試、安全檢查

  ● 對礦池平臺企業內部的安全管理

  ● 資料加密儲存,防止資料被竊取後被濫用或使使用者錢包或隱私資訊被洩露而遭受損失情況

  ● 建立安全制度管理

  ● 提高交易平臺企業內部人員的安全意識。建議定期對員工進行安全培訓

  ● 與安全企業建立合作關係或建立SRC(安全應急響應中心)

  4.4.2 礦機安全

  礦機系統的安全主要物件為礦機生產商和礦工。礦機生產商應與安全企業進行合作,提高礦機系統的安全性。礦工則應該保護自己的礦機不被入侵。

  白帽匯安全研究院建議:

  ● 礦機生產商應對礦機系統經過模糊測試和程式碼審計,確保系統安全性

  ● 礦機生產商生產的系統要求礦工必須修改預設賬戶,提高安全性

  ● 礦工應選擇沒有漏洞的礦機系統,避免自己使用的礦機被入侵,以免被攻擊者惡意利用

  ● 礦工應設定安全複雜的密碼

  4.5 使用者安全

  白帽匯安全研究院對使用者(交易平臺使用者、加密貨幣使用者)的建議如下:

  ● 礦機生產商應對礦機系統經過模糊測試和程式碼審計,確保系統安全性

  ● 礦機生產商生產的系統要求礦工必須修改預設賬戶,提高安全性

  ● 礦工應選擇沒有漏洞的礦機系統,避免自己使用的礦機被入侵,以免被攻擊者惡意利用

  ● 礦工應設定安全複雜的密碼

  4.6 安全企業責任

  網路安全企業可以貫穿區塊鏈生態產業,從區塊鏈底層到業務層,再到交易平臺,以及礦池、礦工。目前,安全還處再初級發展階段,安全企業則應該主動發現更多的安全問題,幫

  助區塊鏈廠商、交易平臺、礦池平臺、礦工系統提高安全。為區塊鏈產業生態安全做出巨大貢獻。

  除此之外,還應該建立區塊鏈威脅情報,及時發現安全問題,及時做出響應。

  五 總結與展望

  區塊鏈技術的底層機制、演算法是區塊鏈最核心的地方,是保障區塊鏈穩定執行的根本,也是區塊鏈開發者最關心的地方。目前,開發者將大量精力投入到了比較底層的演算法安全上,使得區塊鏈技術看上去難以撼動。

  然而,透過近段時間的安全事件不難發現,安全問題越來越趨向於使用者、平臺層面,區塊鏈的安全問題已經延伸到了傳統的網路安全、基礎設施、移動資訊保安等問題。所以在談及區塊鏈安全的時候,不應該僅僅侷限於區塊鏈本身,它的使用者以及衍生的東西都需要我們的重點關注。

  目前基於國家層面的管控措施也是未來值得研究的一個方向,雖然世界各國對加密貨幣,以及基於區塊鏈相關的ICO的態度不盡一致,但是目前仍有大量的資金投入在虛擬貨幣市場,一個安全問題將可能導致數百億的資金損失,甚至影響國家安定,出於避免鉅額資金損失導致社會不穩定等因素的考慮,未來基於國家層面對於資金的保護、風險監控和預警,都是值得討論的話題,雖然區塊鏈本身是去中心化的技術,但是可以預見到,隨著區塊鏈技術的落地,其必將被應用到目前一些傳統基礎設施的技術中去,所以,對於區塊鏈的安全研究是更加值得重視與跟蹤的。

  總體來說,區塊鏈技術和其安全性問題仍會持續很長一段時間,主要原因:其一,全新的解決方案會進一步加快區塊鏈的安全重建,創新技術和服務得到認可,進一步增強產業活力,提升技術價值;其二:隨著生產生活逐漸向數字化,網聯化和智慧化轉型,許多全新的變革性技術(如區塊鏈)所打造的安全生態體系和技術將成為大勢所趨;其三,由新技術衍生的產品安全技術服務範疇更加寬泛,將會催生更加繁榮的安全服務市場。

  最終,區塊鏈新興技術和產業的有機融合,必將在未來產生不可估量的價值。

  六 關於我們

  白帽匯安全研究院隸屬於北京華順信安科技有限公司。研究院擁有一支從事網路安全研究的資深技術團隊,致力於網路資訊保安領域的深入探究,研究方向為網路空間測繪、安全大資料、威脅情報、態勢感知、區塊鏈安全等前沿安全領域。

  七 參考來源

  [1] Block chain

  [2] Luu, L., Chu, D.H., Olickel, H., Saxena, P., Hobor, A.: Making smart contracts smarter. In: ACM CCS (2016).

  [3] Quantum attacks on Bitcoin, and how to protect against them

  [4] P2P

  [5] Eclipse Attacks on Bitcoin’s Peer-to-Peer Network

  [6] Hijacking Bitcoin:Routing Attacks on Cryptocurrencies

  [7] BGP hijacking

  [8] Hijack-btc test code

  [9] 雙重支付 雙重支付

  [10] 《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》

  [11] 房衛東等.資訊保安學術報《區塊鏈的網路安全威脅與對策》

  [12] C. Lin and T. C. Liao, “A survey of blockchain security issues and challenges,” Int. J. Netw. Secur., vol. 19, no. 5, pp. 653–659, 2017.

  [13] Atzei, N., Bartoletti, M., Cimoli, T.: A survey of attacks on Ethereum smart contracts.Cryptology ePrint Archive (2016).

  [14] Hacking Blockchain

  [15] 0day漏洞 0DAY%E6%BC%8F%E6%B4%9E

  [16] Ethereum Smart Contract Security Best Practices

  [17] A PoC of a Blockchain-based C&C

  [18] Smart Contract Best Practices,
本文來自“白帽匯安全研究院”,原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17066424/viewspace-2154978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章