1. 程式人生 > >關於數字貨幣交易平臺面臨的安全威脅

關於數字貨幣交易平臺面臨的安全威脅

一、近期部分與數字貨幣交易平臺相關的安全事件

近期,數字貨幣交易所安全事件頻發。2018年01月日本Coincheck交易所受到黑客攻擊被盜取NEM新經幣損失約5.34億美元;2018年02月基於以太坊的XMRG代幣的交易價格上漲787%後迅速暴跌歸零,造成大量使用者經濟損失,背後原因在於其智慧合約程式碼存在整數溢位漏洞,超額鑄幣後拋售造成惡性通脹;2018年03月Binance交易所,黑客利用盜取的使用者資訊進行大量交易操縱市場行情獲利超過1億美元。2018年04月基於以太坊的BEC代幣和SMT代幣先後因智慧合約存在溢位漏洞造成天量代幣轉出,引發恐慌拋售,導致市值幾近歸零……這樣的案例數不勝數。

筆者通過這些觀察,發現兩個現象:一是事件發生的頻率很頻繁,要知道這只是列舉近期部分影響比較大的事件,如果把時間範圍擴大,或者算上可能存在的影響較小的以及被掩蓋的事件的話,數量會比這個更多;二是平臺或使用者的損失數額巨大,動輒數千萬甚至數億美元。 實際上,通過這些事件記錄,還可以得到更多資訊,接下來展開分析一下。

2018年3月初,著名的數字貨幣交易平臺幣安出現大量賬戶異常交易,繼而影響了整個數字貨幣市場的交易行情。這個事件的操作手法很有趣,後文會再提起。這裡要說的是,事件發生之後,有人發文指責事件是幣安官方自導自演的,幣安聯合創始人何一後續發文迴應,反駁這一指責。事件真相究竟如何筆者不打算在此討論,這裡是想要援引何一回文中的一句話:“出現這種安全問題是幾乎不可避免的,任何種類的交易所每天都遭受攻擊,一方面政策空間狹窄,導致幣圈不太可能照搬傳統交易所體系,另一方面虛擬貨幣交易所面世才幾年,不管是風控還是技術積累都需要一個成長過程。”

是否認同這個說法,是個仁者見仁的問題,筆者所關注的主要是它的思路。這個說法當中,把數字貨幣交易平臺同傳統金融交易平臺做了對比,本文接下來也會使用同樣的思路來闡述。 二、黑客為何攻擊數字貨幣交易所? 從邏輯上說,任何主觀行為都是有目的的,黑客攻擊行為的目的,不乏有為了炫耀技術或者表達政治訴求之類的情況,但是佔比最大的還是為了獲得經濟回報。 現實生活中,是存在攻擊傳統金融機構例如銀行或者證券交易所繫統的情況的,但是這方面的記錄相對上文而言少很多,下面分析一下原因。

筆者認為,主要存在兩方面的原因,一方面,傳統金融機構所保有的資產,無論是數字化的(相對於實體化的紙幣和硬幣)法定貨幣,還是證券憑證,普遍都是記名的,其流轉過程有跡可循,並且接受監管,要實現難以追蹤的轉移效果,成本高難度大。另一方面,傳統金融行業的數字化歷史已經很久,無論是人才儲備,技術積累,制度規範都已經很成熟,單就資訊保安方面的建設水平也相對很高了,要從技術上實現成功侵入盜走資產並逃脫追捕這一系列步驟難度非常大。

反觀數字貨幣交易所,一方面,數字貨幣的匿名性,不可篡改性以及無監管特性,導致了資產轉移便捷,溯源找回難度大。另一方面,數字貨幣交易行業出現時間短,發展又非常快,利潤高,導致本來技術積累就不足的情況下,仍然忽視資訊保安方面的建設,隱藏的安全漏洞多,攻擊起來相對容易。

三、數字貨幣交易所在技術方面面臨的安全威脅

目前數字貨幣交易所在技術方面面臨的安全威脅,筆者分析主要分為兩大部分。

1.傳統資訊系統安全漏洞

這一部分來說,數字貨幣交易所,和傳統金融機構差別不大,其整個資訊系統,由Web伺服器,後端資料庫等元素構成,使用者通過瀏覽器,移動端App以及交易所提供的API等多種方式作為客戶端訪問伺服器。

結合本文第一部分的事件記錄,可以看出,這部分面臨的安全威脅主要包括,伺服器軟體漏洞,配置不當,DDoS攻擊,服務端Web程式漏洞(包括技術性漏洞和業務邏輯缺陷),辦公電腦安全問題,內部人員攻擊等。

對於規模較大,使用者較多的交易所,還會面臨使用者被攻擊者利用仿冒的釣魚網站騙取認證資訊的問題。上文中提到的幣安交易所的異常交易事件,據官方的說法,是攻擊者利用釣魚欺騙的方式騙取了部分使用者的認證憑證,繼而利用API發起大量交易,將使用者賬戶內的其他幣種交易成比特幣,幣安及時發現異常,凍結了提幣功能。

有趣的是,攻擊者雖然不能提幣,但是想到了另一個巧妙的獲利方式,即利用其控制的大量場內比特幣操縱市場,影響其他幣種的價格,再在另外的數字貨幣期貨交易所進行做空操作,最終在無法提幣的情況下獲利超過1億美元。在這個事件中,攻擊者利用了幣安平臺對市場的巨大影響力,理論上來說,並沒有盜取誰的數字貨幣,只是“換了換幣種”,因大量的做空訂單分散在成百上千的其他交易所,導致根源也無從查起。

下圖是“去中心化漏洞平臺”DVP的漏洞統計。 這裡寫圖片描述 這裡寫圖片描述

該平臺收錄的最早的漏洞資訊在2018年07月12日,截止到撰寫本文時,在不到兩個月的時間裡已經收錄了超過1800個漏洞,並且仍在以每天數十個的速度增長。

上個月,某安全團隊稱捕獲到了一個0day漏洞,是某個數字貨幣交易所整站程式的邏輯漏洞,有上百個中小交易所在使用該程式,雖然大眾普遍認為,國內外的規模較大的交易所不會購買使用這種第三方開發的整站程式,但是現在數字貨幣交易行業利潤高,發展迅猛,後期可能會有很多人想要快速進入這個市場,在搜尋引擎中搜索“數字貨幣 交易 平臺 開發”等關鍵字即可發現這一塊的需求量應該還是很大的。

其實在初期使用第三方外包開發的方式本來未嘗不可,就傳統的銀行領域來說,大量的中小規模銀行的資訊系統也會使用第三方公司的產品來定製,因為政府層面的嚴格監管以及這一類開發公司長久的技術積累,銀行使用的類似系統通常安全性是有足夠保證的。但是在數字貨幣行業則不同,部分從事這一類開發的個人和團隊對於產品質量的保障能力很有限,導致通用型漏洞頻發也就不奇怪了。

對於這一部分安全威脅的解決方法來說,通過滲透測試,程式碼審計等安全服務,挖掘並修復系統存在的安全漏洞,可以參考傳統金融行業的安全規範和最佳實踐結合自身情況完善安全體系的建設。

2.智慧合約安全漏洞

以太坊被稱為“區塊鏈2.0”技術的代表,因為它支援智慧合約的執行。可以這麼來理解,比特幣系統就是在底層區塊鏈技術的基礎之上,加上一個定義了獎勵分發規則的“合約”所構成的。而以太坊的出現,提供了現成的底層區塊鏈網路,開發者可以在這個基礎之上,使用Solidity等程式開發語言,開發部署自己的智慧合約,包括模擬一個類似比特幣一樣的產品。因為Solidity是圖靈完備的程式開發語言,因此理論上,可以用來實現各類分散式應用。

開發者編寫好智慧合約程式碼之後,將程式碼部署到區塊鏈上,程式在以太坊節點的EVM虛擬機器上執行。程式碼上鍊之後,各節點執行相同的操作,同步資料狀態。

和傳統的程式一樣,智慧合約也不可避免的會存在安全漏洞,不同的是,由於區塊鏈技術的不可篡改特性,一旦合約部署好之後,就很難再修復其中的問題。一些存在例如整型溢位等漏洞的代幣分發合約部署之後,代幣上線交易所交易,接著漏洞被觸發利用,短時間內超發大量代幣影響市值,對交易所和使用者來說都會造成巨大的經濟損失。

這部分安全威脅,就與傳統的資訊保安漏洞大不一樣了。在傳統金融市場中,也存在類似的攻擊,例如20世紀末期亞洲金融危機時,索羅斯對港元的操作。不同的是,在傳統金融市場要發動這樣的攻擊需要巨量的資金支援才能實現。而在數字貨幣領域,擁有挖掘合約漏洞能力的人理論上都有可能實現這樣的攻擊。

下圖是部分基於以太坊ERC-20智慧合約標準開發的代幣合約的漏洞資訊: 這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

實際的威脅情況可能比這還要嚴重得多。我們說智慧合約之所以“智慧”,是因為一旦部署上鍊之後,它的執行過程透明可見,不可篡改,無需人工干預,自然解決了執行過程中的信任問題,這也是區塊鏈技術出現時所想要解決的根本問題。然而雖然解決了程式“執行”階段的問題,但是如果合約程式碼存在漏洞,開始執行之後被利用,背離了原本的涉及初衷,那區塊鏈技術的這些優秀特性反而會成為挽救損失的障礙。 應對這部分安全威脅,需要交易所在上線新的代幣之前,先經過完善的合約程式碼安全審計工作,防患於未然,將可能的攻擊威脅降到最低。