[发明专利]一种Fabric区块链系统智能合约的安全分析检测方法有效
申请号: | 202210029433.4 | 申请日: | 2022-01-12 |
公开(公告)号: | CN114282227B | 公开(公告)日: | 2022-08-26 |
发明(设计)人: | 陈钟;关志;李青山;陈子明;李悦;崔冬琪;董宇 | 申请(专利权)人: | 北京大学;博雅正链(北京)科技有限公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56 |
代理公司: | 北京万象新悦知识产权代理有限公司 11360 | 代理人: | 黄凤茹 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 fabric 区块 系统 智能 合约 安全 分析 检测 方法 | ||
1.一种Fabric区块链系统智能合约的安全分析检测方法,其特征是,所述方法与智能合约的开发语言无关,通过将不同开发语言编写的智能合约统一转换为中间语言IR,并根据中间语言IR的语言特征改进污点分析方法,实现在中间语言IR上跟踪安全风险的产生和传播过程,由此检测识别Fabric区块链系统智能合约是否存在安全漏洞;包括如下步骤:
1)对智能合约的源代码进行预处理,将不同语言编写的智能合约进行统一转换到中间语言,消除智能合约源语言的特性,使得智能合约漏洞检测与源语言解耦;所述中间语言采用中间语言IR;进行统一转换得到智能合约的中间语言IR;
2)对步骤1)得到的智能合约的中间语言IR进行污点分析;包括:
21)根据智能合约中存在的安全风险,初始化污点变量和非污点变量;
定义污点源为安全风险产生的位置;按照污点类型,将得到的智能合约的中间语言IR中所有变量分为多种类型,包括:
污点变量,记为S;
非污点变量,记为NS;
污点指针,记为PS;
非污点指针,记为NPS;
常量,记为C;
跟踪智能合约的安全风险的产生和传播过程,判断污点源位置是否会影响智能合约的关键操作;如果智能合约的关键操作受到安全风险的影响,则智能合约中存在安全漏洞;此时根据污点源位置的变量是否为指针,如果是指针则标记为PS,否则标记为S;并将中间语言IR中其他位置出现的变量根据变量是否是指针类型定义标记为NS或NPS,将中间语言IR中所有的常量标记为C;
22)维护一个污点变量集合和非污点变量集合;通过扫描遍历智能合约的中间语言IR中的函数内和函数调用的代码及使用的变量,确定变量的变量类型,更新污点变量集合和非污点变量集合;上述遍历过程多次迭代执行,每次迭代均更新污点变量集合和非污点变量集合,直到两个集合中的变量的污点类型不再改变,停止迭代,完成污点的传播;
23)再次遍历智能合约的中间语言IR中的关键操作指令,如果检测到智能合约中的关键操作使用了污点变量S或污点指针PS,则识别为智能合约中存在安全漏洞;
通过上述步骤,实现Fabric区块链系统智能合约的安全分析检测,得到安全漏洞检测结果。
2.如权利要求1所述Fabric区块链系统智能合约的安全分析检测方法,其特征是,Fabric区块链系统智能合约的安全分析检测结果报告包括智能合约中检测到的漏洞的简略描述、出现的位置以及相应修改意见、检测结果统计信息;可将安全分析检测结果报告向用户界面输出。
3.如权利要求1所述Fabric区块链系统智能合约的安全分析检测方法,其特征是,步骤1)对智能合约的源代码进行预处理,具体是在智能合约开发阶段或部署之前,分别通过gollvm应用工具、JLang应用工具、TypeScriptCompiler应用工具将Go语言、Java语言、JavaScript编写的智能合约转换成中间语言IR,得到智能合约的中间语言IR。
4.如权利要求1所述Fabric区块链系统智能合约的安全分析检测方法,其特征是,步骤21)定义变量类型具体是:
a.污点变量S为与安全风险相关的值类型的变量;
b.非污点变量NS为与安全风险无关的值类型的变量;
c.污点指针PS为与安全风险有关的内存区域的指针;
d.非污点指针NPS为与安全风险无关的内存区域的指针;
e.常量C为一个确定的数值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学;博雅正链(北京)科技有限公司,未经北京大学;博雅正链(北京)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210029433.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种医疗床辅助陪护座椅
- 下一篇:光伏组件清扫机的防偏移驱动装置