CN109063477A - 一种自动化的智能合约代码缺陷检测系统和方法 - Google Patents

一种自动化的智能合约代码缺陷检测系统和方法 Download PDF

Info

Publication number
CN109063477A
CN109063477A CN201810792738.4A CN201810792738A CN109063477A CN 109063477 A CN109063477 A CN 109063477A CN 201810792738 A CN201810792738 A CN 201810792738A CN 109063477 A CN109063477 A CN 109063477A
Authority
CN
China
Prior art keywords
code
defect
intelligent contract
source code
rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810792738.4A
Other languages
English (en)
Other versions
CN109063477B (zh
Inventor
杨霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Chain Security Technology Co Ltd
Original Assignee
Chengdu Chain Security Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Chain Security Technology Co Ltd filed Critical Chengdu Chain Security Technology Co Ltd
Priority to CN201810792738.4A priority Critical patent/CN109063477B/zh
Publication of CN109063477A publication Critical patent/CN109063477A/zh
Application granted granted Critical
Publication of CN109063477B publication Critical patent/CN109063477B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/405Establishing or using transaction specific rules

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种自动化的智能合约代码缺陷检测系统和方法,全自动化对区块链智能合约做缺陷代码检查;使用静态代码分析和动态路径遍历相结合的方式,再加上独立可扩充的安全模型库和规则匹配库,使得缺陷代码检查更加完备、准确可靠,解决了缺陷代码中漏报问题;同时实时加载区块链底层平台接口调用,并将生成的测试案例和反例在区块链平台上验证缺陷代码是否是伪错误,能有效、准确的查找出智能合约缺陷代码,通过源码映射引擎,还可将缺陷错误代码定位到智能合约源代码具体位置。

Description

一种自动化的智能合约代码缺陷检测系统和方法
技术领域
本发明涉及区块链智能合约安全领域,具体涉及一种自动化的智能合约代码缺陷检测系统和方法。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。使用去中心化共识机制去维护一个完整的、分布式的、不可篡改的账本数据库的技术,它能够让区块链中的参与者在无需建立信任关系的前提下实现一个统一的账本系统。一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链技术背景下,智能合约是指运行在区块链上,能够执行某些功能的程序代码。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可追踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。
由于区块链不可篡改特性,一旦因为程序自身设计的问题,导致智能合约的安全漏洞,或将产生不可逆转的重大损失。而使用一些代码缺陷检查方法,例如形式化验证、静态代码分析等技术,则可提前发现程序缺陷代码,及时修改问题代码,可起防范于未然的作用。形式化验证方法主要有定理证明、模型检测和等价性验证,它们的侧重点各有不同。定理证明根据公理和形式推演规则来验证设计实现是否满足要求,在对区块链智能合约进行安全检查,由于需要大量的人力干预,效率非常低,并且对验证人技术要求非常高;模型检测可实现机器自动处理智能合约漏洞,但是在处理较复杂的智能合约代码时,常会出现状态爆炸、误报错误、漏报错误等问题;而等价性证明主要验证程序代码的实现与设计原型的功能是否一致,无法检查出程序代码漏洞。
发明内容
本发明的目的是面向所有区块链平台和其上各种编程语言的智能合约,提出一种自动化的智能合约代码缺陷检测方法,并根据该方法实现一套缺陷检查装置,实现全自动化的对区块链智能合约源代码进行漏洞代码检查,并最终生成缺陷代码检查报告,最终通过源码映射,定位缺陷代码在智能合约源代码中的位置。
本发明通过下述技术方案实现:
一种自动化的智能合约代码缺陷检测系统,包括:
智能合约编译器:用于接收区块链智能合约源代码,进行编译得到智能合约源代码语法树和目标码,并输送给安全引擎控制器;
安全引擎控制器:接收智能合约编译器输出的语法树和目标码,并将语法树输入到规则匹配检查器进行静态代码分析,将目标码输入到路径遍历检查器进行缺陷代码检查;
规则匹配检查器:规则匹配检查器接收语法树,并匹配缺陷代码,然后将匹配信息发送至缺陷报告生成器;
路径遍历检查器:用于接收安全引擎控制器发送的目标码和区块链平台发送的区块链信息,对接收到的目标码进行全路径遍历,将结果发送给案例生成器;
案例生成器:用于接收路径遍历检查器发送的路径遍历缺陷代码检查器生成的数据,然后将测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;
缺陷报告生成器:根据规则匹配检查器缺陷代码检查结果和路径遍历检查器检查的结果,并通过区块链平台验证过的缺陷代码,生成智能合约漏洞检查报告,并通过源码映射器,定位缺陷代码在智能合约源代码中的位置,反馈给用户。
本发明使用静态代码分析和模型检查结合的方式对智能合约的缺陷代码检查,同时对智能合约源代码的语法树和目标码进行漏洞检查,智能合约目标码是指智能合约源代码经过编译器或者汇编器处理后所生成的代码,一般由机器代码或接近于机器语言的代码组成,同时对检查结果生成测试案例和反例;并在区块链平台上使用测试案例和反例,对检查结果做正确性验证;最后生成缺陷代码检查报告,并通过源码映射,将缺陷代码定位到源码的具体位置,同时,本发明能够适配多种不同的区块链平台,实现不同区块链平台自动化检测工具的快速迭代。
具体的讲,所述的一种自动化的智能合约代码缺陷检测系统,还包括智能合约源码映射引擎:用于提取区块链智能合约源代码,进缺陷代码映射到源码具体行,并发送给缺陷报告生成器,用于生成检查报告;同时也将缺陷报告生成器的缺陷信息映射到区块链智能合约源代码,进行缺陷信息的反馈。
所述的一种自动化的智能合约代码缺陷检测系统,还包括:定理求解证明器:用于对路径遍历器生成的缺陷代码命题逻辑表达式进行满足性求解,并生成测试案例和反例,反馈给路径遍历器;安全模型库:用于储存各种区块链平台的智能合约缺陷代码模型,路径遍历检查器可根据安全模型库中漏洞模型生成命题逻辑求解表达式;该模型库可不断的扩展或者丰富缺陷代码模型。
所述路径遍历检查器包括符号执行虚拟机、满足性求解表达式生成器,其中:
符号执行虚拟机:执行智能合约目标码,虚拟机可直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;
满足性求解表达式生成器:根据安全模型库中缺陷代码规则属性,结合符号执行虚拟机的路径,将各种缺陷代码规则模型转换为满足性求解表达式。
所述的一种自动化的智能合约代码缺陷检测系统,所述规则匹配检查器包括:
缺陷代码匹配引擎:用于接收语法树,并调用规则匹配库中的存储的区块链平台的智能合约缺陷代码规则或模式,对语法树进行搜索匹配后,发送至缺陷报告生成器;
规则匹配库:用于储存各种区块链平台的智能合约缺陷代码规则或模式。
一种自动化的智能合约代码缺陷检测方法,包括以下步骤:
(a)使用智能合约编译器,对输入的区块链智能合约源代码进行编译,得到智能合约源代码语法树即AST和目标码;
(b)通过安全引擎控制器将智能合约编译器输出的语法树即AST和目标码分别进行静态代码分析和路径遍历缺陷代码检查;
(c)根据步骤(b)的静态分析和路径遍历检查结果生成代码检查报告,并通过源码映射器,定位缺陷代码在智能合约源代码中的位置,并反馈给用户。
通过上述步骤,本发明提出的自动化智能合约代码缺陷检查方法,目的是实现全自动化的对区块链智能合约进行缺陷代码检查。其中使用静态代码分析和动态路径遍历结合的方式,双管齐下,可全方面的对智能合约源码进行漏洞检查。此外,静态代码分析的规则匹配库和动态路径遍历的安全模型库,可不断的添加更多的区块链平台的漏洞规则,可完备地对代码进行缺陷检查。
具体的讲所述的一种自动化的智能合约代码缺陷检测方法,所述步骤(b)中的静态分析包括以下步骤:
(b01)从安全引擎控制器中得到智能合约源码编译出的语法树,并解析智能合约源代码语法树,将其存放在指定的数据结构中;
(b02)依据缺陷代码规则库中的规则,写出各个规则匹配的正则表达式或规则属性模式;
(b03)遍历步骤(b1)数据结构中的语法树,匹配步骤(b2)中的缺陷代码规则的正则表达式和规则属性模型,如果匹配成功,即定位缺陷代码位置,生成缺陷代码报告,并通过源码映射,将缺陷代码定位到源码准确位置。
具体的说,静态代码分析则是在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术
所述的一种自动化的智能合约代码缺陷检测方法,所述步骤(b)中的路径遍历检查包括以下步骤:
(b11)从安全引擎控制器中得到智能合约源码编译出的目标码,并将目标码在符号执行虚拟机SVM中执行
(b12)符号执行虚拟机执行智能合约目标码,虚拟机直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;
(b13)根据安全模型库中缺陷代码规则属性,结合步骤(b12)中符号执行虚拟机执行的路径,将各种缺陷代码规则模型转换为满足性求解表达式;
(b14)使用定理证明求解器对步骤(b13)中的缺陷代码满足性求解表达式进行求解,得到测试案例和表达式的反例;
(b15)将步骤(b14)得到的测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;
(b16)对步骤(b15)确认结果生成检测报告,并通过源码映射,定位缺陷代码在源代码的位置。
具体的讲,智能合约源代码的语法树和目标码进行漏洞检查,并对检查结果生成测试案例和反例;在区块链平台上使用测试案例和反例,对检查结果做正确性验证;最后生成缺陷代码检查报告,并通过源码映射,将缺陷代码定位到源码的具体位置
本发明与现有技术相比,具有如下的优点和有益效果:
1本发明一种自动化的智能合约代码缺陷检测系统和方法,全自动化对区块链智能合约做缺陷代码检查;
2本发明一种自动化的智能合约代码缺陷检测系统和方法,使用静态代码分析和动态路径遍历相结合的方式,再加上独立可扩充的安全模型库和规则匹配库,使得缺陷代码检查更加完备、准确可靠,解决了缺陷代码中漏报问题;
3本发明一种自动化的智能合约代码缺陷检测系统和方法,使用源码映射器,将工具检查出的缺陷代码定位到源码具体位置,可方便开发者快速、准确的定位缺陷代码;
4本发明一种自动化的智能合约代码缺陷检测系统和方法,采用将静态工具检查和动态符号执行缺陷代码检查的结果,在区块链真实环境中执行验证,解决了缺陷代码检查的误报问题。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明原理框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例
如图1所示,本发明一种自动化的智能合约代码缺陷检测方法,并开发出相应的装置,对区块链智能合约进行缺陷代码检查。为了能够更容易让本领域技术人员理解,以下将用以太坊区块链智能合约的源代码为例进行说明。其并不构成对本发明的任何限制。本领域技术人员在本发明公开的技术内容启示下,将其应用于其他区块链平台,例如EOS、Fabric等。
本例中以以太坊智能合约为例,结合图1,包括以太坊智能合约编译器Solc:用于接收区块链智能合约源代码,进行编译得到智能合约源代码语法树和目标码,并输送给安全引擎控制器;安全引擎控制器:接收智能合约编译器输出的语法树和目标码,并将语法树输入到规则匹配检查器进行静态代码分析,将目标码输入到路径遍历检查器进行缺陷代码检查;规则匹配检查器:规则匹配检查器接收语法树,然后匹配后将匹配信息发送至缺陷报告生成器;路径遍历检查器:用于接收安全引擎控制器发送的目标码和区块链平台发送的区块链信息,并对接收到的目标码进行路径遍历缺陷代码检查,将结果发送给案例生成器;案例生成器:用于接收路径遍历检查器发送的路径遍历缺陷代码检查结果,将测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;缺陷报告生成器:接收规则匹配检查器发送的匹配信息、案例生成器发送的最接近案例数据,通过源码映射器,定位缺陷代码在智能合约源代码中的位置,并反馈给用户;智能合约源码映射引擎:用于接收区块链智能合约源代码,并经过映射后发送给缺陷报告生成器;同时也将缺陷报告生成器的缺陷信息提取后发送给区块链智能合约源代码,进行缺陷信息的反馈;定理求解证明器:用于路径数据的存储和路径遍历检查器的算法调用;安全模型库:用于储存各种区块链平台的智能合约缺陷代码模型,其中路径遍历检查器的包括符号执行虚拟机、满足性求解表达式生成器,其中符号执行虚拟机用于执行智能合约目标码,虚拟机可直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;满足性求解表达式生成器根据安全模型库中缺陷代码规则属性,结合符号执行虚拟机的路径,将各种缺陷代码规则模型转换为满足性求解表达式。使用本发明装置对智能合约源代码进行缺陷代码检测的流程进行详细阐述,主要步骤如下:
(a)使用以太坊智能合约编译器Solc,对输入的以太坊智能合约源代码进行编译,得到智能合约源代码语法树即AST和目标码即以太坊虚拟机操作码;
静态分析步骤:
(b01)从安全引擎控制器中得到以太坊智能合约源码编译出的语法树,并解析智能合约源代码语法树,将其存放在指定的数据结构中;
(b02)依据缺陷代码规则库中的规则,写出各个缺陷代码规则匹配的正则表达式或规则属性模式;
(b03)遍历步骤(b1)数据结构中的语法树,匹配步骤(b2)中的缺陷代码规则的正则表达式和规则属性模型,如果匹配成功,即定位缺陷代码位置,生成缺陷代码报告,并通过源码映射,将缺陷代码定位到源码准确位置。
路径遍历检查步骤:
(b11)从安全引擎控制器中得到智能合约源码编译出的目标码,并将目标码在符号执行虚拟机SVM中执行;
(b12)符号执行虚拟机执行智能合约目标码,虚拟机直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;
(b13)根据安全模型库中缺陷代码规则属性,结合步骤(b12)中符号执行虚拟机执行的路径,将各种缺陷代码规则模型转换为满足性求解表达式;
(b14)使用定理证明求解器对步骤(b13)中的缺陷代码满足性求解表达式进行求解,得到测试案例和表达式的反例;
(b15)将步骤(b14)得到的测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;
(b16)对步骤(b15)确认结果生成检测报告,并通过源码映射,定位缺陷代码在源代码的位置;
(c)规则匹配检查器通过遍历语法树,匹配以太坊规则匹配库中的缺陷代码规则,匹配成功,即生成缺陷代码报告,并通过源码映射,将缺陷代码定位到智能合约源码的具体位置;路径遍历检查器执行智能合约源码生成的目标码,在执行过程中动态加载目标码中的以太坊区块链底层系统调用;根据以太坊安全模型库中缺陷代码规则属性,安全引擎将各种缺陷代码规则模型转换为相应的满足性求解表达式;并使用定理证明求解器,对缺陷代码满足性求解表达式进行求解,得到智能合约的测试案例和表达式的反例;将测试案例和表达式反例作为参数输入,在以太坊区块链平台测试验证检测出的缺陷代码是否是真实缺陷代码,而不是伪错误代码;最后,生成缺陷代码检查报告,并通过源码映射,将缺陷代码定位到智能合约源代码的具体位置。
本实施例中,自动化智能合约代码缺陷检查方法和装置使用静态代码分析和动态路径遍历检查结合的方式,同时实时加载区块链底层平台接口调用,并将生成的测试案例和反例在区块链平台上验证缺陷代码是否是伪错误,能有效、准确的查找出智能合约缺陷代码。通过源码映射引擎,还可将缺陷错误代码定位到智能合约源代码具体位置。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种自动化的智能合约代码缺陷检测系统,其特征在于包括:
智能合约编译器:用于接收区块链智能合约源代码,进行编译得到智能合约源代码语法树和目标码,并输送给安全引擎控制器;
安全引擎控制器:接收智能合约编译器输出的语法树和目标码,并将语法树输入到规则匹配检查器进行静态代码分析,将目标码输入到路径遍历检查器进行缺陷代码检查;
规则匹配检查器:规则匹配检查器接收语法树,并匹配缺陷代码,然后将匹配信息发送至缺陷报告生成器;
路径遍历检查器:用于接收安全引擎控制器发送的目标码和区块链平台发送的区块链信息,对接收到的目标码进行全路径遍历,将结果发送给案例生成器;
案例生成器:用于接收路径遍历检查器发送的路径遍历缺陷代码检查器生成的数据,然后将测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;
缺陷报告生成器:根据规则匹配检查器缺陷代码检查结果和路径遍历检查器检查的结果,并通过区块链平台验证过的缺陷代码,生成智能合约漏洞检查报告,并通过源码映射器,定位缺陷代码在智能合约源代码中的位置,反馈给用户。
2.根据权利要求1所述的一种自动化的智能合约代码缺陷检测系统,其特征在于:
还包括智能合约源码映射引擎:用于提取区块链智能合约源代码,进缺陷代码映射到源码具体行,并发送给缺陷报告生成器,用于生成检查报告;同时也将缺陷报告生成器的缺陷信息映射到区块链智能合约源代码,进行缺陷信息的反馈。
3.根据权利要求1所述的一种自动化的智能合约代码缺陷检测系统,其特征在于还包括:
定理求解证明器:用于对路径遍历器生成的缺陷代码命题逻辑表达式进行满足性求解,并生成测试案例和反例,反馈给路径遍历器;
安全模型库:用户储存各种区块链平台的智能合约缺陷代码模型,路径遍历检查器根据安全模型库中漏洞模型生成命题逻辑求解表达式;该模型库可不断的扩展或者丰富缺陷代码模型。
4.根据权利要求1所述的一种自动化的智能合约代码缺陷检测系统,其特征在于所述路径遍历检查器的包括符号执行虚拟机、满足性求解表达式生成器,其中:
符号执行虚拟机:执行智能合约目标码,虚拟机直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;
满足性求解表达式生成器:根据安全模型库中缺陷代码规则属性,结合符号执行虚拟机的路径,将各种缺陷代码规则模型转换为满足性求解表达式。
5.根据权利要求1所述的一种自动化的智能合约代码缺陷检测系统,其特征在于所述规则匹配检查器包括:
缺陷代码匹配引擎:用于接收语法树,并调用规则匹配库中的存储的区块链平台的智能合约缺陷代码规则或模式,对语法树进行搜索匹配后,发送至缺陷报告生成器;
规则匹配库:用于储存各种区块链平台的智能合约缺陷代码规则或模式。
6.一种自动化的智能合约代码缺陷检测方法,其特征在于包括以下步骤:
(a)使用智能合约编译器,对输入的区块链智能合约源代码进行编译,得到智能合约源代码语法树即AST和目标码;
(b)通过安全引擎控制器将智能合约编译器输出的语法树即AST和目标码分别进行静态代码分析和路径遍历缺陷代码检查;
(c)根据步骤(b)的静态分析和路径遍历检查结果生成代码检查报告,并通过源码映射器,定位缺陷代码在智能合约源代码中的位置,反馈给用户。
7.根据权利要求6所述的一种自动化的智能合约代码缺陷检测方法,其特征在于所述步骤(b)中的静态分析包括以下步骤:
(b01)从安全引擎控制器中得到智能合约源码编译出的语法树,并解析智能合约源代码语法树,将其存放在指定的数据结构中;
(b02)依据缺陷代码规则库中的规则,写出各个规则匹配的正则表达式或规则属性模式;
(b03)遍历步骤(b1)数据结构中的语法树,匹配步骤(b2)中的缺陷代码规则的正则表达式和规则属性模型,如果匹配成功,即定位缺陷代码位置,生成缺陷代码报告,并通过源码映射,将缺陷代码定位到源码准确位置。
8.根据权利要求6所述的一种自动化的智能合约代码缺陷检测方法,其特征在于所述步骤(b)中的路径遍历检查包括以下步骤:
(b11)从安全引擎控制器中得到智能合约源码编译出的目标码,并将目标码在符号执行虚拟机SVM中执行
(b12)符号执行虚拟机执行智能合约目标码,虚拟机直接调用区块链平台函数接口,从区块链平台上提取目标码中有关区块链底层接口调用函数,实现全路径遍历;
(b13)根据安全模型库中缺陷代码规则属性,结合步骤(b12)中符号执行虚拟机执行的路径,将各种缺陷代码规则模型转换为满足性求解表达式;
(b14)使用定理证明求解器对步骤(b13)中的缺陷代码满足性求解表达式进行求解,得到测试案例和表达式的反例;
(b15)将步骤(b14)得到的测试案例和表达式反例在区块链平台作为输入来确认检测出的缺陷代码是否是真实缺陷代码;
(b16)对步骤(b15)确认结果生成检测报告,并通过源码映射,定位缺陷代码在源代码的位置。
CN201810792738.4A 2018-07-18 2018-07-18 一种自动化的智能合约代码缺陷检测系统和方法 Active CN109063477B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810792738.4A CN109063477B (zh) 2018-07-18 2018-07-18 一种自动化的智能合约代码缺陷检测系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810792738.4A CN109063477B (zh) 2018-07-18 2018-07-18 一种自动化的智能合约代码缺陷检测系统和方法

Publications (2)

Publication Number Publication Date
CN109063477A true CN109063477A (zh) 2018-12-21
CN109063477B CN109063477B (zh) 2021-04-20

Family

ID=64817387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810792738.4A Active CN109063477B (zh) 2018-07-18 2018-07-18 一种自动化的智能合约代码缺陷检测系统和方法

Country Status (1)

Country Link
CN (1) CN109063477B (zh)

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800175A (zh) * 2019-02-20 2019-05-24 河海大学 一种基于代码插桩的以太坊智能合约重入漏洞检测方法
CN109800174A (zh) * 2019-01-31 2019-05-24 北京八分量信息科技有限公司 一种区块链智能合约的仿真检查方法及装置
CN109933991A (zh) * 2019-03-20 2019-06-25 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、装置
CN109933328A (zh) * 2019-02-19 2019-06-25 深圳前海达闼云端智能科技有限公司 智能合约的扩展编译方法,区块链节点及系统,存储介质
CN109948345A (zh) * 2019-03-20 2019-06-28 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、系统
CN110175454A (zh) * 2019-04-19 2019-08-27 肖银皓 一种基于人工智能的智能合约安全漏洞挖掘方法及系统
CN110309660A (zh) * 2019-07-09 2019-10-08 佛山市伏宸区块链科技有限公司 一种智能合约代码的自动化审计系统及方法
CN110362996A (zh) * 2019-06-03 2019-10-22 中国科学院信息工程研究所 一种离线检测PowerShell恶意软件的方法与系统
CN110399730A (zh) * 2019-07-24 2019-11-01 上海交通大学 智能合约漏洞的检查方法、系统及介质
CN110413316A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 面向区块链智能合约的非侵入式测试系统及方法
CN110532782A (zh) * 2019-07-30 2019-12-03 平安科技(深圳)有限公司 一种任务执行程序的检测方法、装置及存储介质
CN110597731A (zh) * 2019-09-20 2019-12-20 北京丁牛科技有限公司 一种漏洞检测方法、装置及电子设备
CN110674503A (zh) * 2019-09-24 2020-01-10 杭州云象网络技术有限公司 一种基于图卷积神经网络的智能合约死循环检测方法
CN110704068A (zh) * 2019-10-18 2020-01-17 安徽中科国创高可信软件有限公司 基于数据库进行跨文件协同程序分析的处理方法及系统
CN110807195A (zh) * 2019-09-26 2020-02-18 图灵人工智能研究院(南京)有限公司 一种智能合约的发布方法、发布平台装置及发布系统
CN110929295A (zh) * 2019-11-08 2020-03-27 杭州趣链科技有限公司 一种投票智能合约的形式验证方法
CN111062038A (zh) * 2019-11-23 2020-04-24 同济大学 一种基于状态空间的智能合约形式化验证系统及方法
CN111125697A (zh) * 2019-11-14 2020-05-08 北京理工大学 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统
CN111125716A (zh) * 2019-12-19 2020-05-08 中国人民大学 一种以太坊智能合约漏洞检测方法及装置
CN111177730A (zh) * 2019-12-19 2020-05-19 河海大学 一种以太坊智能合约问题检测和预防方法与装置
CN111459786A (zh) * 2019-01-18 2020-07-28 南京大学 一种基于变异fuzz的智能合约安全测试方法
CN111611153A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种用户界面过度绘制的检测方法和装置
CN111666216A (zh) * 2020-06-05 2020-09-15 中国银行股份有限公司 一种智能合约分析方法及装置
CN112069050A (zh) * 2019-06-11 2020-12-11 南京慕测信息科技有限公司 一种基于多目标优化的智能合约测试方法
CN112256271A (zh) * 2020-10-19 2021-01-22 中国科学院信息工程研究所 一种基于静态分析的区块链智能合约安全检测系统
CN112306637A (zh) * 2020-11-06 2021-02-02 深圳市广和通无线股份有限公司 脚本扩展方法、装置、计算机设备和存储介质
WO2021017735A1 (zh) * 2019-07-31 2021-02-04 平安科技(深圳)有限公司 一种智能合约的形式化验证方法、电子装置及存储介质
CN112446581A (zh) * 2019-08-29 2021-03-05 国际商业机器公司 在区块链中为风险评估的智能合约发行方和执行提供者实现市场
CN112650675A (zh) * 2020-12-23 2021-04-13 广州汉全信息科技股份有限公司 一种区块链的代码检测方法、装置和计算机设备
CN113010901A (zh) * 2021-04-25 2021-06-22 深圳市位元领航科技有限公司 一种基于资产模型的自动化安全检查方法及终端
CN113051574A (zh) * 2021-03-11 2021-06-29 哈尔滨工程大学 一种智能合约二进制代码的漏洞检测方法
CN113051156A (zh) * 2021-03-16 2021-06-29 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN111651977B (zh) * 2020-05-26 2021-07-06 中南民族大学 一种语言独立的法律合约与智能合约一致性度量方法
CN113688402A (zh) * 2021-10-26 2021-11-23 江苏通付盾科技有限公司 一种智能合约漏洞挖掘方法及装置
CN114417332A (zh) * 2022-01-07 2022-04-29 西南交通大学 一种面向c程序源码的程序可信性验证方法及装置
CN118194286A (zh) * 2024-05-15 2024-06-14 中国船舶集团有限公司第七一九研究所 基于模型的fpga代码缺陷检查结果置信度分析方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526625A (zh) * 2017-07-18 2017-12-29 杭州趣链科技有限公司 一种基于字节码检查的Java智能合约安全检测方法
CN108256337A (zh) * 2018-02-26 2018-07-06 北京阿尔山金融科技有限公司 智能合约漏洞检测方法、装置及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526625A (zh) * 2017-07-18 2017-12-29 杭州趣链科技有限公司 一种基于字节码检查的Java智能合约安全检测方法
CN108256337A (zh) * 2018-02-26 2018-07-06 北京阿尔山金融科技有限公司 智能合约漏洞检测方法、装置及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LOI LUU ET AL: "Making Smart Contracts Smarter", 《CCS "16: PROCEEDINGS OF THE 2016 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY》 *
SERGEI TIKHOMIROV ET AL: "SmartCheck:Static Analysis of Ethereum Smart Contracts", 《WETSEB "18: PROCEEDINGS OF THE 1ST INTERNATIONAL WORKSHOP ON EMERGING TRENDS IN SOFTWARE ENGINEERING FOR BLOCKCHAIN》 *

Cited By (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459786B (zh) * 2019-01-18 2023-08-29 南京大学 一种基于变异fuzz的智能合约安全测试方法
CN111459786A (zh) * 2019-01-18 2020-07-28 南京大学 一种基于变异fuzz的智能合约安全测试方法
CN109800174A (zh) * 2019-01-31 2019-05-24 北京八分量信息科技有限公司 一种区块链智能合约的仿真检查方法及装置
CN109933328A (zh) * 2019-02-19 2019-06-25 深圳前海达闼云端智能科技有限公司 智能合约的扩展编译方法,区块链节点及系统,存储介质
CN109800175A (zh) * 2019-02-20 2019-05-24 河海大学 一种基于代码插桩的以太坊智能合约重入漏洞检测方法
CN111611153A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种用户界面过度绘制的检测方法和装置
CN111611153B (zh) * 2019-02-26 2023-05-16 阿里巴巴集团控股有限公司 一种用户界面过度绘制的检测方法和装置
CN109948345A (zh) * 2019-03-20 2019-06-28 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、系统
CN109933991A (zh) * 2019-03-20 2019-06-25 杭州拜思科技有限公司 一种智能合约漏洞检测的方法、装置
CN110175454A (zh) * 2019-04-19 2019-08-27 肖银皓 一种基于人工智能的智能合约安全漏洞挖掘方法及系统
CN110362996B (zh) * 2019-06-03 2021-03-09 中国科学院信息工程研究所 一种离线检测PowerShell恶意软件的方法与系统
CN110362996A (zh) * 2019-06-03 2019-10-22 中国科学院信息工程研究所 一种离线检测PowerShell恶意软件的方法与系统
CN112069050A (zh) * 2019-06-11 2020-12-11 南京慕测信息科技有限公司 一种基于多目标优化的智能合约测试方法
CN112069050B (zh) * 2019-06-11 2022-05-17 南京慕测信息科技有限公司 一种基于多目标优化的智能合约测试方法
CN110309660A (zh) * 2019-07-09 2019-10-08 佛山市伏宸区块链科技有限公司 一种智能合约代码的自动化审计系统及方法
CN110399730A (zh) * 2019-07-24 2019-11-01 上海交通大学 智能合约漏洞的检查方法、系统及介质
CN110399730B (zh) * 2019-07-24 2021-05-04 上海交通大学 智能合约漏洞的检查方法、系统及介质
CN110532782B (zh) * 2019-07-30 2023-02-21 平安科技(深圳)有限公司 一种任务执行程序的检测方法、装置及存储介质
WO2021017278A1 (zh) * 2019-07-30 2021-02-04 平安科技(深圳)有限公司 任务执行程序的检测方法、装置、计算机设备及存储介质
CN110532782A (zh) * 2019-07-30 2019-12-03 平安科技(深圳)有限公司 一种任务执行程序的检测方法、装置及存储介质
CN110413316B (zh) * 2019-07-31 2023-12-05 中国工商银行股份有限公司 面向区块链智能合约的非侵入式测试系统及方法
CN110413316A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 面向区块链智能合约的非侵入式测试系统及方法
WO2021017735A1 (zh) * 2019-07-31 2021-02-04 平安科技(深圳)有限公司 一种智能合约的形式化验证方法、电子装置及存储介质
CN112446581A (zh) * 2019-08-29 2021-03-05 国际商业机器公司 在区块链中为风险评估的智能合约发行方和执行提供者实现市场
CN110597731B (zh) * 2019-09-20 2023-04-07 北京丁牛科技有限公司 一种漏洞检测方法、装置及电子设备
CN110597731A (zh) * 2019-09-20 2019-12-20 北京丁牛科技有限公司 一种漏洞检测方法、装置及电子设备
CN110674503A (zh) * 2019-09-24 2020-01-10 杭州云象网络技术有限公司 一种基于图卷积神经网络的智能合约死循环检测方法
CN110807195A (zh) * 2019-09-26 2020-02-18 图灵人工智能研究院(南京)有限公司 一种智能合约的发布方法、发布平台装置及发布系统
CN110807195B (zh) * 2019-09-26 2023-08-25 图灵人工智能研究院(南京)有限公司 一种智能合约的发布方法、发布平台装置及发布系统
CN110704068A (zh) * 2019-10-18 2020-01-17 安徽中科国创高可信软件有限公司 基于数据库进行跨文件协同程序分析的处理方法及系统
CN110704068B (zh) * 2019-10-18 2023-02-17 安徽中科国创高可信软件有限公司 基于数据库进行跨文件协同程序分析的处理方法及系统
CN110929295B (zh) * 2019-11-08 2021-11-05 杭州趣链科技有限公司 一种投票智能合约的形式验证方法
CN110929295A (zh) * 2019-11-08 2020-03-27 杭州趣链科技有限公司 一种投票智能合约的形式验证方法
CN111125697A (zh) * 2019-11-14 2020-05-08 北京理工大学 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统
CN111125697B (zh) * 2019-11-14 2022-03-04 北京理工大学 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统
CN111062038A (zh) * 2019-11-23 2020-04-24 同济大学 一种基于状态空间的智能合约形式化验证系统及方法
CN111177730A (zh) * 2019-12-19 2020-05-19 河海大学 一种以太坊智能合约问题检测和预防方法与装置
CN111125716A (zh) * 2019-12-19 2020-05-08 中国人民大学 一种以太坊智能合约漏洞检测方法及装置
CN111651977B (zh) * 2020-05-26 2021-07-06 中南民族大学 一种语言独立的法律合约与智能合约一致性度量方法
CN111666216A (zh) * 2020-06-05 2020-09-15 中国银行股份有限公司 一种智能合约分析方法及装置
CN111666216B (zh) * 2020-06-05 2024-01-23 中国银行股份有限公司 一种智能合约分析方法及装置
CN112256271B (zh) * 2020-10-19 2022-11-29 中国科学院信息工程研究所 一种基于静态分析的区块链智能合约安全检测系统
CN112256271A (zh) * 2020-10-19 2021-01-22 中国科学院信息工程研究所 一种基于静态分析的区块链智能合约安全检测系统
CN112306637A (zh) * 2020-11-06 2021-02-02 深圳市广和通无线股份有限公司 脚本扩展方法、装置、计算机设备和存储介质
CN112650675A (zh) * 2020-12-23 2021-04-13 广州汉全信息科技股份有限公司 一种区块链的代码检测方法、装置和计算机设备
CN113051574A (zh) * 2021-03-11 2021-06-29 哈尔滨工程大学 一种智能合约二进制代码的漏洞检测方法
CN113051156A (zh) * 2021-03-16 2021-06-29 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN113051156B (zh) * 2021-03-16 2022-03-11 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN113010901A (zh) * 2021-04-25 2021-06-22 深圳市位元领航科技有限公司 一种基于资产模型的自动化安全检查方法及终端
CN113010901B (zh) * 2021-04-25 2024-03-01 深圳市位元领航科技有限公司 一种基于资产模型的自动化安全检查方法及终端
CN113688402A (zh) * 2021-10-26 2021-11-23 江苏通付盾科技有限公司 一种智能合约漏洞挖掘方法及装置
CN114417332A (zh) * 2022-01-07 2022-04-29 西南交通大学 一种面向c程序源码的程序可信性验证方法及装置
CN118194286A (zh) * 2024-05-15 2024-06-14 中国船舶集团有限公司第七一九研究所 基于模型的fpga代码缺陷检查结果置信度分析方法及系统

Also Published As

Publication number Publication date
CN109063477B (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN109063477A (zh) 一种自动化的智能合约代码缺陷检测系统和方法
CN111062038B (zh) 一种基于状态空间的智能合约形式化验证系统及方法
US20140208431A1 (en) Automated tools for building secure software programs
CN104573503B (zh) 一种内存访问溢出的检测方法及装置
Nejati et al. Matching and merging of variant feature specifications
CN108255702A (zh) 一种测试用例创建方法、装置、设备及存储介质
Ulitin et al. Automated formal verification of model transformations using the invariants mechanism
Nelaturu et al. Correct-by-design interacting smart contracts and a systematic approach for verifying ERC20 and ERC721 contracts with VeriSolid
CN111176980B (zh) 调试环境和运行环境分离的数据分析方法、装置及系统
Mian et al. Model transformation for analyzing dependability of AADL model by using HiP-HOPS
Jung et al. Advanced typing for the Kieker instrumentation languages
Rusu Embedding domain-specific modelling languages in maude specifications
Lazar et al. Using a fUML Action Language to construct UML models
Barbosa et al. Checking semantics equivalence of mda transformations in concurrent systems.
Ushakova et al. Automation of formal verification of programs in the Pifagor language
Rodrigues et al. Model-driven fault injection in Java source code
Scherer Engineering of Reliable and Secure Software via Customizable Integrated Compilation Systems
CN118034661B (zh) 大语言模型智能任务应用系统
Rouland et al. Reusable formal models for threat specification, detection, and treatment
Zhou et al. Covering all the bases: Type-based verification of test input generators
Al-Shareefi Analysing safety-critical systems and security protocols with abstract state machines
US11216255B1 (en) Open compiler system for the construction of safe and correct computational systems
CN117056896B (zh) 一种智能控制系统形式化验证方法及装置
Kochems Verification of asynchronous concurrency and the shaped stack constraint
US20240241889A1 (en) Framework for building cluster management controllers

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant