[發明專利]一種以太坊智能合約的多標簽分類和漏洞檢測方法有效
| 申請號: | 202010836902.4 | 申請日: | 2020-08-19 |
| 公開(公告)號: | CN112115326B | 公開(公告)日: | 2022-07-29 |
| 發明(設計)人: | 王偉;李浥東;宋晶晶 | 申請(專利權)人: | 北京交通大學 |
| 主分類號: | G06F16/906 | 分類號: | G06F16/906;G06F16/951;G06F21/57;G06N20/00 |
| 代理公司: | 北京市商泰律師事務所 11255 | 代理人: | 黃曉軍 |
| 地址: | 100044 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 以太 智能 合約 標簽 分類 漏洞 檢測 方法 | ||
1.一種以太坊智能合約的漏洞檢測方法,其特征在于,包括:
利用已驗證的智能合約構成樣本數據集,對樣本數據集中的樣本進行特征提取,使用特征向量來表示樣本;
基于各個樣本的特征向量訓練各種多標簽分類模型,對各個多標簽分類模型的分類效果進行評價,選取分類效果最好的多標簽分類模型;
將待分類的以太坊智能合約輸入到選取的多標簽分類模型中,該多標簽分類模型輸出所述待分類的以太坊智能合約的漏洞檢測結果;
所述的對樣本數據集中的樣本進行特征提取,使用特征向量來表示樣本,包括:
對樣本數據集中的樣本有無漏洞進行標定,并對有漏洞的樣本進行進一步的細化分類;
通過對漏洞標定后的樣本的合約源碼進行編譯和字節碼解析,將編寫智能合約的Solidity高級語言轉化為操作碼流,利用設定的操作碼抽象規則對樣本的操作碼流進行抽象化處理,采用n-gram算法把抽象化的操作碼數據流分割成一系列bigram特征片段,對所有的bigram特征片段共提取1619維bigram特征;
通過定義特征計算公式計算bigram特征的特征值,將所有的特征值組成特征集合,將所述特征集合格式化處理成向量格式,得到樣本的特征向量集合,每一個特征向量代表一個樣本,每個特征向量中包含樣本的分類和特征數據;
所述的對樣本數據集中的樣本有無漏洞進行標定,并對有漏洞的樣本進行進一步的細化分類,包括:
通過Oyente、Securify和Mythril三種工具掃描樣本數據集中的樣本的合約源碼,判別合約源碼是否具有漏洞,以及具有哪幾種漏洞,得到樣本的初步數據標定結果,對標定有漏洞的樣本的合約源碼通過編寫合約交易測試用例,并在Remix IDE中部署調試交易,驗證合約是否具有漏洞,得到樣本的細化分類的數據標定結果;
所述的基于各個樣本的特征向量訓練各種多標簽分類模型,對各個多標簽分類模型的分類效果進行評價,選取分類效果最好的多標簽分類模型,包括:
基于各個樣本的特征向量數據采用機器學習分類算法,訓練樣本的各個多標簽分類模型,所述各個多標簽分類模型包括XGBoost、AdaBoost、隨機森林,支持向量機和k近鄰5種樣本的多標簽分類模型,將各個樣本的特征向量分別輸入到各個樣本的多標簽分類模型中,每個樣本的多標簽分類模型輸出樣本是否具有漏洞及具有哪幾種漏洞的分類結果,樣本的漏洞包括整數下溢漏洞、整數上溢漏洞、交易順序依賴漏洞、時間戳依賴漏洞、返回值漏洞和代碼重入漏洞;
通過micro-F1、macro-F1和F1-score評價指標將各個多標簽分類模型輸出的樣本的分類結果與樣本的漏洞的細化分類結果進行比較,根據比較結果對各個多標簽分類模型的分類效果進行評價,選取訓練好的分類效果最好的多標簽分類模型。
2.根據權利要求1所述的方法,其特征在于,所述的利用已驗證的智能合約構成樣本數據集,包括:
從Etherscan網站爬取一定數量的已驗證的智能合約數據,利用所有的智能合約數據構成樣本數據集。
3.根據權利要求1所述的方法,其特征在于,所述的設定的操作碼抽象規則包括:
4.根據權利要求1所述的方法,其特征在于,所述樣本是否具有漏洞及具有哪幾種漏洞的分類結果通過分類標簽來表示,分類標簽中的每一項代表一種漏洞,每一項的值為1代表具有該種漏洞,為0代表不具有該種漏洞。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京交通大學,未經北京交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010836902.4/1.html,轉載請聲明來源鉆瓜專利網。





