1. <small id="rw2jk"></small>
      網絡安全 頻道

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

        前 言

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

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

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

        為全面了解和推動區塊鏈技術和產業發展,解決區塊鏈目前面臨的安全問題,“白帽匯安全研究院”采用自主創新技術,根據區塊鏈的數據層、網絡層、共識層、擴展層和業務層的不同應用場景下的主流攻擊事件進行探索,分析和總結,提出了安全加固、滲透測試、仿冒監測和合約審計四類安全解決方案,與國家安全機構、金融企業、信息安全部門、互聯網巨頭等建立深度合作關系,多項研究成果成功應用于漏洞預警和產品服務,最終整合編纂形成了《區塊鏈產業安全分析報告》,并希望以此契機建立起安全可靠的區塊鏈技術安全生態體系。

        目錄

        一、區塊鏈概述
        二、區塊鏈安全性
        三、區塊鏈攻擊對象分析
        四、區塊鏈安全解決方案
        五、總結與展望
        六、關于我們
        七、參考來源

            一 區塊鏈概述

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

      白帽匯安全研究院:區塊鏈安全分析報告
      (以上數據來至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還能搜到。

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

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

        四 區塊鏈安全解決方案

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

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

        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 https://en.wikipedia.org/wiki/Blockchain

        [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 https://en.wikipedia.org/wiki/P2P

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

        [6] Hijacking Bitcoin:Routing Attacks on Cryptocurrencies

        [7] BGP hijacking https://en.wikipedia.org/wiki/BGP_hijacking

        [8] Hijack-btc test code https://github.com/nsg-ethz/hijack-btc

        [9] 雙重支付 https://baike.baidu.com/item/雙重支付

        [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 https://www.rsaconference.com/writable/presentations/file_upload/fon4-t11_hacking_blockchain.pdf

        [15] 0day漏洞 https://baike.baidu.com/item/0DAY%E6%BC%8F%E6%B4%9E

        [16] Ethereum Smart Contract Security Best Practices

        [17] A PoC of a Blockchain-based C&C https://github.com/i3visio/blockchain_c2c

        [18] Smart Contract Best Practices, https://github.com/ConsenSys/smart-contract-best-practices

        本文來自“白帽匯安全研究院”,原文鏈接:https://bcsec.org/ 

      0
      相關文章
        影视站,婷婷亚洲,色谷,老司机电影院