"/>
【技術實現步驟摘要】
基于Tree
?
LSTM和BiLSTM的智能合約漏洞檢測方法及系統
[0001]本專利技術屬于智能合約安全領域,涉及深度學習技術,具體涉及一種基于
Tree
?
LSTM
和
BiLSTM
的智能合約漏洞檢測方法及系統
。
技術介紹
[0002]區塊鏈是一種融合多種現有技術的新型分布式計算和存儲范式,具有透明性
、
不可篡改
、
可溯源
、
去中心等特點
。
智能合約指的是一段可以在區塊鏈平臺上自動運行的代碼,用于描述并且自動執行一份合約
。
智能合約能夠在不需要第三方監督的情況下被強制地執行,使人們能夠在不可信的環境中進行安全可靠的交易
。
以太坊是當前影響力最大的開源區塊鏈平臺
,
也是目前為止智能合約數量最多
、
漏洞類型最多
、
漏洞造成損失最大的區塊鏈平臺
。
目前以太坊上書寫智能合約的主要編程語言是
Solidity
,
Solidity
是一個面向合約開發的高級語言,借鑒了
JavaScript
和
python
,非常適合用來開發運行在以太坊上的公開的去中心化應用程序
(decentralized application
,
DAPP)
,如投票,眾籌,拍賣,多重簽名錢包等,以 ...
【技術保護點】
【技術特征摘要】
1.
一種基于
Tree
?
LSTM
和
BiLSTM
的智能合約漏洞檢測方法,其特征在于,包括如下步驟:
S1
:收集數據形成智能合約數據集,且進行數據處理;
S2
:使用語法解析器對步驟
S1
數據處理后的智能合約源代碼進行解析得到
AST
,并對
AST
進行處理;
S3
:對步驟
S1
數據處理后的智能合約源代碼文本進行程序切片規范化以及文本分詞處理,訓練并保存詞嵌入模型
word2vec
;
S4
:使用構建好的
Tree
?
LSTM
模型對步驟
S2
中處理好的
AST
進行特征提取,得到語法特征向量;使用構建好的
BiLSTM+Attention
模型對步驟
S3
中處理好的程序切片文本進行特征提取,得到語義特征向量;
S5
:將語法特征向量和語義特征向量進行融合,利用分類器網絡根據融合后的特征向量進行智能合約源代碼的漏洞檢測
。2.
根據權利要求1所述的一種基于
Tree
?
LSTM
和
BiLSTM
的智能合約漏洞檢測方法,其特征在于,所述步驟
S1
具體包括如下步驟:
A1
:使用網絡爬蟲從
Github
和
Estherscan
收集智能合約源代碼;
A2
:對合約源代碼進行標記,并進行人工檢查;
A3
:清除源代碼中的注釋和非
ASCII
碼字符;
A4
:根據漏洞的特征找到程序中的關鍵語句和包含關鍵語句的關鍵方法,再找到所有直接調用或嵌套調用關鍵方法的方法與關鍵方法組成一個方法集合,找到方法集合中所有方法依賴和間接依賴的變量,作為變量集合;
A5
:根據步驟
A4
中獲得的方法集和變量集合對智能合約源代碼進行提取;
A6
:使用
python
自帶的
difflib
庫對步驟
A5
中獲得的程序切片文本進行文本相似度檢查,舍棄相似度過高的程序切片
。3.
根據權利要求2所述的一種基于
Tree
?
LSTM
和
BiLSTM
的智能合約漏洞檢測方法,其特征在于,所述步驟
S2
具體包括如下步驟:
B1
:使用
ANTLR
語法解析器對步驟
A6
得到的程序切片進行解析得到抽象語法樹的解析類;
B2
:深度遍歷抽象語法樹的每一個節點,為每一個節點編號,僅使用節點的類型來表示節點,并且將抽象語法樹以鄰接表的形式存儲;
B3
:根據統計鄰接表中的詞的出現次數,創建詞典,詞典中存儲的是詞和詞對應的索引;
B4
:從葉子節點開始迭代計算每個節點的計算順序,使用一個數組存儲計算順序,遍歷鄰接表設所有葉子節點為已計算節點,并設計算順序為0,再次遍歷鄰接表將所有子節點都為已計算節點的節點設為已計算節點,并設計算順序為1,循環迭代直到鄰接表中所有的節點都計算完成,最后將數組與鄰接表一同存儲
。4.
根據權利要求1所述的一種基于
Tree
?
LSTM
和
BiLSTM
的智能合約漏洞檢測方法,其特征在于,所述步驟
S3
具體包括如下步驟:
C1
:合約規范化,將程序切片中的函數名稱替換為
FUN{#}
,其中
#
表示數字,將程序切片
中的變量名稱替換為
VAR{#}
,其中
#
表示數字;
C2
:對程序切片進行分詞;
C3
:將程序...
【專利技術屬性】
技術研發人員:張鵬程,唐凌軍,李雯睿,吉順慧,楚涵婷,王蕭,
申請(專利權)人:南京曉莊學院,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。