CN109460663A - 一种智能合约审计方法、装置及其存储介质 - Google Patents
一种智能合约审计方法、装置及其存储介质 Download PDFInfo
- Publication number
- CN109460663A CN109460663A CN201811344335.XA CN201811344335A CN109460663A CN 109460663 A CN109460663 A CN 109460663A CN 201811344335 A CN201811344335 A CN 201811344335A CN 109460663 A CN109460663 A CN 109460663A
- Authority
- CN
- China
- Prior art keywords
- loophole
- regular expression
- source code
- feature
- intelligent contract
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种智能合约审计方法、装置及其存储介质,涉及智能合约技术领域。该智能合约审计方法包括:获取智能合约的源代码;判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建;若是,确定所述智能合约存在与所述漏洞特征对应的漏洞。本发明通过该方法对智能合约进行自动化静态审计,提高了智能合约的审计安全性和效率。
Description
技术领域
本发明涉及智能合约技术领域,具体而言,涉及一种智能合约审计方法、装置及其存储介质。
背景技术
随着以太坊虚拟机的成熟,智能合约的概念重新被提出,基于区块链的智能合约是现在的热门,一般由solidity编写,部署在以太坊EVM上。其中,Solidity是一种面向智能合约的高级语言,用于完成智能合约,它是一种图灵完备的语言,由它编写的代码可以在基于以太坊的虚拟机(EVM)上运行;智能合约是一种由人们约定俗成的一种合约,一般由双方认可,由第三方来保证合约的执行,由于以太坊EVM的兴起,区块链不可篡改、去中心化的核心和智能合约相符,基于以太坊EVM的智能合约成了热门。现在以太坊链上部署的智能合约已经超过百万份。
随之而来的智能合约安全问题也成了需要关注的问题。传统的智能合约安全问题一般由人工阅读审计,但这样的方式耗费人力物力,效率低下且,因此,需要寻求一种能够自动化静态审计的智能合约的方法。
发明内容
有鉴于此,本发明实施例的目的在于提供一种智能合约审计方法、装置及其存储介质,以解决上述问题。
第一方面,本发明实施例提供了一种智能合约审计方法,该智能合约审计方法包括:获取智能合约的源代码;判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建;若是,确定所述智能合约存在与所述漏洞特征对应的漏洞。
综合第一方面,在所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征之前,所述方法还包括:基于已公开的漏洞列表获得漏洞与对应漏洞特征的映射关系,基于所述漏洞特征构建漏洞匹配规则。
综合第一方面,所述漏洞匹配规则包括match正则表达式和unmatch正则表达式,所述漏洞对应有至少一个match正则表达式和至少一个unmatch正则表达式,所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,包括:判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征;若是,表示所述智能合约存在与所述漏洞特征对应的漏洞。
综合第一方面,在所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征之前,所述方法包括:通过正则表达式获取与漏洞相关的变量名;生成用于匹配所述变量名的match正则表达式。所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,包括:断所述源代码是否存在使所述match正则表达式有效的漏洞特征;若是,表示所述智能合约存在与所述漏洞特征对应的漏洞。
综合第一方面,所述获取智能合约的源代码,包括:获取用户提交的智能合约的源代码;或从区块链上获取公开验证过的智能合约源代码。
综合第一方面,在所述确定所述智能合约存在与所述漏洞特征对应的漏洞之后,所述方法还包括:输出所述漏洞的产生原因以及对应的漏洞修复方式。
第二方面,本发明实施例提供了一种智能合约审计装置,该智能合约审计装置包括:获取模块,用于获取智能合约的源代码;匹配模块,用于判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建;漏洞确定模块,用于在所述源代码存在满足漏洞匹配规则的漏洞特征时,确定所述智能合约存在与所述漏洞特征对应的漏洞。
综合第二方面,所述漏洞匹配规则包括match正则表达式和unmatch正则表达式,所述漏洞对应有至少一个match正则表达式和至少一个unmatch正则表达式,所述匹配模块包括:第一判断单元,用于判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征。
综合第二方面,所述匹配模块还包括:变量名正则表达式生成单元,用于通过正则表达式获取与漏洞相关的变量名,生成用于匹配所述变量名的match正则表达式;第二判断单元,用于判断所述源代码是否存在使所述match正则表达式有效的漏洞特征。
第三方面,本发明实施例还提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一方面所述方法中的步骤。
本发明提供的有益效果是:
本发明提供了一种智能合约审计方法、装置及其存储介质,该智能合约审计方法通过漏洞匹配规则对智能合约的源代码自动进行漏洞特征的搜索匹配,从而使智能合约的审计能够自动化完成;同时该漏洞匹配规则基于正则表达式构建,基于正则表达式的漏洞特征的搜索匹配运算简单、处理速度快且匹配准确度高,从而提高了智能合约审计的效率和安全性。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明第一实施例提供的一种智能合约审计方法的流程示意图;
图2为本发明第一实施例提供的一种变量名漏洞匹配步骤的流程示意图;
图3为本发明第二实施例提供的一种智能合约审计装置100的模块示意图;
图4为本发明第三实施例提供的一种可应用于本申请实施例中的电子设备200的结构框图。
图标:100-智能合约审计装置;110-获取模块;120-匹配模块;130-漏洞确定模块;200-电子设备;201-存储器;202-存储控制器;203-处理器;204-外设接口;205-输入输出单元;206-音频单元;207-显示单元。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
第一实施例
经本申请人研究发现,现有的区块链智能合约审计没有特别有效的手段,一般的智能合约均使用人工审计来寻找漏洞,由智能合约开发者将智能合约提供给安全人员审计,有安全人员测试并输出相关报告。人工审计花费大,周期长,耗费人力物力,且懂得审计智能合约的安全人员有限,开发者寻求帮助的途径有限,没有寻找到安全人员审计的合约安全性得不到保障。为了解决上述问题,本发明第一实施例提供了一种智能合约审计方法。
请参考图1,图1为本发明第一实施例提供的一种智能合约审计方法的流程示意图,该智能合约审计方法的具体步骤可以如下:
步骤S20:获取智能合约的源代码。
智能合约是在区块链上运行的程序,通常会把写区块链程序改称写智能合约,目前提到写智能合约,通常指的是支持执行图灵完备程序的以太坊(Ethereum)区块链。目前最常见的智能合约是各种加密货币合约,开发者可以很容易地透过部署一个智能合约,来提供运行于以太坊上的新加密代币。如果这份智能合约相容于ERC20标准1,开发者不需要重新开发从挖矿到交易的整个代币生态系,你的新加密代币就可以直接使用支持支持以太坊的电子钱包来收送,大大降低了建立新加密代币的门槛。智能合约也可以用来运作各种公开公正的自动服务机构(DAO,权力下放自治组织)。透过分散在全球各节点上运作的智能合约,所有运作与决策都是公开透明的,降低了交易的不确定性(不确定性)。
应当理解的是,本实施例中获取源代码的方式可以是获取用户提交的智能合约的源代码,或从区块链上获取公开验证过的智能合约源代码。
步骤S40:判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建。
本实施例中的漏洞匹配规则可由审计人员根据具体需求进行设计,其基于正则表达式构建,采用正则表达式在源代码中进行漏洞特征的匹配。正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
其中,智能合约注重的点往往是合约本身,智能合约源代码中主要为功能代码,所以代码本身不长,结构复杂度低。而现有智能合约大多基于solidity完成,Solidity作为一种新兴语言,其本身的许多特性都不被开发者熟知,大部分开发者开发智能合约时依赖其他公开代码,导致大多数智能合约结构相似,且智能合约中特征关键字众多,特征非常明显。因此本实施例中的漏洞特征可以是智能合约的源代码中的特征关键字,从而使本方法能够通过正则匹配迅速、准确地进行漏洞特征的匹配。
步骤S60:若是,确定所述智能合约存在与所述漏洞特征对应的漏洞。
本实施例提供的智能合约审计方法通过漏洞匹配规则对智能合约的源代码自动进行漏洞特征的搜索匹配,从而使智能合约的审计能够自动化完成;同时该漏洞匹配规则基于正则表达式构建,基于正则表达式的漏洞特征的搜索匹配运算简单、处理速度快且匹配准确度高,从而提高了智能合约审计的效率和安全性。
作为一种可选的实施方式,在步骤S40之前,为了提高漏洞匹配规则的精确性和规范性,以进一步增强审计准确度和效率,本实施例可以根据网上公开的各种智能合约安全分析文章、各类安全事件得到现有的漏洞列表,基于该漏洞列表获得漏洞与对应漏洞特征的映射关系,并基于漏洞特征构建漏洞匹配规则。
在上述步骤基于漏洞特征构建漏洞匹配规则前,还可以先根据漏洞列表总结漏洞模型,该漏洞模型可以基于SQL、MYSQL、ORACLE等数据库建立,进行漏洞、漏洞特征以及构建的漏洞匹配规则的对应关系的存储和查询等操作。
作为一种可选的实施方式,本实施例中的漏洞匹配规则可以包括match正则表达式和unmatch正则表达式,其中,match正则表达式在存在对应漏洞特征时完成匹配,unmatch正则表达式在排除对应漏洞特征时完成匹配。同时,一个漏洞对应至少一个match正则表达式和至少一个unmatch正则表达式。此时,步骤S40中的“判断所述源代码是否存在满足漏洞匹配规则的漏洞特征”具体可以为:判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征,若是,表示所述智能合约存在与所述漏洞特征对应的漏洞。
以未触发Transfer事件来举例,在智能合约中,代币合约中需要用到transfer函数,ERC20标准规定transfer函数调用时必须触发Transfer。当匹配到transfer函数,但没有匹配到Transfer函数时,则问题存在。
首先我们使用正则表达式\bfunction\s*transfer\b\(来匹配判断智能合约中是否定义了Transfer函数,在其匹配到结果时可以肯定智能合约代码中定义了Transfer函数,而transfer函数是ERC20标准中定义的转账函数。
然后使用正则表达式\b(?<!(event\\s))(emit\s*)?Transfer\b\(进行匹配,如果上述正则表达式匹配到结果时,我们可以肯定智能合约中定义并触发了Transfer事件,如果没有匹配到,则该合约没有触发该事件。当智能合约中匹配到Transfer函数且未触发Transfer事件,则认为该智能合约存在未触发Tranfser的漏洞,应当理解的是,该漏洞对应的漏洞特征为智能合约代码中定义了Transfer函数且未触发Transfer事件。
作为一种可选的实施方式,本实施例中的漏洞匹配规则可以是基于与漏洞相关的变量名及用于匹配变量名的match表达式进行。请参考图2,图2为本发明第一实施例提供的一种变量名漏洞匹配步骤的流程示意图,该步骤具体可以如下:
步骤S41:通过正则表达式获取与漏洞相关的变量名。
步骤S42:生成用于匹配所述变量名的match正则表达式。
步骤S43:判断所述源代码是否存在使所述match正则表达式有效的漏洞特征。
在步骤S43确定源代码中存在使match正则表达式有效的漏洞特征时,则表示智能合约存在与漏洞特征对应的漏洞。应当理解的是,本步骤中提及的漏洞特征可以是漏洞对应的一个漏洞特征或多个漏洞特征。
以未检查地址变量问题来举例,例如在智能合约中,函数中的地址变量在调用前,应检查该地址非区块链地址0。此时如果先匹配到函数参数中变量类型为address的变量名,然后匹配函数内容是否与address(0)检查是否相等,如果不相等,则漏洞存在。
首先在匹配目标智能合约的函数时,获取函数定义function transfer(address_to,uint256_value)returns(bool success),然后匹配函数参数address_to,uint256_value,通过正则表达式\bfunction\s+\w+\([^\)]*?address\s+(\w+)从中选取变量类型为address的变量,获取变量名_to。
然后通过正则表达式\b(if|require)\s*\(_to\s!=\s(address\(0\)|0x0)\)来对函数内容做匹配,如果没有匹配到对应的结果,则认为该变量没有检查是否和address(0)相等,该漏洞存在。
考虑到操作人员在智能合约审计确定智能合约存在漏洞时,还需要对该漏洞进行定位,并通过漏洞的相关描述获知如何对该漏洞进行修复。因此本实施例在步骤S40之后,还可以包括步骤:输出所述漏洞的产生原因以及对应的漏洞修复方式。
作为一种可选的实施方式,本实施例中的漏洞的产生原因和漏洞修复方式可以是在漏洞模型构建时存储的对应数据,还可以是通过网络数据库或事先存储在本地的数据库获取。
第二实施例
为了配合本发明第一实施例提供的智能合约审计方法,本发明第二实施例还提供了一种智能合约审计装置100。
请参考图3,图3为本发明第二实施例提供的一种智能合约审计装置100的模块示意图。
智能合约审计装置100包括获取模块110、匹配模块120和漏洞确定模块130。
获取模块110,用于获取智能合约的源代码。
匹配模块120,用于判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建。
漏洞确定模块130,用于在所述源代码存在满足漏洞匹配规则的漏洞特征时,确定所述智能合约存在与所述漏洞特征对应的漏洞。
作为一种可选的实施方式,本实施例中的漏洞匹配规则可以包括match正则表达式和unmatch正则表达式,所述漏洞对应有至少一个match正则表达式和至少一个unmatch正则表达式,则匹配模块120包括:第一判断单元,用于判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征。
作为一种可选的实施方式,本实施例中的匹配模块120还可以包括变量名正则表达式生成单元和第二判断单元。
变量名正则表达式生成单元,用于通过正则表达式获取与漏洞相关的变量名,生成用于匹配所述变量名的match正则表达式。
第二判断单元,用于判断所述源代码是否存在使所述match正则表达式有效的漏洞特征。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
第三实施例
请参照图4,图4为本发明第三实施例提供的一种可应用于本申请实施例中的电子设备200的结构框图。本实施例提供的电子设备200可以包括智能合约审计装置100、存储器201、存储控制器202、处理器203、外设接口204、输入输出单元205、音频单元206、显示单元207。
所述存储器201、存储控制器202、处理器203、外设接口204、输入输出单元205、音频单元206、显示单元207各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述智能合约审计装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器201中或固化在智能合约审计装置100的操作系统(operating system,OS)中的软件功能模块。所述处理器203用于执行存储器201中存储的可执行模块,例如智能合约审计装置100包括的软件功能模块或计算机程序。
其中,存储器201可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器201用于存储程序,所述处理器203在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的服务器所执行的方法可以应用于处理器203中,或者由处理器203实现。
处理器203可以是一种集成电路芯片,具有信号的处理能力。上述的处理器203可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器203也可以是任何常规的处理器等。
所述外设接口204将各种输入/输出装置耦合至处理器203以及存储器201。在一些实施例中,外设接口204,处理器203以及存储控制器202可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
输入输出单元205用于提供给用户输入数据实现用户与所述服务器(或本地终端)的交互。所述输入输出单元205可以是,但不限于,鼠标和键盘等设备。
音频单元206向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
显示单元207在所述电子设备200与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元207可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器203进行计算和处理。
可以理解,图4所示的结构仅为示意,所述电子设备200还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
综上所述,本发明实施例提供了一种智能合约审计方法、装置及其存储介质,该智能合约审计方法通过漏洞匹配规则对智能合约的源代码自动进行漏洞特征的搜索匹配,从而使智能合约的审计能够自动化完成;同时该漏洞匹配规则基于正则表达式构建,基于正则表达式的漏洞特征的搜索匹配运算简单、处理速度快且匹配准确度高,从而提高了智能合约审计的效率和安全性。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种智能合约审计方法,其特征在于,所述方法包括:
获取智能合约的源代码;
判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建;
若是,确定所述智能合约存在与所述漏洞特征对应的漏洞。
2.根据权利要求1所述的智能合约审计方法,其特征在于,在所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征之前,所述方法还包括:
基于已公开的漏洞列表获得漏洞与对应漏洞特征的映射关系,基于所述漏洞特征构建漏洞匹配规则。
3.根据权利要求1所述的智能合约审计方法,其特征在于,所述漏洞匹配规则包括match正则表达式和unmatch正则表达式,所述漏洞对应有至少一个match正则表达式和至少一个unmatch正则表达式,所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,包括:
判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征;
若是,表示所述智能合约存在与所述漏洞特征对应的漏洞。
4.根据权利要求1所述的智能合约审计方法,其特征在于,在所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征之前,所述方法包括:
通过正则表达式获取与漏洞相关的变量名;
生成用于匹配所述变量名的match正则表达式;
所述判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,包括:
判断所述源代码是否存在使所述match正则表达式有效的漏洞特征;
若是,表示所述智能合约存在与所述漏洞特征对应的漏洞。
5.根据权利要求1-4中任一权项所述的智能合约审计方法,其特征在于,所述获取智能合约的源代码,包括:
获取用户提交的智能合约的源代码;或
从区块链上获取公开验证过的智能合约源代码。
6.根据权利要求1-4中任一权项所述的智能合约审计方法,其特征在于,在所述确定所述智能合约存在与所述漏洞特征对应的漏洞之后,所述方法还包括:
输出所述漏洞的产生原因以及对应的漏洞修复方式。
7.一种智能合约审计装置,其特征在于,所述装置包括:
获取模块,用于获取智能合约的源代码;
匹配模块,用于判断所述源代码是否存在满足漏洞匹配规则的漏洞特征,所述漏洞匹配规则基于正则表达式构建;
漏洞确定模块,用于在所述源代码存在满足漏洞匹配规则的漏洞特征时,确定所述智能合约存在与所述漏洞特征对应的漏洞。
8.根据权利要求7所述的智能合约审计装置,其特征在于,所述漏洞匹配规则包括match正则表达式和unmatch正则表达式,所述漏洞对应有至少一个match正则表达式和至少一个unmatch正则表达式,所述匹配模块包括:
第一判断单元,用于判断所述源代码中是否存在使所述漏洞对应的所有match正则表达式同时有效且所有unmatch正则表达式同时无效的漏洞特征。
9.根据权利要求7所述的智能合约审计装置,其特征在于,所述匹配模块还包括:
变量名正则表达式生成单元,用于通过正则表达式获取与漏洞相关的变量名,生成用于匹配所述变量名的match正则表达式;
第二判断单元,用于判断所述源代码是否存在使所述match正则表达式有效的漏洞特征。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1-6任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811344335.XA CN109460663A (zh) | 2018-11-12 | 2018-11-12 | 一种智能合约审计方法、装置及其存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811344335.XA CN109460663A (zh) | 2018-11-12 | 2018-11-12 | 一种智能合约审计方法、装置及其存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109460663A true CN109460663A (zh) | 2019-03-12 |
Family
ID=65610249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811344335.XA Pending CN109460663A (zh) | 2018-11-12 | 2018-11-12 | 一种智能合约审计方法、装置及其存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460663A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147995A (zh) * | 2019-05-06 | 2019-08-20 | 山东公链信息科技有限公司 | 一种基于密钥层级的审计方法 |
CN110175454A (zh) * | 2019-04-19 | 2019-08-27 | 肖银皓 | 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 |
CN110309660A (zh) * | 2019-07-09 | 2019-10-08 | 佛山市伏宸区块链科技有限公司 | 一种智能合约代码的自动化审计系统及方法 |
CN110502898A (zh) * | 2019-07-31 | 2019-11-26 | 深圳前海达闼云端智能科技有限公司 | 审计智能合约的方法、系统、装置、存储介质和电子设备 |
CN110727948A (zh) * | 2019-10-11 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 智能合约审计方法、装置、计算机设备及存储介质 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN111177730A (zh) * | 2019-12-19 | 2020-05-19 | 河海大学 | 一种以太坊智能合约问题检测和预防方法与装置 |
CN114531247A (zh) * | 2022-04-22 | 2022-05-24 | 北京中宇万通科技股份有限公司 | 数据共享方法、装置、设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339252A (zh) * | 2011-07-25 | 2012-02-01 | 大连理工大学 | 基于xml中间模型以及缺陷模式匹配的静态检测系统 |
CN105320890A (zh) * | 2015-09-29 | 2016-02-10 | 国网智能电网研究院 | 一种基于分组dfa的源代码漏洞检测方法 |
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
CN108459954A (zh) * | 2017-02-22 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 应用程序漏洞检测方法和装置 |
-
2018
- 2018-11-12 CN CN201811344335.XA patent/CN109460663A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339252A (zh) * | 2011-07-25 | 2012-02-01 | 大连理工大学 | 基于xml中间模型以及缺陷模式匹配的静态检测系统 |
CN105320890A (zh) * | 2015-09-29 | 2016-02-10 | 国网智能电网研究院 | 一种基于分组dfa的源代码漏洞检测方法 |
CN108459954A (zh) * | 2017-02-22 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 应用程序漏洞检测方法和装置 |
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175454A (zh) * | 2019-04-19 | 2019-08-27 | 肖银皓 | 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 |
CN110147995A (zh) * | 2019-05-06 | 2019-08-20 | 山东公链信息科技有限公司 | 一种基于密钥层级的审计方法 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN110766402B (zh) * | 2019-06-27 | 2021-09-03 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN110309660A (zh) * | 2019-07-09 | 2019-10-08 | 佛山市伏宸区块链科技有限公司 | 一种智能合约代码的自动化审计系统及方法 |
CN110502898A (zh) * | 2019-07-31 | 2019-11-26 | 深圳前海达闼云端智能科技有限公司 | 审计智能合约的方法、系统、装置、存储介质和电子设备 |
CN110727948A (zh) * | 2019-10-11 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 智能合约审计方法、装置、计算机设备及存储介质 |
CN110727948B (zh) * | 2019-10-11 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 智能合约审计方法、装置、计算机设备及存储介质 |
CN111177730A (zh) * | 2019-12-19 | 2020-05-19 | 河海大学 | 一种以太坊智能合约问题检测和预防方法与装置 |
CN114531247A (zh) * | 2022-04-22 | 2022-05-24 | 北京中宇万通科技股份有限公司 | 数据共享方法、装置、设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460663A (zh) | 一种智能合约审计方法、装置及其存储介质 | |
CN105471823B (zh) | 一种敏感信息处理方法、装置、服务器及安全判定系统 | |
US11216587B2 (en) | Log tokenization in an integration platform | |
TW201923685A (zh) | 風險識別模型構建和風險識別方法、裝置及設備 | |
US10592672B2 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
CN109479061A (zh) | 遵从性违反检测 | |
CN107644286A (zh) | 工作流处理方法及装置 | |
CN106796526A (zh) | Json样式表语言变换 | |
CN107066537A (zh) | 热点新闻生成方法、设备、电子设备 | |
CN110532176A (zh) | 一种智能合约的形式化验证方法、电子装置及存储介质 | |
CN110534168A (zh) | 药嘱风险提示方法、装置、电子设备及存储介质 | |
US20210065245A1 (en) | Using machine learning to discern relationships between individuals from digital transactional data | |
US11010287B1 (en) | Field property extraction and field value validation using a validated dataset | |
CN109062762A (zh) | 格式化日志推送方法及装置 | |
CN109408502A (zh) | 一种数据标准处理方法、装置及其存储介质 | |
AU2017261143A1 (en) | Computer systems and methods for implementing in-memory data structures | |
CN107992523A (zh) | 移动应用的功能选项查找方法及终端设备 | |
CN106095948A (zh) | 表格的查询方法、装置和设备 | |
CN113434542B (zh) | 数据关系识别方法、装置、电子设备及存储介质 | |
JP6058554B2 (ja) | 概念及びリンク発見システム | |
US20210271637A1 (en) | Creating descriptors for business analytics applications | |
US11010399B1 (en) | Automated data scraping | |
CN110119488A (zh) | 页面显示的控制方法及装置 | |
CN109343844A (zh) | 一种基于Flex票据数据对比纠正的方法 | |
CN113900956A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 311501, Unit 1, Building 5, Courtyard 1, Futong East Street, Chaoyang District, Beijing Applicant after: Beijing Zhichuangyu Information Technology Co., Ltd. Address before: Room 311501, Unit 1, Building 5, Courtyard 1, Futong East Street, Chaoyang District, Beijing Applicant before: Beijing Knows Chuangyu Information Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190312 |