CN115062313A - 智能合约漏洞检测方法、装置、设备和存储介质 - Google Patents
智能合约漏洞检测方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115062313A CN115062313A CN202210736727.0A CN202210736727A CN115062313A CN 115062313 A CN115062313 A CN 115062313A CN 202210736727 A CN202210736727 A CN 202210736727A CN 115062313 A CN115062313 A CN 115062313A
- Authority
- CN
- China
- Prior art keywords
- formalized
- intelligent contract
- execution
- formal
- initial state
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 107
- 230000006870 function Effects 0.000 claims description 126
- 230000006399 behavior Effects 0.000 claims description 94
- 238000000034 method Methods 0.000 claims description 44
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012546 transfer Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种智能合约漏洞检测方法、装置、设备和存储介质,涉及区块链领域,该智能合约漏洞检测方法包括:获取智能合约的形式化部署信息;其中形式化部署信息包括形式化初始状态以及与形式化行为列表;形式化行为列表包括智能合约的初始化执行函数和行为函数;基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果;根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果,该形式化规范库包括智能合约的形式化规范;如此,解决了现有智能合约漏洞检测方法的检测精度较低的问题。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及智能合约漏洞检测方法、装置、设备和存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是使用去中心化共识机制去维护一个完整的、分布式的、不可篡改的账本数据库的技术,它能够让区块链中的参与者在无需建立信任关系的前提下实现一个统一的账本系统。在区块链中,以数字化的形式写入智能合约,一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。结合智能合约以及区块链技术的特性保障存储、读取、执行整个过程透明可追踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。
由于区块链不可篡改特性,一旦因为程序自身设计的问题,导致智能合约的漏洞,或将产生不可逆转的重大损失。因此,智能合约的漏洞检测至关重要。目前智能合约漏洞检测方法主要采用的是将已出现的漏洞的固有规则编写到软件中,使用软件中的固有规则进行智能合约检测。这种检测方法只能检测已发现的漏洞,检测精度较低。
发明内容
本申请实施例提供智能合约漏洞检测方法、装置、设备和存储介质,解决了现有智能合约漏洞检测方法的检测精度较低的问题。
为实现上述技术目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种智能合约漏洞检测方法,方法应用于虚拟机服务器,包括:获取智能合约的形式化部署信息;其中形式化部署信息包括形式化初始状态以及与形式化行为列表;形式化行为列表包括智能合约的初始化执行函数和行为函数;基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果;根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果;形式化规范库包括智能合约的形式化规范。
本申请实施例中,首先获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。
在一种实施例中,根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果,包括:对于每个行为函数,检测基于形式化初始状态,执行初始化执行函数和行为函数的执行结果是否符合形式化规范;
若符合,则将执行结果与形式化初始状态建立关联关系,以及在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中;若不符合,则上报错误信息。
在一种实施例中,所述方法还包括:建立有向图;有向图包括与形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接;
若符合,则将执行结果作为与形式化初始状态建立关联关系,包括:若符合,则查看有向图中是否存在与执行结果对应的节点,若存在,则设置从初始化状态指向节点的有向边,若不存在,则将执行结果添加到有向图中,同时设置从初始化状态指向执行结果对应的节点的有向边。
在一种实施例中,形式化部署信息包括多个形式化初始状态;所述方法还包括:根据多个形式化初始状态确定执行队列;其中执行队列中包括多个形式化初始状态中符合形式化规范的形式化初始状态;基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,包括:基于执行队列中的每一个形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数。
在一种实施例中,所述方法还包括:根据智能合约的需求信息确定智能合约的定制形式化规范;将定制形式化规范添加到形式化规范库中。
第二方面,本申请实施例提供一种智能合约漏洞检测装置,装置应用于虚拟机服务器,包括:获取模块,用于获取智能合约的形式化部署信息;其中形式化部署信息包括形式化初始状态以及与形式化行为列表;形式化行为列表包括智能合约的初始化执行函数和行为函数;
执行模块,用于基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果;
检测模块,用于根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果;形式化规范库包括智能合约的形式化规范。
在一种实施例中,检测模块,具体用于:对于每个行为函数,检测基于形式化初始状态,执行初始化执行函数和行为函数的执行结果是否符合形式化规范;若符合,则将执行结果与形式化初始状态建立关联关系,以及在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中;若不符合,则上报错误信息。
在一种实施例中,装置还包括建立模块;建立模块,用于建立有向图;有向图包括与形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接;检测模块,具体用于:若符合,则查看有向图中是否存在与执行结果对应的节点,若存在,则设置从初始化状态指向节点的有向边,若不存在,则将执行结果添加到有向图中,同时设置从初始化状态指向执行结果对应的节点的有向边。
在一种实施例中,形式化部署信息包括多个形式化初始状态;装置还包括确定模块;确定模块,用于根据多个形式化初始状态确定执行队列;其中执行队列中包括多个形式化初始状态中符合形式化规范的形式化初始状态;
执行模块,具体用于:基于执行队列中的每一个形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数。
在一种实施例中,装置还包括确定模块和添加模块;确定模块,用于根据智能合约的需求信息确定智能合约的定制形式化规范;添加模块,用于将定制形式化规范添加到形式化规范库中。
第三方面,本申请提供一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如第一方面的智能合约漏洞检测方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如第一方面的智能合约漏洞检测方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面提供的方法。
本申请中第二方面、第三方面、第四方面和第五方面描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
附图说明
图1为本申请实施例提供的一种智能合约漏洞检测方法的应用场景示意图;
图2为本申请实施例提供的一种智能合约漏洞检测方法的流程示意图;
图3为本申请实施例提供的一种形式化行为列表示意图;
图4为本申请实施例提供的另一种智能合约漏洞检测方法的流程示意图;
图5为本申请实施例提供的一种有向图示意图;
图6为本申请实施例提供的另一种有向图示意图;
图7为本申请实施例提供的另一种智能合约漏洞检测方法的流程示意图;
图8为本申请实施例提供的另一种智能合约漏洞检测方法的流程示意图;
图9为本申请实施例提供的一种智能合约漏洞检测装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序;也不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
目前主要采用的智能合约漏洞检测方法有两种,一种是将已出现的漏洞提取出固有的运行规则编写到软件中,使用软件进行智能合约漏洞检测,另一种是人工检测,通过人工查看智能合约逻辑,判断是否存在漏洞。但是第一种方法只能检测已发现的漏洞,检测能力有限,检测精度较低。第二种方法效率很低,且检测精度受限于检测人员能力。
综上所述,现有的智能合约漏洞检测方法精度较低。
为了解决上述技术问题,本申请实施例考虑到智能合约运行在虚拟机中时,会根据虚拟机的自身规则改变智能合约的运行逻辑,导致出现意料外的漏洞,直接应用虚拟机(或者称为虚拟机服务器)进行智能合约漏洞检测。相应的,提供一种智能合约漏洞检测方法,该方法包括:虚拟机首先获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。此外,对于智能合约的每个形式化初始状态,均执行初始化执行函数,验证所有案例的执行结果是否合规(比如是否符合形式化规范),使得智能合约的漏洞检测结果更完善,进一步提高检测精度。
本申请所述的智能合约漏洞检测方法将形式化验证方法运用到智能合约漏洞检测中。其中形式化验证方法是使用数学的公式、定理和系统来验证一个系统的功能正确性和安全属性,与传统检测方法相比,形式化验证方法可以发现目标与系统描述的不一致性问题,因此使用形式化验证方法来验证智能合约,可以有效的检验智能合约的安全性,检测智能合约是否存在漏洞。
本申请实施例提供的智能合约漏洞检测方法的执行主体可以是部署了虚拟机程序的计算机、服务器等具有数据处理能力的电子设备。其中,服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本申请对该智能合约漏洞检测方法的执行主体不作限制。下面以执行主体为部署有虚拟机的服务器为例进行介绍。
参照图1,为本申请实施例提供的一种智能合约漏洞检测方法的应用场景示意图,如图1所示,本申请实施例提供的智能合约漏洞检测方法的执行主体可以是部署有多个虚拟机(或者称为虚拟机集群)的服务器,该虚拟机集群包括至少一台虚拟机。该虚拟机能够获取到智能合约的源代码(或者称为智能合约或者智能合约代码)。示例性的,该智能合约的源代码可以包括用于实现账户A和账户B之间交易的函数(比如转账函数)以及约定账户A和账户B之间的交易规则。该虚拟机可以获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。
其中,本申请实施例提供的智能合约漏洞检测方法的执行主体优选为虚拟机服务器。通过虚拟机服务器直接运行智能合约,不需要使用专有语言进行智能合约的逻辑转换,降低智能合约漏洞检测门槛。
图2示出了本申请一个实施例提供的智能合约漏洞检测方法的流程示意图。如图2所示,该方法由虚拟机(或者称为虚拟机服务器)执行,该方法可以包括以下步骤:
S210,获取智能合约的形式化部署信息。
其中,形式化部署信息包括形式化初始状态以及与形式化行为列表;形式化行为列表包括智能合约的初始化执行函数和行为函数。初始化执行函数只有一个,能够用来根据形式化初始状态对部署智能合约的虚拟机进行初始化,行为函数可以有多个,分别在初始化后的虚拟机中执行智能合约的各个功能。
本申请实施例中,形式化部署信息可以通过解析智能合约的代码而得到。比如可以将智能合约的代码输入智能合约解析器,智能合约解析器解析智能合约得到形式化初始状态以及与形式化行为列表。具体的,智能合约解析器可以根据智能合约的函数定义,确定可被外部调用的函数列表以及对应的参数列表,得到形式化初始状态以及与形式化行为列表,形式化行为列表中的初始化执行函数和行为函数用来在虚拟机中部署智能合约,进而得到全部的形式化部署信息。形式化行为列表可以如图3所示。
示例性的,形式化初始状态可以包括:账户A有100元,账户B有0元。形式化行为列表包括的初始化执行函数可以是:付款函数。该付款函数的参数有两个:目的账户和转账金额。并且,该付款函数的执行规则为转账金额为整数,且转账金额取值范围为0到255。比如形式化行为列表包含以下初始化执行函数:A给B转1元、A给B转100元、A给B转255元等等。
一种可能的方式中,虚拟机可以从存储有智能合约的电子设备上通过通信连接,物理连接等方式获取到智能合约,然后通过智能合约解析器解析智能合约即可得到形式化部署信息。又一种可能的方式中,部署有智能合约的电子设备可以通过智能合约解析器解析智能合约得到形式化初始状态以及与形式化行为列表,虚拟机可以从该电子设备获取形式化初始状态以及与形式化行为列表,并将获取到的形式化初始状态以及与形式化行为列表作为形式化部署信息,部署在本地的数据存储库中,以便从本地获取智能合约的形式化部署信息,如此降低虚拟机解析智能合约带来的功率消耗以及处理复杂度。
需要说明的是,本申请实施例中,形式化初始状态可以是一个或者多个,不予限制。形式化部署信息可以包括解析智能合约得到的所有形式化初始状态,也可以包括解析智能合约得到的所有形式化初始状态中的部分形式化初始状态,比如包括所有形式化初始状态中符合形式化规范的形式化初始状态,即筛查出合规的形式化初始状态执行本申请所述的方法。具体的,筛查出合规的形式化初始状态的过程可以参照下述图8对应的实施例中所述。
S220,基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果。
其中,智能合约的执行结果包括执行初始化执行函数得到的执行结果。结合步骤S210中的示例,初始化执行函数中的目的账户,
示例性的,智能合约的执行结果可以是:账户A有90元,账户B有10元。
进一步地,再基于形式化初始状态执行形式化行为列表包括的初始化执行函数和行为函数时,首先基于形式化初始状态执行初始化执行函数,以实现虚拟机的初始化,再于初始化后的虚拟机中执行行为函数,即可得到智能合约的执行结果。
S230,根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。
其中,形式化规范库包括智能合约的形式化规范。该形式化规范用来描述智能合约的状态应该满足的要求,包括通用规范和定制形式化规范。通用规范是指所有智能合约都必须符合的要求,例如,智能合约执行过程中所有账户的余额之和不变,账户余额不能为负值,确定整数取值范围等。定制形式化规范是指当前验证的智能合约需要遵守的规范,例如,当前智能合约整数取值应属的范围。具体的,形式化规范库的实现方式可以参照下述图7对应的实施例中所述。
本申请实施例中,定制形式化规范的优先级高于通用规范,对于相同的约束以定制形式化规范为准,例如定制形式化规范约束了整数取值范围是0到255,而通用规范确定的整数取值范围是0到1023,则形式化验证过程中以定制形式化规范的0到255为准。
本申请实施例中,首先获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。
在一种实施例中,如图4所示,S230中根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果可以包括下述S2301-S2303:
S2301,对于每个行为函数,检测基于形式化初始状态,执行初始化执行函数和行为函数的执行结果是否符合形式化规范。若符合,则执行S2302,反之,若不符合,则执行S2303。
其中,通过比对形式化规范与执行结果即可确定执行结果是否符合形式化规范。
示例性的,形式化初始状态可以包括:账户A有100元,账户B有0元。形式化行为列表包括的初始化执行函数可以是:付款函数。该付款函数的参数有两个:目的账户和转账金额。该付款函数的执行规则为转账金额为整数,且转账金额取值范围为0到255。形式化规范为:账户总金额不变即总金额为100,账户余额不能为负,则形式化规范表示为A+B=100∩A≥0∩B≥0。
在执行转账函数时,由于转账金额取值范围为0到255,因此会依次执行A给B转账0元、A给B转1元、……、A给B转账255元。对于每一次转账函数的执行结果,均确定执行结果是否符合形式化规范。
例如,执行结果为账户A有10元,账户B有100元,A+B=110,大于100,则执行结果不符合形式化规范。
S2302,将执行结果与形式化初始状态建立关联关系,以及在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中。
本申请实施例中,将执行结果与形式化初始状态建立关联关系,能够用于溯源函数执行结果与形式化初始状态的对应关系。在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中,新的形式化初始状态又可以用于部署到虚拟机中,进行形式化规范验证。能够保证形式化初始状态能够完全覆盖智能合约执行时的各种交易情况,进而确保智能合约检测没有遗漏,提高智能合约检测精度。
进一步的,为了更直观的溯源函数执行结果与形式化初始状态的对应关系,本申请还可以通过有向图的方式示出执行结果与形式化初始状态之间的关联关系。具体的,采用有向图示出的过程如下:
在执行S230之前或者S210之前,建立有向图。
其中,建立有向图可以替换描述为基于智能合约的形式化部署信息包括的形式化初始状态建立有向图;有向图包括与形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接。
进一步地,S2302中将执行结果作为与形式化初始状态建立关联关系,可以包括:若符合,则查看有向图中是否存在与执行结果对应的节点,若存在,则设置从初始化状态指向节点的有向边,若不存在,则将执行结果添加到有向图中,同时设置从初始化状态指向执行结果对应的节点的有向边。
示例性的,图5为初始建立的一个有向图,有向图可以如图5所示,包括A、B和C三个形式化初始状态,A与B存在关联关系,A与C存在关联关系,B与C不存在关联关系。
参照图5所示有向图,在该有向图中添加了与C存在关联关系的执行结果D,得到的有向图可以如图6所示。
本申请实施例中,通过有向图表征形式化初始状态与执行结果的关联关系,便于直观展示执行结果与形式化初始状态的对应关系。
S2303,上报错误信息。
本申请实施例中,在初始化执行函数的执行结果是不符合形式化规范的情况下,上报错误信息,能够及时示警智能合约存在的问题。
基于图4所示方法,可以查验每个形式化初始状态在每个初始化执行函数下的执行结果,将合规的执行结果与形式化初始状态建立关联关系,将不合规的执行结果上报,以便溯源合规的函数执行结果与形式化初始状态的对应关系,以及及时示警智能合约中存在的不合规到的函数执行结果。
在一种实施例中,为了满足用户的定制化需求,可以定制形式规范用来验证智能合约,如图7所示,执行S230之前,该方法还可以包括:
S240,根据智能合约的需求信息确定智能合约的定制形式化规范。
其中,不同的智能合约具备不同的需求信息,根据智能合约的需求信息能够确定智能合约的定制形式化规范。示例性的,智能合约约定了账户A和账户B的交易规则,智能合约的需求信息为账户之间的金额总和不超过3000,则相应确定出的定制形式化规范可以是:A+B<3000。
由于形式化验证是执行所有可能的案例进行验证,因此为了降低形式化验证的花费时间,在实际运行过程中,可以根据实际需求使用定制形式化规范来替换通用形式化规范来降低可能出现的案例数量。
S250,将定制形式化规范添加到形式化规范库中,以便执行S230时,从形式化规范库中获取定制形式化规范,根据智能合约的定制形式化规范检测智能合约的执行结果得到漏洞检测结果。
其中,形式化规范库是用于存储形式化规范的一类数据库,能够存储形式化规范。本申请实施例中,将定制形式化规范添加到形式化规范库中,便于应用形式化规范库直接调用形式化规范。此外,形式化规范库中的定制形式化规范可以满足用户的定制化需求。
在一种实施例中,为提高本申请所示方法的执行效率,在执行S220之前,还需要对智能合约的形式化部署信息中的初始化形式状态进行筛查,筛查出有效(或者合规)的形式化初始状态,避免对无效的形式化初始状态进行处理导致执行效率低下的问题。具体的,该方法如图8所示,形式化部署信息包括多个形式化初始状态;该方法还可以包括:
S260,根据多个形式化初始状态确定执行队列;其中执行队列中包括多个形式化初始状态中符合形式化规范的形式化初始状态。
其中,形式化初始状态可以是多个,可以通过执行队列确定形式化初始状态在虚拟机中的部署顺序,避免遗漏部署形式化初始状态。
进一步地,S220:基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,可以包括:基于执行队列中的每一个形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数。
本申请实施例中,遍历执行队列中的每一个形式化初始状态,相应执行形式化行为列表包括的初始化执行函数和行为函数,能够保证形式化初始状态能够完全覆盖智能合约执行时的各种交易情况,进而确保智能合约检测时没有遗漏,提高智能合约检测精度。并且,执行队列中的形式化初始状态均为符合形式化规范的形式化初始状态,仅对有效的形式化初始状态执行初始化执行函数,避免了对无效的形式化初始状态进行处理导致执行效率低下的问题。
在一种实施例中,为了不遗漏可能存在的交易情况,保证智能合约的全面检查,该方法还可以包括:在执行队列中不存在与执行结果相同的形式化初始状态的情况下,将执行结果作为新的形式化初始状态添加到执行队列中。
本申请实施例中,在执行队列中不存在与执行结果相同的形式化初始状态的情况下,将执行结果作为新的形式化初始状态添加到执行队列中,新的形式化初始状态又可以用于部署到虚拟机中,对基于新的形式化初始状态执行初始化执行函数后得到的执行结果进行形式化规范验证。能够保证形式化初始状态能够完全覆盖智能合约执行时的各种交易情况,进而确保智能合约检测没有遗漏,提高智能合约检测精度。
下面结合具体的例子,对上述方法进行详细介绍:
首先在虚拟机内部创建一个执行队列Q和一个有向图G,执行队列Q可以参考步骤S260中对执行队列的说明,有向图G可以参考图5以及步骤S2302中的有向图说明。可基于该执行队列Q和有向图G执行上述方法,具体可以包括如下步骤:
①获取智能合约的形式化部署信息,通过形式化检测工具检查形式化初始化状态是否满足形式化规范,如果不满足,直接报错;如果满足则执行步骤②。即通过步骤①实现对形式化部署信息中包括的形式化初始状态进行筛查得到合规的形式化初始状态,将合规的形式化初始状态放到执行队列Q中。
②将满足形式化规范的形式化初始化状态放入执行队列Q中,同时将形式化初始化状态作为节点添加到有向图G中。其中形式化初始化状态可以是一个,也可以是多个。
③当执行队列Q不为空时,执行下述步骤1)~步骤4):
1)弹出执行队列Q中的第一个形式化初始化状态s,用s执行初始化执行函数以实现虚拟机的初始化。
2)执行形式化行为列表中所有的行为函数,并将每个行为函数执行后的结果放入集合Set中。
3)如果Set不为空:对于Set中的每一个元素t,执行如下操作,并再执行完如下操作后,将元素t从Set中删除:
检测t是否符合形式化规范,如果不符合,报告错误。
如果符合,则检查t是否已存在于有向图G中,如果存在则添加一条s到t的有向边,如果不存在,则将t添加到执行队列Q中,并添加到有向图中,同时在有向图中添加一条s指向t的有向边。
4)如果Set为空,则继续处理执行队列Q中的下一个形式化初始状态。重复执行上述步骤1)~4),当所有可能的情况(即执行队列中所有的形式化初始状态)都执行完毕后,执行队列Q为空,结束。
本申请实施例中,通过遍历执行队列中包括形式化初始状态的形式确保各形式化初始状态均能被执行漏洞检测。在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中,新的形式化初始状态又可以用于部署到虚拟机中,进行形式化规范验证。能够保证形式化初始状态能够完全覆盖智能合约执行时的各种交易情况,进而确保智能合约检测没有遗漏,提高智能合约检测精度。
图1-图8描述了智能合约漏洞检测方法,下面结合图9和图10描述本申请实施例提供的装置。为了实现上述功能,智能合约漏洞检测装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法,示例性的对智能合约漏洞检测装置进行功能模块的划分。智能合约漏洞检测装置可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图9示出了本申请一个实施例提供的智能合约漏洞检测装置的结构示意图,图9所示装置中各模块具有实现图2中各个步骤的功能,并能达到其相应技术效果。如图9所示,该装置可以包括:
获取模块910,用于获取智能合约的形式化部署信息。其中形式化部署信息包括形式化初始状态以及与形式化行为列表。形式化行为列表包括智能合约的初始化执行函数和行为函数。
执行模块920,用于基于形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果。智能合约的执行结果包括执行初始化执行函数得到的执行结果。
检测模块930,用于根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。形式化规范库包括智能合约的形式化规范。
本申请实施例中,首先获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。
在一种实施例中,检测模块930,具体用于:
对于每个行为函数,检测基于形式化初始状态,执行初始化执行函数和行为函数的执行结果是否符合形式化规范。
若符合,则将执行结果与形式化初始状态建立关联关系,以及在执行结果未包括在形式化部署信息中的情况下,将执行结果作为新的形式化初始状态包括在形式化部署信息中。
若不符合,则上报错误信息。
在一种实施例中,装置还包括建立模块。
建立模块,用于建立有向图。有向图包括与形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接。
检测模块930,具体用于:
若符合,则查看有向图中是否存在与执行结果对应的节点,若存在,则设置从初始化状态指向节点的有向边,若不存在,则将执行结果添加到有向图中,同时设置从初始化状态指向执行结果对应的节点的有向边。
在一种实施例中,形式化部署信息包括多个形式化初始状态。装置还包括确定模块。
确定模块,用于根据多个形式化初始状态确定执行队列。其中执行队列中包括多个形式化初始状态中符合形式化规范的形式化初始状态。
执行模块920,具体用于:基于执行队列中的每一个形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数。
在一种实施例中,装置还包括确定模块和添加模块。
确定模块,用于根据智能合约的需求信息确定智能合约的定制形式化规范。
添加模块,用于将定制形式化规范添加到形式化规范库中。
本申请实施例中,首先获取智能合约的形式化部署信息,然后基于形式化部署信息包括的形式化初始状态,执行形式化行为列表包括的初始化执行函数和行为函数,得到智能合约的执行结果,再根据智能合约的形式化规范库检测智能合约的执行结果,得到漏洞检测结果。该漏洞检测结果能够表征智能合约在实际运行时是否存在漏洞,无论是已知漏洞类型还是未知漏洞类型均可以检测出,智能合约的漏洞检测精度较高。
图10示出了本申请一个实施例提供的电子设备的结构示意图。如图10所示,该设备可以包括处理器101以及存储有计算机程序指令的存储器102。
具体地,上述处理器101可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器102可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器102可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器102可以包括可移除或不可移除(或固定)的介质,或者存储器102是非易失性固态存储器。存储器102可在综合网关容灾设备的内部或外部。
在一个实例中,存储器102可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器101通过读取并执行存储器102中存储的计算机程序指令,以实现图2所示实施例中的方法,并达到图2所示实例执行其方法达到的相应技术效果,为简洁描述在此不再赘述。
在一个示例中,该电子设备还可包括通信接口103和总线110。其中,如图10所示,处理器101、存储器102、通信接口103通过总线110连接并完成相互间的通信。
通信接口103,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线110包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(Industry Standard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线110可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备可以执行本申请实施例中的智能合约漏洞检测方法,从而实现图2描述的智能合约漏洞检测方法的相应技术效果。
另外,结合上述实施例中的智能合约漏洞检测方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种智能合约漏洞检测方法。
在示例性的实施例中,本申请实施例还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机实现上述实施例中的智能合约漏洞检测方法。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种智能合约漏洞检测方法,其特征在于,所述方法应用于虚拟机服务器,包括:
获取智能合约的形式化部署信息;其中所述形式化部署信息包括形式化初始状态以及与形式化行为列表;所述形式化行为列表包括所述智能合约的初始化执行函数和行为函数;
基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,得到所述智能合约的执行结果;
根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果;所述形式化规范库包括所述智能合约的形式化规范。
2.根据权利要求1所述的方法,其特征在于,所述根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果,包括:
对于每个行为函数,检测基于所述形式化初始状态,执行所述初始化执行函数和所述行为函数的执行结果是否符合所述形式化规范;
若符合,则将所述执行结果与所述形式化初始状态建立关联关系,以及在所述执行结果未包括在所述形式化部署信息中的情况下,将所述执行结果作为新的形式化初始状态包括在所述形式化部署信息中;
若不符合,则上报错误信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
建立有向图;所述有向图包括与所述形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接;
所述若符合,则将所述执行结果与所述形式化初始状态建立关联关系,包括:若符合,则查看所述有向图中是否存在与所述执行结果对应的节点,若存在,则设置从所述初始化状态指向所述节点的有向边,若不存在,则将所述执行结果添加到所述有向图中,同时设置从所述初始化状态指向所述执行结果对应的节点的有向边。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述形式化部署信息包括多个形式化初始状态;所述方法还包括:
根据所述多个形式化初始状态确定执行队列;其中所述执行队列中包括所述多个形式化初始状态中符合所述形式化规范的形式化初始状态;
所述基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,包括:基于所述执行队列中的每一个形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述智能合约的需求信息确定所述智能合约的定制形式化规范;
将所述定制形式化规范添加到所述形式化规范库中。
6.一种智能合约漏洞检测装置,其特征在于,所述装置应用于虚拟机服务器,包括:
获取模块,用于获取智能合约的形式化部署信息;其中所述形式化部署信息包括形式化初始状态以及与形式化行为列表;所述形式化行为列表包括所述智能合约的初始化执行函数和行为函数;
执行模块,用于基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,得到所述智能合约的执行结果;
检测模块,用于根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果;所述形式化规范库包括所述智能合约的形式化规范。
7.根据权利要求6所述的装置,其特征在于,所述检测模块,具体用于:
对于每个行为函数,检测基于所述形式化初始状态,执行所述初始化执行函数和所述行为函数的执行结果是否符合所述形式化规范;
若符合,则将所述执行结果与所述形式化初始状态建立关联关系,以及在所述执行结果未包括在所述形式化部署信息中的情况下,将所述执行结果作为新的形式化初始状态包括在所述形式化部署信息中;
若不符合,则上报错误信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括建立模块;
所述建立模块,用于建立有向图;所述有向图包括与所述形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接;
所述检测模块,具体用于:
若符合,则查看所述有向图中是否存在与所述执行结果对应的节点,若存在,则设置从所述初始化状态指向所述节点的有向边,若不存在,则将所述执行结果添加到所述有向图中,同时设置从所述初始化状态指向所述执行结果对应的节点的有向边。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述形式化部署信息包括多个形式化初始状态;所述装置还包括确定模块;
所述确定模块,用于根据所述多个形式化初始状态确定执行队列;其中所述执行队列中包括所述多个形式化初始状态中符合所述形式化规范的形式化初始状态;
所述执行模块,具体用于:基于所述执行队列中的每一个形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括确定模块和添加模块;
所述确定模块,用于根据所述智能合约的需求信息确定所述智能合约的定制形式化规范;
所述添加模块,用于将所述定制形式化规范添加到所述形式化规范库中。
11.一种电子设备,其特征在于,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的智能合约漏洞检测方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的智能合约漏洞检测方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210736727.0A CN115062313A (zh) | 2022-06-27 | 2022-06-27 | 智能合约漏洞检测方法、装置、设备和存储介质 |
PCT/CN2023/102025 WO2024001929A1 (zh) | 2022-06-27 | 2023-06-25 | 智能合约漏洞检测方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210736727.0A CN115062313A (zh) | 2022-06-27 | 2022-06-27 | 智能合约漏洞检测方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115062313A true CN115062313A (zh) | 2022-09-16 |
Family
ID=83202310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210736727.0A Pending CN115062313A (zh) | 2022-06-27 | 2022-06-27 | 智能合约漏洞检测方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115062313A (zh) |
WO (1) | WO2024001929A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001929A1 (zh) * | 2022-06-27 | 2024-01-04 | 中国人民银行数字货币研究所 | 智能合约漏洞检测方法、装置和设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489973A (zh) * | 2019-08-06 | 2019-11-22 | 广州大学 | 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质 |
CN110543419B (zh) * | 2019-08-28 | 2021-09-03 | 杭州趣链科技有限公司 | 一种基于深度学习技术的智能合约代码漏洞检测方法 |
CN113672515B (zh) * | 2021-08-26 | 2023-08-04 | 北京航空航天大学 | 一种基于符号执行的wasm智能合约漏洞检测方法 |
CN114358934A (zh) * | 2021-12-29 | 2022-04-15 | 中国农业银行股份有限公司 | 智能合约的校验方法和相关设备 |
CN115062313A (zh) * | 2022-06-27 | 2022-09-16 | 中国人民银行数字货币研究所 | 智能合约漏洞检测方法、装置、设备和存储介质 |
-
2022
- 2022-06-27 CN CN202210736727.0A patent/CN115062313A/zh active Pending
-
2023
- 2023-06-25 WO PCT/CN2023/102025 patent/WO2024001929A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001929A1 (zh) * | 2022-06-27 | 2024-01-04 | 中国人民银行数字货币研究所 | 智能合约漏洞检测方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2024001929A1 (zh) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102274803B1 (ko) | 시스템 아키텍처의 일관성 정량화 | |
KR102285862B1 (ko) | 시스템 아키텍처를 표현하는 속성 그래프 데이터 모델 | |
CN107145437B (zh) | 一种java注解测试方法及装置 | |
CN103092761A (zh) | 基于差异信息文件识别和检查修改代码块的方法及装置 | |
KR102185553B1 (ko) | 시스템 아키텍처를 표현하는 가중 속성 그래프 데이터 모델 | |
KR102265092B1 (ko) | 속성 그래프 데이터 모델 분석에 의한 견고성 정량화 | |
CN103049363B (zh) | 一种NAND Flash控制器的验证方法 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN115062313A (zh) | 智能合约漏洞检测方法、装置、设备和存储介质 | |
CN107832208A (zh) | 软件的自动测试方法及终端设备 | |
CN110287700B (zh) | 一种iOS应用安全分析方法及装置 | |
CN112948233A (zh) | 一种接口测试方法、装置、终端设备及介质 | |
CN112612716B (zh) | 差异行代码覆盖率增强标记方法、系统、设备及存储介质 | |
CN115062312A (zh) | 智能合约漏洞检测方法、装置、设备和存储介质 | |
CN110795308A (zh) | 一种服务器检验方法、装置、设备及存储介质 | |
CN113111614B (zh) | 类总线分组的确定方法、装置、设备及介质 | |
CN115657981A (zh) | 验证环境中的打印信息的打印等级的设置方法及验证方法 | |
CN114860608A (zh) | 基于场景构建的系统自动化测试方法、装置、设备及介质 | |
CN114282221A (zh) | 注入类漏洞检测方法、系统、终端及存储介质 | |
US10769333B1 (en) | System, method, and computer program product for debugging one or more observable failures in a formal verification | |
CN116401113B (zh) | 一种异构众核架构加速卡的环境验证方法、装置及介质 | |
JP2019215867A (ja) | ソースコードのプロパティを検証するための方法およびシステム | |
CN113064771B (zh) | 一种i2c链路检查方法、系统、终端及存储介质 | |
CN115509906A (zh) | 软件缺陷检测方法、装置、设备和存储介质 | |
CN112949214B (zh) | 机器学习建模方法、可视化建模平台及电子设备 |
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 |