当前位置: 首页 > 专利查询>南京大学专利>正文

一种动静态相结合的HyperledgerFabric链码漏洞检测方法技术

技术编号:36371931 阅读:53 留言:0更新日期:2023-01-18 09:30
本发明专利技术提出了一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,该方法为基于静态检测和动态检测相结合的Hyperledger Fabric(HF)智能合约漏洞检测方法,用于检测基于Go语言编写的HF智能合约(链码)的已知和未知漏洞。该方法包括以下步骤:S1、对待测链码的包定义语句和结构体定义语句进行格式化处理;S2、对格式化后的链码进行静态检测;S3、对格式化后的链码进行动态检测;S4、生成待测链码的检测报告。本方法将传统的软工技术应用于HF链码这个新领域,旨在落实HF链码的安全实践,确保HF链码正常工作,同时为HF链码的安全研究提供一些思路。HF链码的安全研究提供一些思路。HF链码的安全研究提供一些思路。

【技术实现步骤摘要】
一种动静态相结合的Hyperledger Fabric链码漏洞检测方法


[0001]本专利技术涉及区块链智能合约安全
,具体为一种动静态相结合的Hyperledger Fabric链码漏洞检测方法。

技术介绍

[0002]Hyperledger Fabric(HF)以其安全可靠的优势,被广泛应用于医疗、食品安全等多个领域。运行在HF上的智能合约(链码)也在分散的应用场景中扮演着越来越重要的角色。然而,随着链码经济价值的提高,针对链码的各种类型攻击不断涌现,导致巨额财务损失,严重影响HF的发展,因此解决链码的安全问题具有重要意义。然而,目前HF链码的漏洞类型梳理并不全面,忽略了实践中常见的开发规范和隐私数据安全问题。检测技术主要以静态检测为主,检测结果不理想,且检测目标局限在已知漏洞类型。检测方法多停留在理论层面,实践性较弱。

技术实现思路

[0003]本专利技术的目的在于提供一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,以解决现有研究的局限性。具体而言,为了检测常见的HF链码漏洞类型,本专利技术设计了基于抽象语法树和形式化验证的静态检测方法,以及基于污点分析的动态检测方法;为了检测未知的链码漏洞类型,使现有的检测技术不再局限于检测已知漏洞类型,本专利技术引入了模糊测试方法,检测尚未被学术界和工业界发现的HF链码漏洞类型。
[0004]技术方案:为实现上述专利技术目的,本专利技术采用如下技术方案:
[0005]一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,包括已知漏洞和未知漏洞的检测方法,具体步骤如下:
[0006]S1、对待测链码的包定义语句和结构体定义语句进行格式化处理;
[0007]S2、对格式化后的链码进行静态检测;
[0008]S3、对格式化后的链码进行动态检测;
[0009]S4、生成待测链码的检测报告。
[0010]进一步的,已知漏洞指“使用内置函数”、“字段声明”、“使用继承的函数和变量”、“程序并发性”、“映射结构迭代”、“未初始化存储指针”、“全局变量”、“写后读”、“未使用的隐私数据机制”、“范围查询风险”、“跨通道链码调用”、“系统命令执行”、“外部库调用”、“Web服务”、“外部文件访问”、“随机数生成”、“系统时间戳”、“未处理的错误”、“未加密的敏感数据”、“未检查的输入参数”、“无限循环”和“注释标题不足以检查实现和使用情况”这22种漏洞类型。
[0011]进一步的,未知漏洞指尚未被工业界和学术界发现的HF链码漏洞类型。
[0012]进一步的,在步骤S1中,还包括以下步骤:
[0013]S11、将待测链码的包定义语句格式化为“Packagetest”;
[0014]S12、将待测链码的结构体定义语句中结构体名称格式化为“Chaincode”。
[0015]进一步的,在步骤S2中,静态检测指基于抽象语法树的模型检测方法。
[0016]进一步的,在步骤S2中,还包括以下步骤:
[0017]S21、根据链码漏洞类型的特征建立漏洞状态库;
[0018]S22、借助抽象语法树提取待测链码的特征;
[0019]S23、遍历待测链码的抽象语法树,并将树节点与漏洞状态库中所有漏洞状态逐一进行匹配;
[0020]S24、收集并记录步骤S23中的匹配结果。
[0021]进一步的,在步骤S21中,链码漏洞类型指“使用内置函数”、“字段声明”、“使用继承的函数和变量”、“程序并发性”、“映射结构迭代”、“未初始化存储指针”、“全局变量”、“写后读”、“未使用的隐私数据机制”、“范围查询风险”、“跨通道链码调用”、“系统命令执行”、“外部库调用”、“Web服务”、“外部文件访问”、“随机数生成”、“系统时间戳”、“未处理的错误”和“未加密的敏感数据”漏洞。
[0022]进一步的,在步骤S21中,漏洞状态指为了检测链码漏洞,抽象语法树每种类型的节点所应满足的状态。漏洞状态库指由多个漏洞状态组合而成的库。
[0023]进一步的,在步骤S22中,抽象语法树指表示程序代码抽象语法结构的一种树形结构。
[0024]进一步的,在步骤S22中,还包括以下步骤:
[0025]S221、词法分析器从左到右遍历链码源码,识别出链码中的各个单词,并确定单词类型,从而将链码源码转化为词法单元;
[0026]S222、语法分析器对词法单元进行解析,产生树节点;
[0027]S223、组合树节点,构建抽象语法树。
[0028]进一步的,在步骤S221中,词法单元指将每个单词表示为键值对的形式,其中键为单词类型,值为单词值
[0029]进一步的,在步骤S23中,遍历抽象语法树指根据广度优先算法遍历抽象语法树。
[0030]进一步的,在步骤S24中,匹配结果包含链码漏洞类型、修复信息以及属性名称。
[0031]进一步的,在步骤S3中,动态检测指基于符号执行、污点分析和模糊测试的检测方法。
[0032]进一步的,在步骤S3中,还包括以下步骤:
[0033]S31、根据链码漏洞类型的特征建立危险操作库;
[0034]S32、采用符号执行方法解析待测链码,建立初始语料库;
[0035]S33、从语料库中提取一个语料;
[0036]S34、采用步骤S33中的语料对待测链码进行污点分析;
[0037]S35、记录步骤S34中的异常信息;
[0038]S36、标记并筛选步骤S33中的语料;
[0039]S37、随机选取一种变异算法对步骤S33中的语料进行变异,并将变异后的语料加入语料库;
[0040]S38、如果语料库为空或执行的语料数量符合预期的语料数量,则停止测试,否则测试流程跳转至步骤S33继续执行。
[0041]进一步的,在步骤S31中,链码漏洞类型指“未检查的输入参数”、“无限循环”和“注
释标题不足以检查实现和使用情况”漏洞。
[0042]进一步的,在步骤S31中,危险操作指链码在执行过程中触发漏洞的行为。危险操作库指由危险操作组合而成的库。
[0043]进一步的,在步骤S32中,还包括以下步骤:
[0044]S321、以链码方法为单位将链码进行分割;
[0045]S322、对于每个链码方法,提取方法内的约束条件,并将约束条件取反;
[0046]S323、对约束条件以及取反后的约束条件进行求解,获得该链码方法的解集;
[0047]S324、将所有链码方法的解集进行排列组合,产生多个语料。将这些语料加入语料库后形成初始语料库。
[0048]进一步的,在步骤S33中,语料为JSON类型,其中键为链码方法名称,值为该链码方法的参数。
[0049]进一步的,在步骤S34中,还包括以下步骤:
[0050]S341、以链码方法为单位将待测链码和语料分割为多个方法本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于,包括已知漏洞和未知漏洞的检测方法,具体步骤如下:S1、对待测链码的包定义语句和结构体定义语句进行格式化处理;S2、对格式化后的链码进行静态检测;S3、对格式化后的链码进行动态检测;S4、生成待测链码的检测报告。2.根据权利要求1所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:已知漏洞指“使用内置函数”、“字段声明”、“使用继承的函数和变量”、“程序并发性”、“映射结构迭代”、“未初始化存储指针”、“全局变量”、“写后读”、“未使用的隐私数据机制”、“范围查询风险”、“跨通道链码调用”、“系统命令执行”、“外部库调用”、“Web服务”、“外部文件访问”、“随机数生成”、“系统时间戳”、“未处理的错误”、“未加密的敏感数据”、“未检查的输入参数”、“无限循环”和“注释标题不足以检查实现和使用情况”这22种HF链码漏洞类型。3.根据权利要求1所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:未知漏洞指尚未被工业界和学术界发现的HF链码漏洞类型。4.根据权利要求1所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:在步骤S1中,还包括以下步骤:S11、将待测链码的包定义语句格式化为“Packagetest”;S12、将待测链码的结构体定义语句中结构体名称格式化为“Chaincode”。5.根据权利要求1所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:在步骤S2中,静态检测指基于抽象语法树的模型检测方法;在步骤S2中,还包括以下步骤:S21、根据链码漏洞类型的特征建立漏洞状态库;S22、借助抽象语法树提取待测链码的特征;S23、遍历待测链码的抽象语法树,并将树节点与漏洞状态库中所有漏洞状态逐一进行匹配;S24、收集并记录步骤S23中的匹配结果。6.根据权利要求5所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:在步骤S21中,链码漏洞类型指“使用内置函数”、“字段声明”、“使用继承的函数和变量”、“程序并发性”、“映射结构迭代”、“未初始化存储指针”、“全局变量”、“写后读”、“未使用的隐私数据机制”、“范围查询风险”、“跨通道链码调用”、“系统命令执行”、“外部库调用”、“Web服务”、“外部文件访问”、“随机数生成”、“系统时间戳”、“未处理的错误”和“未加密的敏感数据”漏洞。7.根据权利要求6所述一种动静态相结合的Hyperledger Fabric链码漏洞检测方法,其特征在于:在步骤S21中,漏洞状态指为了检测链码漏洞,抽象语法树每种类型的节点所应满足的状态,漏洞状态库指由多个漏洞状态组合而成的库;在步骤S22中,抽象语法树指表示程序代码抽象语法结构的一种树形结构;在步骤S23中,遍历抽象语法树指根据广度优先算法遍历抽象语法树;
在步骤S24中,匹配结果包含链码漏洞类型、修复信息以及属性名称。8.根据权利要求5所述一种动静态相结合的Hyperledger Fabric链码...

【专利技术属性】
技术研发人员:张贺王岩泽丁梦洁李杉杉李佩如荣国平周鑫邵栋
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1