一种智能合约的安全测试系统及方法技术方案

技术编号:31078474 阅读:35 留言:0更新日期:2021-12-01 11:33
本发明专利技术提供了一种智能合约的安全测试系统及方法,该系统包括:前端交互模块,用于接收智能合约的输入值;预处理模块,用于对智能合约的输入值进行预处理;第一测试模块,用于当输入值为源代码时,对智能合约的源代码进行第一测试;第二测试模块,用于当输入值为字节码时,对智能合约的字节码进行第二测试;报告模块,用于根据第一测试和/或第二测试的测试结果输出安全测试报告。利用上述方案,能够分别从针对源代码文件和针对二进制文件两方面对区块链的智能合约进行检测,充分利用代码文件中的细节信息,提高检测的覆盖率,降低误报率。降低误报率。降低误报率。

【技术实现步骤摘要】
一种智能合约的安全测试系统及方法


[0001]本专利技术属于测试领域,具体涉及一种智能合约的安全测试系统及方法。

技术介绍

[0002]本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]智能合约是区块链的核心技术之一,其本质是计算机程序,作为运行在区块链上的计算机程序,极大的丰富了区块链的功能,使得区块链不仅仅是分布式账本数据库,而且能够完成一定程度的业务处理。由于区块链不可篡改的特性,一旦被部署到区块链上,则无法修改。如果智能合约中存在安全漏洞,一旦安全漏洞被利用,极有可能导致灾难性的后果。
[0004]目前,常见的智能合约安全漏洞检测方法包括:Kosba提出的HawK系统是一个可保障智能合约系统隐私的分布式智能合约系统,该系统可通过代码自动生成密码协议,因此区块链实际存储的信息不是交易的信息,而是密码学原语,从而该方案保证了区块链智能合约中交易信息的安全性。Luu实现了一个名为Oyente的符号执行工具,可用于查找潜在的安全漏洞。Bhargava本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种智能合约的安全测试系统,其特征在于,包括:前端交互模块,用于接收智能合约的输入值;预处理模块,用于对所述智能合约的输入值进行预处理;第一测试模块,用于当所述输入值为源代码时,对所述智能合约的源代码进行第一测试;第二测试模块,用于当所述输入值为字节码时,对所述智能合约的字节码进行第二测试;报告模块,用于根据所述第一测试和/或第二测试的测试结果输出安全测试报告。2.根据权利要求1所述的系统,其特征在于,所述输入值包括以下任意一项或多项:源代码、项目工程的压缩包、字节码、已发布的智能合约的地址。3.根据权利要求2所述的系统,其特征在于,所述预处理模块还用于:当所述输入值为源代码时,测试所述源代码是否存在恶意代码;和/或,当所述输入值为字节码时,测试所述字节码是否合法;和/或,当所述输入值为压缩包时,首先判断所述压缩包是否可以进行解压,若可解压,在所述解压之后,判断是否存在合法的源代码或字节码作为所述输入值;和/或,当所述输入值为已发布的智能合约的地址时,通过所述地址访问所述已发布的智能合约,其中,若所述已发布的智能合约已经源代码开源,则获取所述已发布的智能合约的源代码作为所述输入值,并测试其是否存在恶意代码;若所述已发布的智能合约未开源,则获取所述智能合约的字节码作为所述输入值,并判断其合法性。4.根据权利要求1所述的系统,其特征在于,所述第一测试模块包括:语法匹配模块,用于:对多种类型的漏洞进行分析建模以提取漏洞特征;利用ANTLR分析器和预设语法结构将所述输入值的源代码抽象成语法树;将所述语法树和所述漏洞特征进行匹配,生成所述第一测试的测试结果;和/或,模糊测试模块,用于:构建区块链,并部署所述智能合约;分析所述智能合约的函数,并基于分析结果建立机器学习模型;利用所述机器学习模型对运行在区块链上的所述智能合约进行动态模糊测试,生成所述第一测试的测试结果。5.根据权利要求1所述的系统,其特征在于,所述第二测试模块包括:符号执行模块,用于:利用LLVM翻译器将所述输入值的字节码转化为中间语言代码;利用KLEE对所述中间语言代码进行符号执行测试,生成所述第二测试的测试结果;和/或,反编译模块,用于:利用字节码和汇编的对应关系将字节码转化为汇编代码;通过分析运行虚拟机的内存分布及执行操作将所述汇编语言转化为高级语言代码;将生成的所述高级语言...

【专利技术属性】
技术研发人员:胡建斌杨泳杨华
申请(专利权)人:北京北信源软件股份有限公司
类型:发明
国别省市:

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

1