一种基于区块链的智能合约安全检测系统
文献发布时间:2024-04-18 19:57:50
技术领域
本发明涉及数据分析技术领域,更具体地说,本发明涉及一种基于区块链的智能合约安全检测系统。
背景技术
现有的智能合约安全检测系统,包括智能合约预处理程序模块、核心检测引擎模块和检测结果展示模块,通过智能合约预处理程序模块,对合约进行抽象语法树分析和内部调用关系分析,实现对合约函数关联关系的分析;核心检测引擎模块根据非确定性、数据隐私安全和逻辑安全每种风险项的特征,采用包括包检测、指令检测和逻辑检测等,分析得出合约的风险项;最后检测结果通过可视化展示模块呈现给用户;
然而上述技术仍存在不足,上述系统在使用过程中仅使用了静态分析技术,数据分析具有一定的局限性,并且分析的方面不够完整,缺少对权限控制、交易记录的分析,并且在检测之后得出合约的风险项,并没有说明风险程度,在最后将检测结果反馈给用户,缺少修复建议,用户仍需对风险项进行进一步分析和计算,寻找最合适的解决方案,上述系统不够智能化,只能发现风险不能提供解决风险的参考性建议,无法降低人工成本。
发明内容
为了克服现有技术的上述缺陷,本发明的提供一种基于区块链的智能合约安全检测系统,通过对合约代码、交易记录以及其他数据进行分析,得到合约安全性指数,并生成修复建议,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:包括:代码分析模块、交易记录分析模块、权限控制模块、安全漏洞识别模块、数据整合模块、修复建议生成模块以及可视化界面模块。
代码分析模块:用于解析智能合约的代码,提取合约代码内的关键信息,并将信息传输至安全漏洞识别模块;
交易记录分析模块:用于获取合约的交易记录,从中获取合约的使用情况、交易历史以及异常行为数据,并将数据传输至安全漏洞识别模块;
权限控制模块:用于限制用户对合约的操作权限,阻止未授权的用户进行恶意操作,并对权限控制过程进行分析,计算出智能合约的权限控制质量指数,将计算出的数据传输至数据整合模块;
安全漏洞识别模块:用于根据接收到的智能合约各类数据,利用静态和动态分析技术,对合约数据进行全面检测,识别存在的安全漏洞,并根据识别出的问题漏洞,计算出智能合约的漏洞危险性指数,并将合约的漏洞危险性指数传输至数据整合模块;
数据整合模块:用于根据智能合约的权限控制质量指数以及漏洞危险性指数计算出合约的安全性指数,并将计算出的数据传输至修复建议生成模块;
修复建议生成模块:用于对合约的安全性指数进行分级判断,并建立修复模型,根据安全性指数所处的不同等级,调取不同的修复模型,并根据修复模型生成修复建议,传输至可视化界面模块;
可视化界面模块:用于提供良好的用户界面,显示合约的安全状态、历史记录以及修复建议。
优选的,代码分析模块用于解析智能合约的代码,提取合约代码内的关键信息,所述代码分析模块具体包括:
词法语法分析单元:代码分析模块利用词法分析器将合约代码拆分成独立的词法单元,并将代码转化为词法单元的序列,再利用语法分析器,识别代码中的语法规则,并根据词法单元的序列构建抽象语法树;
语义分析单元:在语法分析的基础上,语法分析单元利用语义分析器对合约代码进行语义分析,检查代码中的语义错误和不一致;
控制流数据流分析单元:通过分析合约代码的控制流程,确定合约代码的执行路径和异常情况,通过数据流分析,生成合约代码的数据流图,展示变量的定义和使用、变量的赋值和传递;
数据传输单元:将各类分析结果传输至安全漏洞识别模块。
优选的,交易记录分析模块用于获取合约的交易记录,从中获取合约的使用情况、交易历史以及异常行为数据,所述交易记录分析模块具体包括:
合约使用情况分析单元:通过根据交易记录中的信息,分析合约的使用情况,具体包括:合约的调用次数、交易的数量和金额;
交易历史分析单元:交易记录分析模块可以分析合约的交易历史,得到合约的交易模式和交易行为数据;
异常行为分析:利用阈值分析、异常模式检测、数据关联分析技术,对交易模式、金额、频率进行分析,检测合约的异常行为。
优选的,权限控制模块用于限制用户对合约的操作权限,阻止未授权的用户进行恶意操作,并对权限控制过程进行分析,计算出智能合约的权限控制质量指数,所述权限控制模块具体包括:
权限控制定义单元:由合约开发者根据合约的具体需求确定合约的权限控制策略,具体包括需要进行权限控制的操作类型、每种操作权限对应的每种用户类型;
权限控制实现单元:根据权限控制策略,使用访问控制合约实现相应的权限控制机制;
权限控制分析单元:通过分析权限控制事件,获取权限控制数据,具体包括:正常操作次数、用户个数、未经授权的操作次数、存在权限被恶意绕过的情况次数、未经授权的用户冒充他人执行受限操作次数、权限控制失败次数、异常操作次数、操作者异常访问次数;
权限控制质量指数计算单元:根据分析的结果,计算智能合约的权限控制质量指数:
优选的,安全漏洞识别模块用于根据接收到的智能合约各类数据,利用静态和动态分析技术,对合约数据进行全面检测,识别存在的安全漏洞,并根据识别出的问题漏洞,计算出智能合约的漏洞危险性指数,所述安全漏洞识别模块具体包括:
静动态分析单元:利用符号执行以及模糊测试技术,对智能合约数据进行分析;
漏洞识别单元:根据静态和动态分析的结果,识别智能合约中存在的安全漏洞,具体包括:合约使用时长、漏洞个数、各漏洞类型发生的次数、易利用性指数、各漏洞造成的资金损失数量、数据泄露数量、合约功能受限程度、合约完整性受损程度、用户信任受损程度;
漏洞危险性指数计算单元:根据漏洞数据,计算智能合约的漏洞危险性指数:
优选的,数据整合模块用于根据智能合约的权限控制质量指数以及漏洞危险性指数计算出合约的安全性指数,所述数据整合模块具体包括:
数据接收单元:接收安全漏洞识别模块、权限控制模块传输的数据;
数据整合单元:根据接收到的数据,计算出合约的安全性指数:
数据传输单元:将计算出的合约安全性指数传输至修复建议生成模块。
优选的,修复建议生成模块用于对合约的安全性指数进行分级判断,并建立修复模型,根据安全性指数所处的不同等级,调取不同的修复模型,并根据修复模型生成修复建议,所述修复建议生成模块具体包括:
安全性等级划分单元:确定安全性指数的不同等级划分,当
修复模型设计单元:根据不同的安全性等级,设计相应的修复模型,首先收集现有合约中已知的漏洞样本、已修复样本和安全性评估报告,其次使用机器学习算法构建一个漏洞分类模型,之后确定修复策略和措施,使用规则引擎、知识库或专家系统,根据漏洞分类模型的识别结果和安全性等级,确定与每个漏洞类型和安全性等级相对应的修复策略和措施,最后采用规则引擎、机器学习算法以及混合方法,根据漏洞的安全性等级和具体特征,匹配相应的修复模型;
修复评估与反馈单元:通过漏洞修复案例的实际测试或模拟验证来评估修复效果,之后将修复模型部署到实际的交互式界面,为开发者或审计人员提供修复建议。
优选的,可视化界面模块用于提供良好的用户界面,显示合约的安全状态、历史记录以及修复建议,所述可视化界面模块具体包括:
安全状态浏览单元:在可视化界面上显示合约的安全状态概览,包括:漏洞数量、安全性等级;
历史记录查看单元:提供历史记录查看功能,显示合约的漏洞修复历史和相关信息;
修复建议展示单元:根据生成的相应修复建议在可视化界面上进行展示,具体包括漏洞描述、建议措施、代码示例和注意事项;
用户交互单元:提供用户交互功能,包括:搜索、筛选、排序,用户根据自己的需求查看和分析合约的安全状态和历史记录。
本发明的技术效果和优点:
本发明可以提高合约的安全性,通过对合约代码和交易记录的分析,可以及时发现合约中的潜在漏洞和安全风险,可以检测常见的安全漏洞,可以提供全面的安全分析和报告,系统通过数据整合模块将来自不同模块的数据整合在一起,提供综合的安全分析和报告,开发者和审计人员可以通过可视化界面模块直观地查看和理解安全分析结果,提高工作效率,可以提供修复建议系统可以根据检测到的安全漏洞,生成相应的修复建议,这些修复建议可以帮助开发者快速定位和修复合约的安全问题,提高合约的安全性。
附图说明
图1为本发明的系统结构框图。
图2为本发明的系统流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了如图1所示一种基于区块链的智能合约安全检测系统,包括:代码分析模块、交易记录分析模块、权限控制模块、安全漏洞识别模块、数据整合模块、修复建议生成模块以及可视化界面模块。
所述代码分析模块用于解析智能合约的代码,提取合约代码内的关键信息,并将信息传输至安全漏洞识别模块,所述交易记录分析模块用于获取合约的交易记录,从中获取合约的使用情况、交易历史以及异常行为数据,并将数据传输至安全漏洞识别模块,所述权限控制模块用于限制用户对合约的操作权限,阻止未授权的用户进行恶意操作,并对权限控制过程进行分析,计算出智能合约的权限控制质量指数,将计算出的数据传输至数据整合模块,所述安全漏洞识别模块用于根据接收到的智能合约各类数据,利用静态和动态分析技术,对合约数据进行全面检测,识别存在的安全漏洞,并根据识别出的问题漏洞,计算出智能合约的漏洞危险性指数,并将合约的漏洞危险性指数传输至数据整合模块,所述数据整合模块用于根据智能合约的权限控制质量指数以及漏洞危险性指数计算出合约的安全性指数,并将计算出的数据传输至修复建议生成模块,所述修复建议生成模块用于对合约的安全性指数进行分级判断,并建立修复模型,根据安全性指数所处的不同等级,调取不同的修复模型,并根据修复模型生成修复建议,传输至可视化界面模块,所述可视化界面模块用于提供良好的用户界面,显示合约的安全状态、历史记录以及修复建议。
本实施与现有技术的区别在于权限控制模块、安全漏洞识别模块、数据整合模块、修复建议生成模块,权限控制模块通过对访问权限设置门槛,以及对访问行为进行分析计算,得出合约的权限控制质量,安全漏洞识别模块增加识别功能,抓取各类漏洞,数据整合模块增加计算功能,计算出合约的安全性指数,修复建议生成模块增加模型建立功能,通过安全性指数的高低匹配合适的修复方案,开发者和审计人员可以通过可视化界面模块直观地查看和理解安全分析结果,提高工作效率。
如图2本实施例提供一种基于区块链的智能合约安全检测系统的方法流程图,具体包括下列步骤:
101、通过代码分析模块解析智能合约的代码,提取合约代码内的关键信息,所述代码分析模块进行合约代码分析的具体步骤为:
A1、词法语法分析:代码分析模块利用词法分析器将合约代码拆分成独立的词法单元,并将代码转化为词法单元的序列,再利用语法分析器,识别代码中的语法规则,并根据词法单元的序列构建抽象语法树;
A2、语义分析:在语法分析的基础上,语法分析单元利用语义分析器对合约代码进行语义分析,检查代码中的语义错误和不一致;
A3、控制流数据流分析:通过分析合约代码的控制流程,确定合约代码的执行路径和异常情况,通过数据流分析,生成合约代码的数据流图,展示变量的定义和使用、变量的赋值和传递;
进一步地,合约代码中,变量是用来存储和操作数据的标识符,通过数据流分析,可以准确地掌握合约代码中每一种变量的含义以及使用规则,数据流图清晰地展示了变量在合约代码中的流动和作用,帮助开发者理解代码的逻辑和数据依赖关系,识别潜在的数据漏洞和安全风险;
A4、数据传输:将各类分析结果传输至安全漏洞识别模块;
在这里需要说明的是:
代码分析模块可以全面地分析合约代码,帮助开发者和审计人员发现潜在的安全问题,通过合约代码的词法语法分析、语义分析、控制流数据流分析为后续合约安全性评估提供数据基础。
104、通过交易记录分析模块获取合约的交易记录,从中获取合约的使用情况、交易历史以及异常行为数据,所述交易记录分析模块进行合约交易记录分析的具体步骤为:
B1、合约使用情况分析:通过根据交易记录中的信息,分析合约的使用情况,具体包括:合约的调用次数、交易的数量和金额;
B2、交易历史分析:交易记录分析模块可以分析合约的交易历史,得到合约的交易模式和交易行为数据;
B3、异常行为分析:利用阈值分析、异常模式检测、数据关联分析技术,对交易模式、金额、频率进行分析,检测合约的异常行为;
进一步地,异常行为分析是通过分析交易记录中的模式和规律,检测出不正常的交易模式,检查是否有大量的交易发送到同一个地址或者从同一个地址发送出去,此举例仅为异常交易模式的一种,这种异常的交易模式可能暗示着合约的滥用或者攻击行为,在获取交易数据时,系统采用区块链技术对数据进行加密传输和储存有助于保证信息的安全性,防止信息泄露;
在这里需要说明的是:
交易记录分析模块可以识别异常的交易行为、非法的操作和未经授权的访问等,可以帮助监测合约的实际使用情况,并及时发现潜在的安全风险,可以分析出合约的使用情况和安全性。
103、通过权限控制模块限制用户对合约的操作权限,阻止未授权的用户进行恶意操作,并对权限控制过程进行分析,计算出智能合约的权限控制质量指数,所述权限控制模块进行权限控制和分析的具体步骤为:
C1、权限控制定义:由合约开发者根据合约的具体需求确定合约的权限控制策略,具体包括需要进行权限控制的操作类型、每种操作权限对应的每种用户类型;
C2、权限控制实现:根据权限控制策略,使用访问控制合约实现相应的权限控制机制;
C3、权限控制分析:通过分析权限控制事件,获取权限控制数据,具体包括:正常操作次数、用户个数、未经授权的操作次数、存在权限被恶意绕过的情况次数、未经授权的用户冒充他人执行受限操作次数、权限控制失败次数、异常操作次数、操作者异常访问次数;
进一步地,权限控制模块的具体实现和评估指标可以根据合约的需求和具体情况进行调整和定制;
C4、权限控制质量指数计算:根据分析的结果,计算智能合约的权限控制质量指数:
在这里需要说明的是:
权限控制模块可以对合约的访问和操作进行限制和验证,权限控制模块可以确保只有具有合适权限的用户才能执行敏感操作,从而降低合约的安全风险,并且可以提供额外的安全层级,增强合约的安全性。
104、通过安全漏洞识别模块根据接收到的智能合约各类数据,利用静态和动态分析技术,对合约数据进行全面检测,识别存在的安全漏洞,并根据识别出的问题漏洞,计算出智能合约的漏洞危险性指数,所述安全漏洞识别模块进行安全漏洞识别的具体步骤为:
D1、静动态分析:利用符号执行以及模糊测试技术,对智能合约数据进行分析;
进一步地,智能合约进行静态分析,主要利用Mythril、Slither工具,对合约代码进行静态分析,识别潜在的漏洞和安全风险,检查合约中的代码逻辑、函数调用关系、变量使用,分析结果包括潜在的重入漏洞、溢出漏洞、未经授权的函数调用,动态分析技术主要利用ruffle、Ganache工具,对合约代码进行动态分析,模拟合约的执行过程,并检测异常情况和安全风险观察合约在不同输入和状态下的行为,分析结果可能包括异常的函数调用、无效的状态转换、未处理的异常情况;
D2、漏洞识别:根据静态和动态分析的结果,识别智能合约中存在的安全漏洞,具体包括:合约使用时长、漏洞个数、各漏洞类型发生的次数、易利用性指数、各漏洞造成的资金损失数量、数据泄露数量、合约功能受限程度、合约完整性受损程度;
进一步地,系统可以模拟攻击场景,如权限控制不当、逻辑漏洞等,触发合约中的漏洞,并检测合约功能是否受到限制,系统可以检测是否存在未经授权的操作、是否存在无法执行的功能、是否存在权限提升的情况,并根据情况得出合约的受限程度,出现上述受限情况的次数在整个模拟攻击场景次数中的占比即为合约的功能受限程度;
进一步地,系统得出合约完整性受损程度时,可以模拟攻击场景,触发合约中的漏洞,并检测合约数据是否受到破坏或篡改,被篡改或破坏的数据占比即为合约的完整性受损程度;
进一步地,通过模拟攻击场景,系统可以得出各漏洞造成的资金损失数量、数据泄露数量;
进一步地,查阅漏洞数据库,检查是否有已经公开的漏洞利用工具、恶意代码或漏洞利用代码,存在的工具、代码数量越多,漏洞的易用性越高,漏洞的易用性即为该类漏洞存在的工具、代码版本数量占总漏洞利用工具和代码版本总数量的比重;
D3、漏洞危险性指数计算:根据漏洞数据,计算智能合约的漏洞危险性指数:
在这里需要说明的是:
安全漏洞识别模块可以检测重入漏洞、溢出漏洞、未经授权的函数调用等,可以帮助开发者和审计人员全面了解合约的安全性问题,可以通过数据分析计算,得出合约的漏洞危险性指数,为接下来的合约安全性评估提供数据支持。
105、通过数据整合模块根据智能合约的权限控制质量指数以及漏洞危险性指数计算出合约的安全性指数,所述数据整合模块进行数据整合计算的具体步骤为:
E1、数据接收:接收安全漏洞识别模块、权限控制模块传输的数据;
E2、数据整合:根据接收到的数据,计算出合约的安全性指数:
E3、数据传输:将计算出的合约安全性指数传输至修复建议生成模块;
在这里需要说明的是:
数据整合模块可以将来自不同模块的数据整合在一起,提供综合的安全分析和计算,数据整合模块的优点是可以提供全面的安全数据,帮助开发者和审计人员全面了解合约的安全情况。
106、通过修复建议生成模块对合约的安全性指数进行分级判断,并建立修复模型,根据安全性指数所处的不同等级,调取不同的修复模型,并根据修复模型生成修复建议,所述修复建议生成模块进行修复模型建立和修复建议生成的具体步骤为:
F1、安全性等级划分:确定安全性指数的不同等级划分,当
进一步地,在实际应用中,通过分析安全性直属的高低,并根据具体情况进行权衡和调整,以确定合适的安全性等级划分标准,在这里不做具体叙述;
F2、修复模型设计:根据不同的安全性等级,设计相应的修复模型,首先收集现有合约中已知的漏洞样本、已修复样本和安全性评估报告,其次使用机器学习算法构建一个漏洞分类模型,之后确定修复策略和措施,使用规则引擎、知识库或专家系统,根据漏洞分类模型的识别结果和安全性等级,确定与每个漏洞类型和安全性等级相对应的修复策略和措施,最后采用规则引擎、机器学习算法以及混合方法,根据漏洞的安全性等级和具体特征,匹配相应的修复模型;
进一步地,系统进行修复模型设计时,需要收集和整理各个安全性等级下的常见漏洞修复知识、修复方案、代码模板和最佳实践建议,并根据以往的修复数据以及测试结果定制和评估修复模型,修复模型可以是基于规则的修复逻辑,也可以是基于机器学习的模型,例如分类模型、生成模型,使用已有的合约和安全性指数标记的训练数据,训练每个等级的修复模型;
F3、修复评估与反馈:通过漏洞修复案例的实际测试或模拟验证来评估修复效果,之后将修复模型部署到实际的交互式界面,为开发者或审计人员提供修复建议;
在这里需要说明的是:
修复建议生成模块可以根据检测到的安全漏洞,生成相应的修复建议,修复建议生成模块的优点是可以帮助开发者快速定位和修复合约的安全问题,提高合约的安全性。
107、通过可视化界面模块提供良好的用户界面,显示合约的安全状态、历史记录以及修复建议,所述可视化界面模块进行数据展示地具体步骤为:
G1、安全状态浏览:在可视化界面上显示合约的安全状态概览,包括:漏洞数量、安全性等级;
进一步地,可以使用图表、指示器或颜色编码等方式,以直观的方式展示合约的安全性情况;
G2、历史记录查看:提供历史记录查看功能,显示合约的漏洞修复历史和相关信息;
进一步地,用户可以查看每个漏洞的修复状态、修复时间、修复方法等详细信息,以了解合约的安全性完善过程,历史纪录的查看可以进行修复数据的获取以及修复过程的溯源;
G3、修复建议展示:根据生成的相应修复建议在可视化界面上进行展示,具体包括漏洞描述、建议措施、代码示例和注意事项;
进一步地,修复建议需要详细描述合约中存在的漏洞,包括漏洞的类型、具体位置以及可能的攻击方式,基于漏洞的性质和修复模型的训练结果,修复建议应包括一系列具体的措施,以修复合约中的漏洞,包括建议用户进行代码重构、加入安全检查或限制、使用更安全的库或函数等,并提供针对具体漏洞的代码示例,展示如何对合约代码进行修改或增加特定的代码段,以修复漏洞,还应当提供相关的注意事项和警示,包括潜在的副作用、降低性能的可能性、遵循的最佳实践或约定等;
G4、用户交互:提供用户交互功能,包括:搜索、筛选、排序,用户根据自己的需求查看和分析合约的安全状态和历史记录;
在这里需要说明的是:
可视化界面模块可以以图形化的方式展示安全分析和检测结果,提供直观的界面和交互方式,可视化界面模块的优点是可以方便开发者和审计人员查看和理解安全分析结果,提高工作效率,帮助用户更好的提高合约的安全性。
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于区块链智能合约的个人学历信息管理方法及系统
- 一种基于智能合约代码数值溢出的安全检测方法
- 一种基于区块链的通信网络交换机智能检测系统
- 一种基于静态分析的区块链智能合约安全检测系统
- 一种基于静态分析的区块链智能合约安全检测系统