V神要哭,以太坊智能合約漏洞百出,「保險池」概念緊急來救火

image

4月22日中午,有黑客利用以太坊 ERC-20智能合約中BatchOverFlow漏洞攻擊BEC(美鏈的代幣「美蜜」)智能合約,成功向兩個地址轉出了天量級別的 BEC代幣,致使市場上海量BEC被拋售。此事使得當日BEC的價值幾乎歸零。64億人民幣瞬間蒸發。程序員

4月25日,僅僅三天後,另外一個智能合約SmartMesh(SMT)曝出漏洞,交易所表示,因SMT出現異常交易,各交易平臺暫停SMT的充提和交易。web

這已經不是以太坊第一次被曝出智能合約漏洞問題。雖然以太坊僅僅誕生了四年,可是隨着人們愈來愈多地瞭解區塊鏈技術,以太坊的熱度逐漸增長。然而,最新的研究顯示,基於以太坊架構,被稱做是「最安全、最可靠、最方便」的智能合約技術卻漏洞百出。編程

2016年6月17日,發生了在區塊鏈歷史上沉重的一次攻擊事件。因爲以太坊的智能合約存在着重大缺陷,區塊鏈業界最大的衆籌項目The DAO(被攻擊前擁有1億美圓左右資產)遭到攻擊,致使300多萬以太幣資產被分離出The DAO 資產池。promise

同年11月,一樣基於以太坊的電子錢包服務商Parity,也出現了嚴重的安全問題,大約有1.5億美圓的用戶資金遭到影響,忽然沒法正常使用和交易。瀏覽器

2017年7月21日,智能合約編碼公司Parity警告1.5版本及以後的錢包軟件存在漏洞,據Etherscan.io的數據確認有價值3000萬美圓的15萬以太幣被盜。安全

2017年11月8日,以太坊Parity錢包再出現重大bug,多重簽名漏洞被黑客利用,致使上億美圓資金被凍結。網絡

爲什麼智能合約漏洞頻出?難道就沒有辦法解決了嗎?架構

1

什麼是以太坊智能合約

智能合約如今是區塊鏈中最爲你們熟知的概念。但智能合約到底是什麼?不少人仍是隻知其一;不知其二。智能合約就是一種儲存在區塊鏈中的計算機程序。分佈式

image

區塊鏈從本質上來講,就是一種共享的會計分類帳簿,能夠利用虛擬加密貨幣和計算機網絡來追蹤與記錄各類資產的狀態,同時有效保證分類帳簿的安全,以防出現一些惡意篡改現象。學習

第一代區塊鏈技術就是比特幣。它能爲互不相識的交易雙方提供牢固保障,保證雙方資金可以按照合同規定順利完成轉帳。簡單地說,就是保證交易雙方不會受到欺詐等負面事件影響。

第二代區塊鏈技術就是以太坊。有了智能合約,交易雙方能夠建立一個系統,從某一方的帳戶中取錢再存進餘額不足的另外一方帳戶中。從理論上來講,智能合約可以用於各類各樣金融協議的代碼編寫,其中包括衍生合同、拍賣合同以及各類基於區塊鏈的第三方保管帳戶合同等等。

以太坊是一個開源的區塊鏈底層系統,就像安卓同樣,提供了很是豐富的API和接口,讓許多人在上面可以快速開發出各類區塊鏈應用。目前已經有超過200多個應用在以太坊上開發。 

而以太坊很大的特點就是可以實現智能合約。所謂智能合約(Smart Contract),是密碼學家Nick Szabo在1994年首次提出以數字形式定義的一系列承諾(promises) ,包括合約參與方能夠在上面執行這些承諾的協議。

智能合約的智能在英語中對應的單詞是Smart,和智能手機(Smart Phone)中的Smart意義相同,表示很是靈活的意思,並非指人工智能(AI)。智能合約一旦設立指定後,可以無需中介的參與自動執行,而且沒有人能夠阻止它的運行。

以太坊去中心化的核心是其能夠運行圖靈完備的腳本語言,而開發以太坊智能合約則有四種語言:Serpent、Solidity、Mutan、LLL。這些語言都是面向底層設計的語言。目前來看,Solidity 是首選語言,這是因爲它內置了 Serpent 語言的全部特性,語法類則似於使用普遍的 JavaScript。再加上 Solidity 的語言特性較少,該語言則能夠更簡單地實現完備的智能合約體系。

以太坊是一個開源的有智能合約功能的公共區塊鏈平臺。區塊鏈上的全部用戶均可以看到基於區塊鏈的智能合約。可是,這會致使包括安全漏洞在內的全部漏洞均可見。智能合約語言 Solidity 自身與合約設計均可能存在漏洞。若是智能合約開發者疏忽或者測試不充分,而形成智能合約的代碼有漏洞的話,就很是容易被黑客利用並攻擊。而且越是功能強大的智能合約,就越是邏輯複雜,也越容易出現邏輯上的漏洞。

2

智能合約爲什麼充滿漏洞?

根據倫敦大學學院計算機科學系副教授伊利亞•謝爾蓋最新的研究論文中顯示,經過基於以太坊平臺的近100 萬份智能合約進行每份合約/10秒的分析後發行,有大34200份智能合約很容易遭到黑客攻擊。

此外,他們還經過3759份智能合約抽樣調查,發現其中3686份合約有89%的機率含有漏洞。以太坊做爲一個分佈式應用平臺,如此高的漏洞產生機率,不知道V神對此作何感想。

image

那麼問題來了,以太坊智能合約爲什麼充滿漏洞?

區塊鏈爲智能合約提供可信執行環境,智能合約爲區塊鏈擴展應用。而在以太坊上的智能合約,可以控制區塊鏈上各類數字資產進行復雜的操做,隨着智能合約開始得到愈來愈多的使用,人們也發現,就像現實世界的合同同樣,若是沒有認真審覈的話,其中就有可能出現漏洞,而且被壞人利用。

開發智能合約須要一個全新的工程思惟,它不一樣於咱們以往項目的開發。由於它犯錯的代價是巨大的,而且很難像傳統軟件那樣輕易的打上補丁。就像直接給硬件編程或金融服務類軟件開發,相比於web開發和移動開發都有更大的挑戰。

據有關調查統計,以太坊主要漏洞狀況描述以下表:

image

image

image

(本圖爲雷鋒網設計並整理)

但其實究其根本,之因此如此多的智能合約出現同類漏洞,其背後是混亂的數字代幣發行現狀。

一些ICO(數字貨幣發行)經過智能合約發行代幣的代價,成本已經低之又低。業內人士指出,一個程序員只要花5分鐘,從網上抄一些智能合約代碼,稍作修改,就能夠發行一個代幣。若是再寫個白皮書,找幾個知名顧問站臺,就能夠在數字貨幣交易所裏發行幾千萬甚至上億的項目。既沒有交易所的監管,又抱着「一晚上暴富」的期待,這些發幣團隊的技術實力、對安全的防範意識,天然很可貴到保證。

內參君仍是要提醒的是,在數字貨幣的世界裏,各類漏洞都潛伏其中,投資者須要作好漏洞隨時暴露的心理準備,同時,平臺自身的資質,也是投資者須要仔細考慮的重要因素。

3

「保險池」概念緊急救火

據騰訊玄武實驗室的信息安全人員宋凱透露,其實不少虛擬貨幣交易在過程當中都出現過安全問題,過後的解決方案大可能是回滾,也就是將交易數據回溯到攻擊以前的狀態。這樣的補救措施只能使用戶帳戶中擁有一樣數量的新幣,但由於攻擊致使BEC幣價大跌,事實上,用戶並沒能真正挽回損失。

近日,以太坊基金會(Ethereum Foundation)開發者Alex Van de Sande公佈了的一項有關「保險池」的提議,他認爲這個方案可以下降網絡分裂的風險——因爲智能合約代碼漏洞形成資金凍結的事故,在尋找解決方案的過程當中可能產生分歧,從而帶來分裂網絡的風險。

Van de Sande是以太坊Mist瀏覽器團隊的領導者,他在一篇文章中提到,建立一個存有專用保險資金的「贖回合約」(recovery contract)可以下降我的或組織經過爭議性硬分叉來得到部分或所有由於代碼漏洞而失去的資金。最典型的例子就是,在Parity的多重簽名錢包合約代碼庫爆出漏洞以後,錢包中價值3.2億美圓的以太坊(ETH)被凍結,維持在沒法花費的狀態。

不過,Van de Sande的提議最具爭議性的部分應該是其涉及了爲超過51.3萬ETH發行贖回代幣的計劃,即因合約代碼庫錯誤鎖定在Parity多種簽名錢包中的以太坊數量。

Parity團隊表示無心經過爭議性硬分叉的方式取回資金,所以,Van de Sande認爲他的這項計劃將會讓受害者(包括大多數以太坊核心開發者)成爲這個新基金的利益相關者。這樣一來,這個保險池的創立將更有機會引發更多人的關注。

內容來源:鏈內參

如下是咱們的社區介紹,歡迎加入各類合做、交流、學習)

image

相關文章
相關標籤/搜索