文 |江語遲
編輯 | 江語遲
前言
近年來,随着疫情的逐漸發展和電子商務網絡平台的快速發展,物聯網(IoT)裝置越來越融入人們生活的隐私。
随着無數裝置連接配接到物聯網,物聯網在長期的發展演進過程中遇到了很多産業痛點,物聯網中最大的問題之一是知道你在連接配接誰。
位于馬薩諸塞州尼達姆的工業網際網路聯盟執行董事 Richard Mark Soley 博士說:“這種對跨數百萬或數十億傳感器的信任機制的需求使得像區塊鍊這樣的分布式系統變得至關重要。”
傳統的集中式管理物聯網時代方法難以有效實施:物聯網時代邊緣和終端裝置數量龐大。
單一的中心伺服器或叢集很難有效管理如此大規模的裝置,中心化系統面臨着嚴重的性能瓶頸。
是以,引入了最卓越的永久資料儲存和防篡改解決方案——區塊鍊。
區塊鍊對物聯網的主體對主體、公開透明、通信安全、不易被篡改、多方共識等特性具有重要影響。
智能合約使我們能夠自動化複雜的多步驟流程,IoT 生态系統中的裝置是與實體世界的接觸點。
在大資料時代背景下,人們的個性化需求得到了更大程度的滿足,與此同時,個人隐私資料也存儲在大型資料庫中,這也對網絡安全形成了巨大的隐患。
智能合約安全與檢測
智能合約用進階語言編寫,編譯成位元組碼,由區塊鍊交易驅動,運作在以區塊鍊為存儲基礎的虛拟機上,這些都面臨着不同的安全威脅。
近年來,智能合約安全事件頻發,在2016 年,針對 DAO 合約的攻擊導緻超過 3,600,000 Ether 的損失,這源于關鍵 DAO 合約中引入的重大漏洞。
在2017 年,Parity 多重簽名錢包漏洞導緻超過 513,701 Ether 被鎖定,這也引發了關于以太币是否需要通過硬分叉更新的持續争論。
而在2018年,黑客攻擊了BEC合約,一個整數溢出安全漏洞導緻 BEC 的價格幾乎跌至零。
智能合約伴随着在其整個生命周期中發現不同類型的漏洞,目前已發現的智能合約漏洞種類繁多。
現有的已知漏洞,如重入、時間戳依賴、無限循環、調用堆棧深度攻擊、整數溢出和整數下溢。
為了避免這些漏洞,要先了解可以檢測這些漏洞的方法。
有幾種傳統方法可以檢測智能合約中的漏洞,Oyente 是一個基于靜态符号執行的漏洞檢測工具。
而Mythril 是一種基于符号執行和具體執行相結合的漏洞檢測工具,涵蓋了大多數類型的漏洞。
此外,SmartCheck是一種可擴充的靜态分析工具,以及 Securify,一個為智能合約提供可擴充和全自動安全分析的工具,是智能合約安全檢測的進階工具。
這些自動化審計方法仍處于發展階段,主要面臨三大問題。
一是自動化程度低,需要不斷的回報來進行審計,而且它們的誤報率很高,仍然需要一些人工參與。
審計時間也很長,線上資料研究發現,Mythril 平均為 60 秒,Oyente 約為 30 秒,而 Securify 約為 20 秒。
傳統的智能合約漏洞檢測工具大多依賴固定的檢測規則,而結合深度學習技術的漏洞檢測方法則避免了這一問題。
Eth2Vec,一種基于機器學習的智能合約漏洞檢測靜态分析工具,它通過用于自然語言處理的神經網絡自動學習易受攻擊的智能合約位元組碼的特征。
Eth2Vec 通過隐式提取特征并結合合約之間的詞法語義,即使在重寫代碼之後,也能以高精度檢測漏洞。
但是,該方法存在不支援多個合約互相關聯時的合約間分析的問題。
于是又開發了一種基于多任務學習的智能合約漏洞檢測模型,它通過設定輔助任務學習更多的定向漏洞特征來提高模型的檢測能力。
該模型可以獲得細粒度細節和權重分布的可解釋全景,該方法表現出很強的漏洞檢測能力。
但是,基于深度學習的漏洞檢測方法是由資料驅動的,它允許在建構資料集時對智能合約源代碼檔案進行細粒度分割,然後将其輸入模型。
是以,使用深度學習的檢測方法隻需要建構合理的資料集,就可以極大地提高檢測的代碼覆寫率,進而降低漏檢率。
單個神經網絡處理資訊的能力有限,網絡的訓練精度可以通過增加神經元數量和增加網絡的自由度來提高。
然而,這可能導緻網絡在訓練過程中收斂困難,最終無法滿足精度要求,與一般的深度學習模型相比,多種模型或機制的組合可以在分類任務中取得更好的性能。
于是,提出了一種結合 CNN 和 RNN 的串行混合模型,用于智能合約漏洞檢測。
模型設計
在使用深度學習方法進行智能合約漏洞檢測時,需要解決兩個實際問題:建構合理的可被深度學習模型訓練的智能合約源代碼資料集,以及為智能合約源代碼資料集建構合适的深度學習模型。
針對這兩個問題,并設計了任務的整體實作,如圖圖1.
圖1 基于深度學習的智能合約源代碼漏洞檢測整體設計方案
處理資料并将處理後的資料傳遞到深度學習模型中進行分析和判斷。
值得一提的是,現有的模型設計和系統實作等研究充分考慮了子產品間的安全問題。
是以,許多與認證相關的技術研究被廣泛提出和應用,模型的設計涉及到各個子產品的組成部分,但它們都是神經網絡子產品的線性連接配接,是以各個子產品之間的安全保障這裡就不需要再考慮了。
這種結合 CNN 和 RNN 的串行混合模型是出于以下考慮:
CNN 和 RNN 都可以用于序列模組化,但它們的表現不同,RNN 強調時間次元上的順序,序列的輸入順序影響輸出,而CNN 通過聚合局部資訊來擷取整體資訊,并且可以從輸入中提取層次資訊。
是以深度神經網絡必須等待處理下一個代碼向量,直到目前資訊已處理完畢,這意味着 RNN 無法像 CNN 那樣利用大規模并行處理 (MPP)。
CNN雖然在特征提取方面取得了不錯的效果,但甚至沒有考慮序列的上下文關系。
然而,智能合約代碼是一長串單詞,各個單詞的出現在上下文中是互相關聯的,是以CNN 和 RNN 的結合使得序列資料的時間結構和位置資訊得以完整保留。
這也有助于提取多元組合的特征。
結合內建分類器 (SPCBIG-EC) 的串行-并行卷積雙向門控循環網絡模型進行漏洞檢測。
首先,将智能合約源代碼處理成模型可以使用的資料集,處理後的資料集D仍然包含一些智能合約,可以表示為D = {C1,C2,C3, … ,Cn}。
智能合約Ci由許多函數組成,可以表示為Ci= {Fi1 ,Fi2, Fi3, … ,Fin},其中1≤i≤n。
功能Fi, j 由代碼行組成{Ci,j,1,,Ci,j,2,Ci, j , 3, … ,C i,j , n},可以表示為F, {Ci,j,1,,Ci,j,2,Ci, j , 3, … ,C i,j , n} , 其中1 ≤ j ≤ m。
首先,進行資料預處理,去除與漏洞無關的内容,然後源代碼圍繞不同漏洞對應的關鍵點被分成小塊的智能合約代碼,而且這些代碼片段在邏輯上是可執行的。
其次,将控制流分析生成的智能合約代碼的小片段轉換為向量表示,并将使用者定義的變量和函數映射到符号名。
通過詞法分析将符号表示中的段劃分為一系列标記,在這種情況下,原始合約片段行由包含關鍵字的多個令牌序清單示,具有内置規範化變量的操作等。
處理後的向量被輸入到我們建構的 SPCBIG-EC 模型中。
模型第一層為卷積層,卷積核在一個卷積視窗下對輸入向量進行卷積得到組合特征C1n。
當有kconvolution kernels 在卷積視窗下對詞向量進行卷積,組合特征C1n可以表示為C1n= [C11n,C12n, … ,C1kn ]。
模型的第二層是卷積層,卷積核在一個卷積視窗下對輸入向量進行卷積得到組合特征C2n.
由C1n與C2n形成新的特征組合,使獲得的特征向量作為雙向門控循環 (BiGRU) 模型的輸入。
最後,将BiGRU的隐藏狀态作為特征向量輸入注意機制層。
注意機制為代碼中的重要詞配置設定權重,通過注意力機制獲得的歸一化權重與該層的輸入特征向量相乘得到輸出。
注意力機制層連接配接到全連接配接層,全連接配接層包含一個內建分類器,內建分類器包含幾個弱分類器作為候選基分類器(兩個分類器,AM-Softmax)。
選擇分類誤差最小的弱分類器作為基分類器,采用重權重的方法進行疊代訓練,并使用順序線性權重方法組合基本分類器以獲得具有更高魯棒性的更強分類器。
并建構的強分類器用作最終分類器來預測漏洞。
圖2 SPCNN結構
SPCNN結構由多個卷積層組成,這些層是基于一個兩層串行卷積結構。
結構中的串行是指兩個卷積層的線性串行結構,而并行是指從第一個卷積層提取的特征在傳遞到第二個卷積層之前進行備份和保留,備份的特征與從更高的卷積層從第二個卷積層提取的特征并行輸出,将兩個特征進行融合,得到最終提取的SPCNN結構的特征資訊。
特征資料C1n保留第一層卷積層提取的資料作為備份,将資料輸入第二層進行二次特征提取,特征提取資料C1n來自保留的第一層的輸出與特征提取資料并行C2n第二層末尾的第二層輸出進行特征融合。
然後,通過擷取底層特征并在頂層并行化輸出,充分提取智能合約的語義和句法資訊。
SPCNN結構的優點是:用雙層串并卷積代替等效步長的單層卷積,起到改善非線性的作用,以及減少卷積池化操作可能丢失關鍵資訊的影響,例如局部位置資訊和序列結構的破壞。
結語
IoT 生态系統中的裝置是與實體世界的接觸點,物聯網裝置通過一些通信媒體連接配接到雲端。
傳感器采集的資料通過核心網到達雲端進行處理,物聯網裝置更深入地嵌入到人們生活的隐私中,其安全問題不容忽視。
由區塊鍊技術支援的智能合約有可能解決這些問題,BoT技術在大力推動産業創新發展的同時,其安全性也必須得到保障。
是以,迫切需要提出一種更有效的智能合約安全檢測方法,其中有六種典型漏洞,即重入漏洞、時間戳依賴、無限循環、調用堆棧深度攻擊漏洞、整數溢出和整數下溢。
此外,提出了一種創新性地适用于串行組合模型的 SPCNN 網絡結構。
該結構旨在提取低級特征并将其與進階特征并行輸出,它可以充分融合不同層次的詞向量的多種特征。
為了充分提取智能合約的内部特征和智能合約之間的連接配接特征,我們使用具有雙卷積核的SPCNN。
大量實驗都證明了SPCBIG-EC模型的效率和SPCNN對串行混合模型的适用性。
此外,SPCBIG-EC 模型明顯優于其他 11 種進階漏洞檢測方法。
由技術支援的智能合約在未來有可能解決問題。