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所述的方法,其特征在于,所述在补丁代码标题中的关键词中定位漏洞类型关键词,包括:
【专利技术属性】
技术研发人员:程宥霖,宋冬梅,芦翔,范婷,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。