[发明专利]一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质在审
申请号: | 201910723918.1 | 申请日: | 2019-08-06 |
公开(公告)号: | CN110489973A | 公开(公告)日: | 2019-11-22 |
发明(设计)人: | 崔翔;刘井强;谭庆丰;孙彦斌;苏申 | 申请(专利权)人: | 广州大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F11/36;G06Q40/04 |
代理公司: | 44202 广州三环专利商标代理有限公司 | 代理人: | 颜希文;麦小婵<国际申请>=<国际公布> |
地址: | 510006 广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 测试数据 智能 变量类型 测试数据集 抽象语法树 函数变量 漏洞检测 输出变量 输入变量 适配 变量检测 存储介质 代码提供 代码运行 监测输出 检测数据 漏洞 数据集 构建 判定 驱动 监测 | ||
本发明公开了一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质。所述方法包括:根据智能合约代码构建抽象语法树,并通过抽象语法树提取函数变量及其变量类型;根据函数变量及其变量类型,生成Fuzz测试数据集;其中,Fuzz测试数据集为一包含所有变量类型的数据集;将Fuzz测试数据集中的适配Fuzz测试数据逐一作为智能合约代码的输入变量,驱动智能合约代码运行,并对智能合约代码的输出变量进行监测,若输出变量出现异常则判定存在漏洞;其中,适配Fuzz测试数据为Fuzz测试数据集中与输入变量的变量类型相同的所有Fuzz测试数据。本发明不仅能够针对智能合约代码提供有效的检测数据,还能通过监测输出变量检测智能合约的未知漏洞,进一步提高漏洞检测的效率。
技术领域
本发明涉及区块链安全领域,尤其涉及一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质。
背景技术
近年来,随着区块链的发展,智能合约(即区块链、数字合同或自动执行合约)的应用也越来越广泛。这种格式允许将合同转换为存储和复制的计算机代码,它受到运行区块链的巨大计算机网络的严密监控。但是,由于智能合约自身存在的漏洞,难以保证可信性,安全问题已成为制约其发展的核心关键。
《一种高度自动化的智能合约形式化验证系统及方法》根据智能合约功能需求规范文档建立形式化验证规则模型库,并使用自动化建模工具对合约源代码进行自动化建模以进行形式化证明;《一种自动化的智能合约代码缺陷检测系统和方法》使用静态代码分析和动态路径遍历相结合的方式,加上独立可扩充的安全模型库和规则匹配库,检查缺陷代码;《智能合约漏洞检测方法、装置及电子设备》经过DAG环路检测、环路超时检测、逻辑检测,可以校验合同本身的逻辑合理性,检测智能合约组合问题。
上述方法是用于对智能合约形式化规则/缺陷代码/组合问题的具体漏洞进行检测,即均是为提高已知漏洞检测效率和准确性所做的工作,适用于根据已知漏洞规则进行漏洞特征监测。然而,对于未知漏洞的检测,没有提出有效的思路和解决方法。
发明内容
本发明所要解决的技术问题在于,提供一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质,不仅能够针对智能合约代码提供有效的检测数据,还能通过监测输出变量检测智能合约的未知漏洞,进一步提高漏洞检测的效率。
为了解决上述技术问题,本发明提出了一种基于Fuzz的智能合约漏洞检测方法,包括:根据智能合约代码构建抽象语法树,并通过所述抽象语法树提取函数变量及其变量类型;根据所述函数变量及其变量类型,生成Fuzz测试数据集;其中,所述Fuzz测试数据集为一包含所有所述变量类型的数据集;将所述Fuzz测试数据集中的适配Fuzz测试数据逐一作为所述智能合约代码的输入变量,驱动所述智能合约代码运行,并对所述智能合约代码的输出变量进行监测,若所述输出变量出现异常则判定存在漏洞;其中,所述适配Fuzz测试数据为所述Fuzz测试数据集中与所述输入变量的变量类型相同的所有所述Fuzz测试数据。
进一步地,基于Fuzz的智能合约漏洞检测方法还包括:若存在漏洞,则对所述智能合约代码进行漏洞匹配,得到漏洞匹配结果;根据所述漏洞匹配结果,在所述智能合约代码中抽取关联代码进行漏洞验证,得到漏洞验证结果;根据所述漏洞匹配结果和所述漏洞验证结果,生成漏洞检测报告。
进一步地,所述漏洞匹配结果,包括根据所述输入变量和所述输出变量与漏洞模型进行匹配所得的漏洞类型;其中,漏洞模型是根据漏洞类型抽象所得的漏洞模型。
进一步地,所述漏洞类型包括可重入性和竞争条件攻击、整数溢出、越权访问、拒绝服务、逻辑错误、信息泄露和函数误用其中一种或多种组合。
进一步地,所述漏洞匹配结果,包括:在所述智能合约代码中定位与所述漏洞模型匹配的所述关联代码;其中,所述关联代码包含所述输入变量和所述输出变量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州大学,未经广州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910723918.1/2.html,转载请声明来源钻瓜专利网。