【技术实现步骤摘要】
一种Fabric区块链系统智能合约的安全分析检测方法
[0001]本专利技术涉及信息安全
,尤其涉及一种针对Fabric区块链系统智能合约的安全分析检测方法。
技术介绍
[0002]Fabric是目前最流行的面向企业应用的开源区块链平台之一。智能合约是指运行在区块链系统上的一段程序,规定了网络系统成员之间的业务逻辑,是传统合约在网络系统中的数字化形式。写入区块链系统中的智能合约,在存储、读取、执行的整个过程中公开透明,可追踪且不可篡改。
[0003]与传统应用程序相比,智能合约的安全问题主要存在以下两方面的差别:一方面,传统应用程序发现错误后可以及时修补并发布新的版本,但是智能合约部署后是不可变的,即很难修复有漏洞的智能合约。因此,在部署之前对智能合约的正确性和安全性进行严格验证至关重要。
[0004]另一方面,大多区块链系统如“以太坊”往往采用领域专用语言如solidity编写智能合约,但是在Fabric系统中,智能合约是由通用编程语言(Go,Java,JavaScript)开发的。这极大降低了开发者 ...
【技术保护点】
【技术特征摘要】
1.一种Fabric区块链系统智能合约的安全分析检测方法,其特征是,所述方法与智能合约的开发语言无关,通过将不同开发语言编写的智能合约统一转换为中间语言IR,并根据IR语言特征改进污点分析方法,实现在IR上跟踪安全风险的产生和传播过程,由此检测识别其是否存在安全漏洞;包括如下步骤:1)对智能合约的源代码进行预处理,将不同语言编写的智能合约进行统一转换到中间语言,消除智能合约源语言的特性,使得智能合约漏洞检测与源语言解耦;所述中间语言采用中间语言IR;进行统一转换得到智能合约IR;2)对步骤1)得到的智能合约IR进行污点分析;包括:21)根据智能合约中存在的安全风险,初始化污点变量和非污点变量;定义污点源为安全风险产生的位置;按照污点类型,将得到的智能合约IR中所有变量分为多种类型,包括:污点变量
푆
;非污点变量
푁푆
;污点指针
푃푆
;非污点指针
푁푃푆
;常量
퐶
;跟踪智能合约的安全风险的产生和传播过程,判断污点源位置是否会影响智能合约的关键操作;如果智能合约的关键操作受到安全风险的影响,则智能合约中存在安全漏洞;此时根据污点源位置的变量是否为指针,如果是指针则标记为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语言,、avaScript编写的智能合约转换成中间语言IR,得到智能合约IR。4.如权利要求1所述Fabric区块链系统智能合约的安全分析检测方法,其特征是,步骤21)定义变量类型具体是:a.污点变量
푆
为与安全风险相关的值类型的变量;b.非污点变量
푁푆
为与安全风险无关的值类型的变量;c.污点指针
푃푆
为与安全风险有关的内存区域的指针;d.非污点指针
푁푃푆
为与安全风险无关的内存区域的指针;
e.常量
퐶
...
【专利技术属性】
技术研发人员:陈钟,关志,李青山,陈子明,李悦,崔冬琪,董宇,
申请(专利权)人:博雅正链北京科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。