天天看點

深度 | 鍊圈必讀:一文看懂區塊鍊安全6大分類3大問題

導語

2018年8月6日,騰訊安全釋出《2018上半年區塊鍊安全報告》,報告顯示,目前在全球範圍内,已出現了1600餘種加密數字貨币,2018年上半年,區塊鍊領域因安全問題損失超27億美元,而且因區塊鍊安全事件損失的金額還在不斷攀升。從IOTA“郵件門事件”、USDT“假充值漏洞”、EOS“彩虹攻擊”,到BEC與SMT“整數溢出攻擊漏洞”、BTG“51%算力攻擊”等等,這一系列的事件引發了大家的廣泛關注與思考。

區塊鍊安全威脅主要有哪些?為什麼智能合約的安全問題如此重要,會引起這麼多人關注?智能合約的安全類型有多少種?現在主流的安全監測方法有哪些?最有效的方法又是什麼?大家如何能獲得安全無漏洞的智能合約代碼?針對這一系列問題,我們對安比實驗室(SECBIT)創始人郭宇進行了采訪,為大家系統介紹區塊鍊行業安全問題及主流解決方案。

區塊鍊安全六大類型

從安全角度來看,區塊鍊技術可分為五層,相應安全問題則為六大類。

深度 | 鍊圈必讀:一文看懂區塊鍊安全6大分類3大問題

區塊鍊2.0版本技術架構

第一層,密碼學。密碼學是區塊鍊最底層的支撐技術,包含了雜湊演算法、數字簽名、随機數等,如果這些密碼學技術存在問題或者漏洞,那麼基于此的整個區塊鍊建構的信任将會坍塌。

雖然目前密碼學技術已經頗為成熟,存在巨大漏洞的可能性比較小,但是仍然不排除一些項目存在問題。2017年7月15日,具有“物聯網世界第一币”之稱IOTA收到了麻省理工學院附屬的學術研究組DCI的郵件,提醒IOTA團隊,IOTA的雜湊演算法Curl-P存在弱點,DCI可以對該系統進行成功的攻擊,竊取使用者資金。雖然IOTA随後對DCI的郵件進行了質疑和反駁,到目前為止,也沒有使用者因為此漏洞而發生資金被盜的情況,但這一事件引起了大家對IOTA和其他項目在密碼學技術安全上的關注

深度 | 鍊圈必讀:一文看懂區塊鍊安全6大分類3大問題

第二層,使用者私鑰的生成、使用與保護。使用者參與區塊鍊的憑證是一對公私鑰,每個人通過區塊鍊産生互動行為的前提就是他擁有安全的私鑰、并且能保管好自己的私鑰,是以私鑰的生成、試用與保護問題就非常重要。

今年7月,EOS就因私鑰生成工具存在安全隐患,建立的私鑰被黑客發現漏洞,并實施“彩虹”攻擊,導緻賬戶數字資産被盜,造成上千萬數字資産損失。

第三層,節點系統安全漏洞。這一問題歸屬于傳統安全範疇,比如區塊鍊節點不能存在緩沖區溢出等傳統的安全漏洞。另外區塊鍊節點的實作要能忠實地正确實作區塊鍊的共識協定;節點不能暴露不該暴露的API接口,導緻黑客可以無障礙的擷取一些節點關鍵資訊。無論是以太坊還是EOS都曾經被爆出過比較嚴重的安全漏洞。這一部分安全也是至關重要的。

第四層,底層共識協定。目前市場上主流的區塊鍊共識協定有以下幾種,POW、POS、DPOS、PBFT。底層共識協定決定了區塊鍊整個架構是否可信,能不能真正做到形成一個具有共識的區塊鍊。現在真正被證明安全的共識協定并不多,因為共識協定本身無論從理論、還是從技術實作上都不簡單。而經過長時間驗證的共識協定是比較安全的,比如像比特币的POW。 共識協定有一個不可能實作的三角關系:安全、去中心化和效率,這三者隻能同時實作兩樣。如果追求效率,要麼犧牲去中心化,要麼犧牲安全。

一個區塊鍊系統的共識協定是不是安全這個問題至關重要。

理論上,基于底層共識協定建立的所有數字貨币都是存在51%算力攻擊風險。今年上半年,就有至少4種數字貨币分别受到了51%算力攻擊,分别是Monacoin 、Bitcoin Gold、Verge和Electroneum,給使用者造成數千萬美元損失。

第五層,智能合約。智能合約是一套以數字形式定義的承諾(promises),包括合約參與方可以在上面執行這些承諾的協定。任何參與方都能在應用層建立合約,也就是所謂的DAPP(去中心化應用)。這也是目前出現安全問題最多的地方。

智能合約安全隐患包含了三個方面:第一,有沒有漏洞。合約代碼中是否有常見的安全漏洞。第二,是否可信。沒有漏洞的智能合約,未必就安全,合約要保證公平可信。 第三,符合一定規範和流程。由于合約的建立要求以數字形式來進行定義承諾,是以如果合約的建立過程不夠規範,就容易留下巨大的隐患。

目前市場上很多智能合約均存在安全漏洞問題,比如,6月3日,安比實驗室(SECBIT)發現Ethereum上出現81個合約帶有相同錯誤,ERC20 Token合約中的transferFrom函數存在巨大隐患,一旦部署後出現問題,将造成不可挽回的損失;6月6日,安比實驗室(SECBIT)發現ERC20代币合約FXE由于業務邏輯實作漏洞,任何人都可以随意轉出他人賬戶中的Token,Token随時面臨徹底歸零風險。

深度 | 鍊圈必讀:一文看懂區塊鍊安全6大分類3大問題

作為區塊鍊行業從業者、智能合約使用者或是加密貨币擁有者,應該學習相應的密碼學和智能合約程式設計知識,切不可随意複制使用涉及資金安全的合約和公私鑰等的代碼。如果惡意攻擊者,将帶有嚴重漏洞的代碼公開在網絡上進行傳播,誘導技術開發能力欠缺的組織使用,将會給使用者造成毀滅性打擊和不可挽回的損失。

第六層,激勵機制設計。智能合約要完成協作,通常是要設計相應的經濟激勵機制。經濟激勵是區塊鍊技術裡面非常有突破性的一個概念。一個真正健康有活力的區塊鍊生态,需要一個很好的激勵機制。但是經濟激勵設計得不夠安全,可能生态就無法建設起來,比如典型的類龐氏遊戲,這一點大家要警惕。

智能合約三大問題

前面介紹的六層區塊鍊安全問題,都是依托相應的技術層級來劃分的,越底層的技術越穩定,比如密碼學從一開始標明之後,就不會輕易改動。

智能合約由于比較靈活,任何人都可以建立,是以相對容易出安全問題。

任何使用者都能建立一個有共識基礎的合約,就好像是每個老百姓都可以基于某部法律寫一份合同,這個法律是一種共識機制(平台),這個合同也是有内在的限制條款,使用DAPP就像簽訂合同,所有行為都要按照這個合同條款執行。是以,智能合約的安全隐患,直接關系到使用者的财産損失。

到目前為止,安比實驗室(SECBIT)發現了市場上智能合約的三大問題:

第一,以整數溢出為代表的安全漏洞。安全漏洞通常是被寫代碼的人不小心引入的,它可能引起合約某些功能部件失效,最嚴重的情況,可能導緻黑客攻擊、使用者丢币、甚至黑客憑空造出來很多的币。比如BEC、SMT、EDU,曾經就因整數溢出安全漏洞,被黑客攻擊進而導緻币值歸零。

第二,智能合約權限控制。一般智能合約裡會設定一個管理者,管理者一般擁有超級權限,這類合約的安全隐患比較大,因為一旦管理者的私鑰被盜用,很容易造成巨大損失。據安比實驗室(SECBIT)不完全統計,排名前570名的Token合約中,有342個合約存在隻有管理者能調用的功能(Only Owner),不少合約更存在管理者任意鑄币、燒币、當機賬戶、關停轉賬等過高權限 。

今年7月10日,加密貨币交易平台Bancor稱遭到攻擊,丢失了當時折算法币金額為1250萬美金的以太坊、1000萬美金的Bancor 代币和100萬美金的Pundix代币。經過我們分析發現,這次Bancor平台被盜事件就是與BancorConverter合約有關,攻擊者(黑客/内鬼)通過擷取了管理者賬戶的私鑰,借用管理者身份盜走使用者的Token,給使用者造成巨大損失。

深度 | 鍊圈必讀:一文看懂區塊鍊安全6大分類3大問題

第三,規範性問題。現在很多智能合約的實作并沒有統一的規範。智能合約是以互動的方式多人協作,如果合約不規範,容易導緻不同人對合約的行為産生誤解,進而出現大量的安全問題。

比如,今年陸續爆出的“假充值”事件,包括以太坊代币、USDT等,根據一家機構進行的不完全統計顯示,市場上的單代币合約有3619 份存在“假充值”漏洞風險,其中不乏知名代币。

正常情況下,充值過程中轉賬不成功,賬戶将無法充值,賬戶餘額仍然是0。但如果合約存在“假充值”漏洞,在轉賬不成功的時候,系統并不會顯示充值失敗(值),交易所就會誤判結果為充值成功。如果有黑客發現這一漏洞,就會一直進行“假”充值,之後再把這筆錢提出,給交易所帶來直接損失。

形式化驗證的重要性

目前,市場上針對智能合約安全問題的檢驗方式主要有三種,第一是測試,第二是審計,第三是形式化驗證。測試需要程式自動跑,通過各種可能性的輸入,檢測是否存在整數溢出漏洞等問題。但這個測試通常不可能百分之百覆寫,一定會有遺漏存在。審計就是靠專家的專業知識去稽核,但再專業的專家也可能會有疏漏。前兩種傳統的方式,并不能保證合約中沒有漏洞,但形式化驗證能做到這一點。

形式化驗證可以解決三類問題,第一類是安全無漏洞:通過數學推理的方法,捕捉、覆寫合約的所有行為,覆寫所有可能性,進而保證合約沒有漏洞。第二類是可信:公開透明。合約的建立者不僅要說明白幹了什麼事,還要向大家證明代碼确實是這麼幹的。這個也是目前隻能用形式化驗證才能做得到。第三類是規範性問題。前面提到的假充值漏洞,就是因為以太坊的ERC20規範,寫得非常模糊、不完整。那怎麼樣能寫完整呢?這就要求合約的規範就不能用自然語言,或文字描述,而是應該引入形式化規範,用一種數學邏輯語言來嚴格定義。

形式化驗證在工業界、尤其是安全系統相關領域,已經有了大量應用案例,比如航空航天、高鐵、核電等行業,都有專門的團隊提供形式化驗證服務,其作用與效果早就得到了安全行業專家的認可。

目前,形式化驗證包括模型檢驗和演繹推理兩種。安比實驗室(SECBIT)在演繹推理方面積累了十幾年的科研成果和工程經驗,技術在全球比較領先。

相對權威和安全的公司,比如Zeppelin和以太坊官網都曾經公布過有問題的智能合約代碼。如果能有一個更可信,不依賴權威的智能合約代碼庫,開放給所有人使用,将能很好地解決這個問題。在這方面,安比實驗室(SECBIT)已經做了大量工作,并且目前建立全球第一家可信的開源智能合約代碼庫,友善大家免費使用。

原文釋出時間為:2018-08-21

本文作者:重度幫助創業者的

本文來自雲栖社群合作夥伴“

燈塔大資料

”,了解相關資訊可以關注“

”。

繼續閱讀