System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于區塊鏈,提出了一種面向區塊鏈代碼生態漏洞識別方法及系統。
技術介紹
1、作為一種分布式賬本技術,區塊鏈越來越受歡迎,特別是在實現有價值的加密貨幣和智能合約方面。然而,區塊鏈軟件系統不可避免地存在許多漏洞。盡管智能合約中的漏洞已經得到普遍研究,但底層區塊鏈系統的安全漏洞卻很少被探索。在2022年的一項研究中顯示,在幾個主流的區塊鏈安全補丁的修復記錄中,區塊鏈系統層漏洞修復占所有區塊鏈漏洞事件的62%-78%,但在高達2000余次修復中,具有cve編號的以太坊公開漏洞只有33個,比特幣漏洞只有4個,這意味著大量的區塊鏈漏洞是在攻擊事件發生后才得到修復,設計一種區塊鏈系統層的漏洞分析與識別方案刻不容緩。
2、由于區塊鏈生態系統的開源特性,新的區塊鏈常常會分叉或部分重用經典區塊鏈的代碼。已有的研究表明,區塊鏈的系統級漏洞常集中在與共識、錢包和網絡相關的高度敏感模塊中,與驗證、交易關聯、區塊關聯、節點關聯、錢包密鑰相關的模塊更容易受到影響。經調查,這些模塊的漏洞往往使用相同或近似的漏洞代碼模式,這就為利用分叉傳播和代碼相似性設計漏洞檢測方式提供可能性。
技術實現思路
1、為了克服現有檢測技術在區塊鏈系統層漏洞檢測方面的不足,本專利技術提供一種面向區塊鏈代碼生態漏洞識別方法及系統,用于分析區塊鏈所使用的基礎庫和重用代碼中潛在的內生安全風險,有效地保護區塊鏈上用戶的財產安全。
2、為實現上述目的,本專利技術的技術方案包括以下內容。
3、一種面向區
4、抓取公有鏈項目錯誤信息和代碼提交信息,建立包含鏈代碼問題與代碼提交信息之間映射關系的原始數據庫;
5、對鏈代碼問題與代碼提交信息之間的映射關系進行過濾,獲取漏洞關聯的代碼提交信息;
6、從所述漏洞關聯的代碼提交信息提取漏洞代碼、補丁代碼以及補丁代碼標題,并基于所述補丁代碼標題獲取對應的漏洞類型后,生成包含漏洞類型、漏洞代碼和補丁代碼的集合;
7、對漏洞代碼抽象化,并根據漏洞代碼和補丁代碼生成補丁模式后,生成包含漏洞類型、抽象化漏洞代碼和補丁模式的最終漏洞數據庫;
8、對于一待檢測鏈代碼,依據抽象化漏洞代碼獲取存在潛在漏洞的相關代碼,并通過計算代碼相似度,獲取該存在潛在漏洞的相關代碼對應的源項目中的補丁代碼;
9、基于所述補丁模式,在該源項目中的補丁代碼中確定修復所述待檢測鏈代碼的補丁代碼。
10、進一步地,所述抓取公有鏈項目錯誤信息和代碼提交信息,建立包含鏈代碼問題與代碼提交信息之間映射關系的原始數據庫,包括:
11、使用github?api,收集公有鏈項目錯誤信息中每個已關閉問題/pr的信息;其中,所述已關閉問題/pr的信息包括:問題標題、問題主體、評論、事件和錯誤類別標簽;
12、爬取一個倉庫的所有代碼提交信息,并在所有代碼提交信息中確定與錯誤有關的代碼提交信息之后,提取與錯誤有關的代碼提交信息;其中,所述代碼提交信息包括:提交標題、提交消息、受影響的文件和id/url;
13、篩選掉沒有補丁提交信息的已關閉問題/pr;
14、基于已關閉問題頁面的事件信息、pr的提交列表、以及在提交標題與提交消息中識別出問題/pr編號,建立鏈代碼問題與代碼提交信息之間的映射關系;
15、建立原始數據庫,所述原始數據庫包含鏈代碼問題與代碼提交信息之間的映射關系,以及該鏈代碼問題與代碼提交信息之間的映射關系所涉及到的鏈代碼問題與代碼提交信息。
16、進一步地,所述對鏈代碼問題與代碼提交信息之間的映射關系進行過濾,獲取漏洞關聯的代碼提交信息,包括:
17、根據安全問題相關的關鍵字對原始數據庫的鏈代碼問題的進行篩選,得到篩選后的鏈代碼問題與代碼提交信息之間的映射關系;
18、對于篩選后的鏈代碼問題與代碼提交信息之間的映射關系,通過提交過濾、文件過濾、標簽過濾和關鍵詞過濾,篩選掉包含普通問題的鏈代碼問題與代碼提交信息,以得到漏洞關聯的代碼提交信息;其中,
19、所述提交過濾是通過代碼提交信息中必須包含代碼更改,對代碼提交信息進行過濾;
20、所述文件過濾是基于代碼提交信息中對應源代碼的文件類型,對代碼提交信息進行過濾;
21、所述標簽過濾是基于鏈代碼問題/pr的標簽和代碼提交信息的標簽,對鏈代碼問題與代碼提交信息進行過濾;
22、所述關鍵詞過濾是基于問題/pr的標題和正文中的關鍵詞,對鏈代碼問題進行過濾。
23、進一步地,所述基于所述補丁代碼標題獲取對應的漏洞類型,包括:
24、刪除所述補丁代碼標題中的無用詞,得到補丁代碼標題中的關鍵詞;其中,所述無用詞包括:模塊信息、版本信息、特殊詞匯和形容詞;
25、在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞;
26、使用word2vec將所有漏洞類型關鍵詞嵌入向量空間,并通過wmd文本相似度度量對漏洞類型關鍵詞向量進行聚類,得到該代碼提交信息對應的區塊鏈代碼漏洞類型。
27、進一步地,所述在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞,包括:
28、對于含有介詞和動詞的補丁代碼標題,所述在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞,包括:
29、如果補丁代碼標題只有一個動詞和一個介詞存在,并且介詞出現在動詞之后,該動詞和介詞是漏洞類型關鍵詞;
30、如果補丁代碼標題沒有動詞但是存在介詞,或者沒有介詞但是存在動詞,則確定介詞或動詞為漏洞類型關鍵詞;
31、如果補丁代碼標題中出現多個動詞,將具有最高頻率的動詞視為漏洞類型關鍵詞;如果標題中出現多個介詞,則確定目標介詞為在目標動詞之后首次出現的介詞為漏洞類型關鍵詞;
32、對于不同時含有介詞和動詞的漏洞標題,所述在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞,包括:
33、如果只有目標動詞存在,則目標動詞之后的所有詞都將被視為漏洞類型關鍵詞;
34、如果只有目標介詞存在,則目標介詞之前的所有詞都將被視為漏洞類型關鍵詞;
35、如果沒有目標詞存在,則將補丁代碼標題作為漏洞類型關鍵詞。
36、進一步地,對漏洞代碼抽象化,包括:
37、保留關鍵字識別的控制流語句,并保留特定的數據類型和運算符;
38、和,
39、去除函數的參數和調用者變量;
40、和,
41、抽象化變量名和變量值。
42、進一步地,根據漏洞代碼和補丁代碼生成補丁模式,包括:
43、保留補丁代碼中的diff代碼塊,并通過連續的+行和-行將diff代碼塊分成單獨片段;
44、對于每一個+行和-行,計算與漏洞代碼中代碼塊的相似度;
45、當相似度大于設定閾值時,該+行或-行為修改行;
本文檔來自技高網...【技術保護點】
1.一種面向區塊鏈代碼生態漏洞識別方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述抓取公有鏈項目錯誤信息和代碼提交信息,建立包含鏈代碼問題與代碼提交信息之間映射關系的原始數據庫,包括:
3.根據權利要求1所述的方法,其特征在于,所述對鏈代碼問題與代碼提交信息之間的映射關系進行過濾,獲取漏洞關聯的代碼提交信息,包括:
4.根據權利要求1所述的方法,其特征在于,所述基于所述補丁代碼標題獲取對應的漏洞類型,包括:
5.根據權利要求4所述的方法,其特征在于,所述在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞,包括:
6.根據權利要求1所述的方法,其特征在于,對漏洞代碼抽象化,包括:
7.根據權利要求1所述的方法,其特征在于,根據漏洞代碼和補丁代碼生成補丁模式,包括:
8.根據權利要求1所述的方法,其特征在于,對于一待檢測鏈代碼,依據抽象化漏洞代碼獲取存在潛在漏洞的相關代碼,并通過計算代碼相似度,獲取該存在潛在漏洞的相關代碼對應的源項目中的補丁代碼,包括:
9.根據
10.一種面向區塊鏈代碼生態漏洞識別系統,其特征在于,所述系統包括:
...【技術特征摘要】
1.一種面向區塊鏈代碼生態漏洞識別方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述抓取公有鏈項目錯誤信息和代碼提交信息,建立包含鏈代碼問題與代碼提交信息之間映射關系的原始數據庫,包括:
3.根據權利要求1所述的方法,其特征在于,所述對鏈代碼問題與代碼提交信息之間的映射關系進行過濾,獲取漏洞關聯的代碼提交信息,包括:
4.根據權利要求1所述的方法,其特征在于,所述基于所述補丁代碼標題獲取對應的漏洞類型,包括:
5.根據權利要求4所述的方法,其特征在于,所述在補丁代碼標題中的關鍵詞中定位漏洞類型關鍵詞,包括:
【專利技術屬性】
技術研發人員:程宥霖,宋冬梅,蘆翔,范婷,
申請(專利權)人:中國科學院信息工程研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。