CN111524007A - 一种智能合约的嵌入式入侵检测方法及装置 - Google Patents

一种智能合约的嵌入式入侵检测方法及装置 Download PDF

Info

Publication number
CN111524007A
CN111524007A CN202010301641.6A CN202010301641A CN111524007A CN 111524007 A CN111524007 A CN 111524007A CN 202010301641 A CN202010301641 A CN 202010301641A CN 111524007 A CN111524007 A CN 111524007A
Authority
CN
China
Prior art keywords
intelligent contract
contract
protected
transaction
smart 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
Application number
CN202010301641.6A
Other languages
English (en)
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.)
Guangzhou Lakala Information Technology Co ltd
South China Normal University
Original Assignee
Guangzhou Lakala Information Technology Co ltd
South China Normal University
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 Guangzhou Lakala Information Technology Co ltd, South China Normal University filed Critical Guangzhou Lakala Information Technology Co ltd
Priority to CN202010301641.6A priority Critical patent/CN111524007A/zh
Publication of CN111524007A publication Critical patent/CN111524007A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开实施例公开了一种智能合约的嵌入式入侵检测方法及装置。其中,该方法包括:在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。

Description

一种智能合约的嵌入式入侵检测方法及装置
技术领域
本公开涉及区块链技术领域,具体涉及一种智能合约的嵌入式入侵检测方法、装置、电子设备及存储介质。
背景技术
区块链技术是一种去中心化、不需要第三方进行认证、点对点交互的分布式数据存储技术,区块链通过维护链式结构的数据块,可以维护持续增长、不可篡改的数据记录。目前区块链的应用主要集中在数字货币、网络交易等方面,但这仅仅是因为这些领域更依赖区块链的某些特性,事实上区块链实际应用方向远远不止上述领域。
第一代区块链在本质上是一个去中心化的数据记录(比如比特币的账本)工具,通过共识算法确保区块链网络的参与者能够维持记录的一致性。第二代区块链技术(比如以太坊)最明显的改进就是加入了智能合约的概念,使其不仅仅是简单的去中心化的记录,而是一个完整的开发平台,开发者可以在其提供的图灵完备的脚本语言基础上建立符合业务逻辑的应用程序。智能合约是运行在区块链上的程序代码,一旦部署上区块链上就无法篡改,其执行过程完全自动化并不需要人为介入,并且执行结果写入到区块链中,由区块链的特性来保证整个执行过程是不可篡改不可逆的。智能合约可以在完全避免第三方的介入下,完成透明、无冲突的交互过程的执行。之后号称第三代区块链技术的EOS(EnterpriseOperation System)是为商用分布式应用所设计的一种新型区块链技术,其通过并行链等技术解决了区块链交易吞吐量和延迟的难题。
其中,智能合约的模型一般包括以下三个部件:第一,体系结构;智能合约应用多数是用Solidity编写(Solidity是一种强类型的类java script编程语言,具有面向对象的特性),为了将智能合约部署到以太坊当中,Solidity编写的智能合约还必须编译为EVM(Ethereum Virtual Machine,以太坊虚拟机)字节码,编译后用户才能通过发送交易的方式部署智能合约到以太坊中。第二,调用模型;智能合约的函数调用方式,主要分为无代价调用和有代价调用两种,前者无需消耗系统费用(以太坊中以gas表示)调用pure/view的函数,且过程和结果不会写入到区块当中;后者调用非pure/view的公有函数,通常会影响到智能合约的状态变量或者账户余额(balance),其执行结果会记录到区块当中,因此需要消耗系统费用(gas)。第三,数据管理模型;EVM是基于256位字长栈虚拟机,其利用的存储结构包括最大深度为1024的256位操作栈、字寻址的字节数组(作为内存)、键值对的存储结构(作为持久化数据的存储模型)以及只读存储器(用于存储与外部调用相关的参数和返回值)这4类。
现在,随着信息网络在现代社会中的日益广泛应用,网络安全问题已备受关注,入侵检测系统作为一种检测类安全技术,能够发现外部攻击和合法用户滥用特权的行为,通过根据用户的历史行为,基于用户的当前行为,完成对入侵的检测并留下证据,为数据恢复和事故处理提供证据,因此,对入侵检测方法的研究具有重要的现实意义。
然而,现有技术中一般是采用基于主机/网络的入侵检测系统,这种方法是针对传统网络服务设计,不适用于区块链智能合约;其主要包括在基于主机/网络的入侵检测系统中,需要把检测系统部署在某台主机或者网络设备上,检测主机日志或原始网络包中出现的异常行为;由于以太坊本质上是一个去中心化的应用平台,因此智能合约程序是由遍布全球的互不信任的节点来执行的,而且智能合约的执行需要被矿工节点验证并形成共识后,才能打包到区块链中,直接使用基于主机/网络的入侵检测系统将会导致各区块链矿工节点无法对入侵检测系统的识别结果形成共识,甚至识别结果可以被矿工跳过,从而无法实现真正效果,因此传统的基于主机和基于网络的IDS技术均不适用;另外,执行智能合约的虚拟机在设计之初的考虑并不是为了执行大规模、复杂程序所考虑的,在内存、存储、功能等设计与传功的虚拟机(如Java虚拟机JVM)无法媲美。因此在功能有限的虚拟机和编程语言中实现传统的基于主机/网络的入侵检测系统是及其困难、甚至无法实现的。因此亟需一种针对智能合约的入侵检测系统。
发明内容
针对现有技术中的上述技术问题,本公开实施例提出了一种智能合约的嵌入式入侵检测方法、装置、电子设备及计算机可读存储介质,以解决现有技术中不能对智能合约进行入侵检测的问题。
本公开实施例的第一方面提供了一种智能合约的嵌入式入侵检测方法,包括:
在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
在一些实施例中,当交易完全在所述保护的智能合约中执行时或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,发出通知。
在一些实施例中,所述交易完全在所述保护的智能合约中执行,具体包括:交易仅调用一个被保护的智能合约;或者,交易在调用首个被保护的智能合约后,再调用一个或多个被保护的智能合约。
在一些实施例中,当所述交易完全在保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,则对被调用的所有保护的智能合约进行回滚。
在一些实施例中,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个被保护的智能合约后,调用一个或多个未被保护的智能合约;所述未被保护的智能合约存在调用被保护的智能合约的可能。
在一些实施例中,若所述嵌入式IDS判断出现入侵行为时,若是首个被保护的智能合约触发警报,则对被调用的所有智能合约进行回滚;若是被未被保护的智能合约调用过的被保护的智能合约触发警报,则仅对被未被保护的智能合约调用过的被保护的智能合约的内容进行回滚。
在一些实施例中,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个未被保护的智能合约后,调用一个或多个被保护的智能合约。
在一些实施例中,若所述嵌入式IDS判断出现入侵行为,则对被调用的保护的智能合约进行回滚。
本公开实施例的第二方面提供了一种智能合约嵌入式入侵检测装置,包括:
控制流图生成模块,用于在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
控制流图处理模块,用于对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
部署模块,用于将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
回滚模块,用于在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
在一些实施例中,所述回滚模块包括:当交易完全在所述保护的智能合约中执行时或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,发出通知。
本公开实施例的第三方面提供了一种电子设备,包括:
存储器以及一个或多个处理器;
其中,所述存储器与所述一个或多个处理器通信连接,所述存储器中存储有可被所述一个或多个处理器执行的指令,所述指令被所述一个或多个处理器执行时,所述电子设备用于实现如前述各实施例所述的方法。
本公开实施例的第四方面提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可用来实现如前述各实施例所述的方法。
本公开实施例的第五方面提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,可用来实现如前述各实施例所述的方法。
本公开实施例所提出的智能合约的嵌入式入侵检测方法,不仅在普通智能合约中增加入侵检测的功能,无需构造复杂的检测系统,而且由原始的以太坊虚拟机就可以进行回滚,实现在智能合约执行过程中自检测、自防护,大幅提升系统的安全性和可靠性。
附图说明
通过参考附图会更加清楚的理解本公开的特征和优点,附图是示意性的而不应理解为对本公开进行任何限制,在附图中:
图1是根据本公开的一些实施例所示的一种智能合约的嵌入式入侵检测方法流程示意图;
图2是根据本公开的一些实施例所示的一种控制流图生成过程示意图;
图3是根据本公开的一些实施例所示的一种控制流图示意图;
图4是根据本公开的一些实施例所示的一种控制流图示意图;
图5是根据本公开的一些实施例所示的交易执行示意图;
图6是根据本公开的一些实施例所示的一种智能合约的嵌入式入侵检测装置的模块结构示意图;
图7是根据本公开的一些实施例所示的一种智能合约嵌入式入侵检测系统的整体防护框架示意图;
图8是根据本公开的一些实施例所示的一种电子设备的结构示意图。
具体实施方式
在下面的详细描述中,通过示例阐述了本公开的许多具体细节,以便提供对相关披露的透彻理解。然而,对于本领域的普通技术人员来讲,本公开显而易见的可以在没有这些细节的情况下实施。应当理解的是,本公开中使用“系统”、“装置”、“单元”和/或“模块”术语,是用于区分在顺序排列中不同级别的不同部件、元件、部分或组件的一种方法。然而,如果其他表达式可以实现相同的目的,这些术语可以被其他表达式替换。
应当理解的是,当设备、单元或模块被称为“在……上”、“连接到”或“耦合到”另一设备、单元或模块时,其可以直接在另一设备、单元或模块上,连接或耦合到或与其他设备、单元或模块通信,或者可以存在中间设备、单元或模块,除非上下文明确提示例外情形。例如,本公开所使用的术语“和/或”包括一个或多个相关所列条目的任何一个和所有组合。
本公开所用术语仅为了描述特定实施例,而非限制本公开范围。如本公开说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的特征、整体、步骤、操作、元素和/或组件,而该类表述并不构成一个排它性的罗列,其他特征、整体、步骤、操作、元素和/或组件也可以包含在内。
参看下面的说明以及附图,本公开的这些或其他特征和特点、操作方法、结构的相关元素的功能、部分的结合以及制造的经济性可以被更好地理解,其中说明和附图形成了说明书的一部分。然而,可以清楚地理解,附图仅用作说明和描述的目的,并不意在限定本公开的保护范围。可以理解的是,附图并非按比例绘制。
本公开中使用了多种结构图用来说明根据本公开的实施例的各种变形。应当理解的是,前面或下面的结构并不是用来限定本公开。本公开的保护范围以权利要求为准。
现有技术中,为了实现入侵检测,一般采用基于主机/网络的的入侵检测系统,但是这种方法只针对传统网络服务设计,不适用于区块链智能合约。
这是因为:
1)由于以太坊本质上是一个去中心化的应用平台,因此智能合约程序是由遍布全球的互不信任的节点来执行的;因此,传统的基于主机和基于网络的IDS技术均不适用;为了解决此问题,必须将IDS嵌入到合约代码中,以使合约保护过程成为节点共识的一部分,并且任何节点都不能绕过这个过程。
2)以太坊智能合约运行在一个被称为以太坊虚拟机(EVM)的高度受限环境中,该环境缺乏许多功能,导致传统的IDS实现方法在EVM中无法实现,这些功能包括硬件寄存器,调用堆栈遍历和事件钩子等;此外,EVM对每个合同都规定了24576字节的严格大小限制;这需要非常仔细的设计,才能以最小化嵌入式IDS实现的大小。
3)以太坊的运行模型与传统系统的运行模型存在着本质上的区别。常规IDS优化的目标是减少执行时间,然而对于以太坊智能合约来说,执行时间是无关紧要的,重要的是程序执行所需要的gas开销,因此,这需要以gas为导向的开销优化,这点与常规IDS所用的开销概念有所不同。
有鉴于此,本公开实施例提供了一种新型的针对智能合约的嵌入式入侵检测方法,通过在智能合约中嵌入入侵检测功能,实现在智能合约执行过程中自检测、自防护。在本方法中,基于具体的智能合约分析出智能合约的实时执行特征,包括控制流信息、数据流等;其次,智能合约中包含多个函数,不同的调用序列也会影响智能合约的执行结果,因此还要收集智能合约的安全的函数调用信息,将收集到的安全路径集合与安全的函数调用序列进行适当编码,例如:编码成一个整型,克服了存储费用因量大而高昂的问题,并且本方法将安全路径集植入到原始代码中,因此无需构造复杂的检测系统,由原始的以太坊虚拟机就可以进行回滚从而进行防护。
在本公开的一个实施例中,如图1所示,一种智能合约的嵌入式入侵检测方法包括:
S101,在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
S102,对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
S103,将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
S104,在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
下面进一步结合各附图对上述方法各步骤的具体实现进行示例和说明。其中,如图2所示,在本公开的一个实施例中,所述控制流图由对所述智能合约的字节码解析得到。具体地,所述根据当前智能合约生成对应的控制流图包括:
S101-1,对所述智能合约进行编译,获取EVM上对应的字节码。
其中,智能合约应用多数是用Solidity编写,相应地,对智能合约编译也借助Solidity编译工具,比如solc来完成。优选地,智能合约对应的字节码可以通过sloc命令行--bin-runtime filePath来获取。
S101-2,根据所述字节码对所述智能合约进行块划分。
其中,通过对字节码中的指令语句进行分析,来将所述智能合约划分成多个基本块。具体地,逐条读取字节码中的指令语句,在发现结束类指令时,比如STOP、RETURN、REVERT等指令,记录本块结束并对本块编号。优选地,在智能合约的字节码中经常会出现跳转指令,如果跳转指令不是在本块内的语句指令间跳转,则将跳转指令所指向的新指令语句处作为一个新块来处理。
S101-3,根据每个块的内容以及块与块的关系构建生成所述控制流图。
其中,每个块的内容指基本块内的各个指令语句,即基本块为起始指令到结束指令之间的语句段,每个块构成所述控制流图中的一个节点。块与块的关系则主要依据块衔接处的指令语句类型来确定,每个块间关系构成所述控制流图中的一条有向边。典型地,对于自然结束的块,在本块与顺序在后的块之间增加一条有向边;对于存在块间跳转指令的块,在本块与跳转指令所指向的块之间增加一条有向边。
可选地,还可以如下所示的算法逻辑(伪代码形式)对智能合约进行控制流分析;其中,算法逻辑如下所示:
contract test{
function A()public{
If{
···//数据处理
}
else{
···//数据处理
Call:B//数据处理
}
}
function B()public{
···//数据处理
}}
根据上述方式构建生成的一个控制流图的示例如图3所示。当然,本领域相关技术人员可以理解,控制流图并不仅限于通过分析字节码得到,现有技术中同样存在其他生成控制流图的方式,比如对源代码进行分析同样可以得到智能合约的控制流图,因而此处根据字节码生成控制流图仅仅是本公开的一个优选的示例,不应视作对本公开具体实时方式的限制。
进一步地,对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合,并对安全路径特征集合进行编码,在不影响代码原有逻辑完整性的前提下加入到智能合约的原始代码当中。如图4所示,在本公开的一个实施例中,在图3中增加编码后的安全路径特征集合,并在判断路径不存在安全路径特征集合后进行回滚,以得到图4中所示的控制流图。
进一步地,在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
一般地,交易触发嵌入式IDS判断出现入侵行为并进行报警和回滚的情况有以下两种,即:当交易完全在所述保护的智能合约中执行时,或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,则会发出通知,并进行报警和回滚。
在本公开的一个实施例中,以图5为例,分展示的三种情景进行说明,其中,智能合约A和智能合约B均为被保护的合约,智能合约C为未被保护合约,在交易过程中可能出现的3种情况详情参见表1:
表1
Figure BDA0002454211060000101
在本公开的一些实施例中,所述交易完全在所述保护的智能合约中执行包括:交易仅调用一个被保护的智能合约;或者,交易在调用首个被保护的智能合约后,再调用一个或多个被保护的智能合约。
具体地,当所述交易完全在保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,则对被调用的所有保护的智能合约进行回滚。
更具体地,交易第一个执行的public/external函数就在被保护的智能合约中,并且不会再对边界外的智能合约发起调用。在这种情景下,ContractGuard会记录执行过的所有函数的context-tagged(上下文标记)路经,并确保这些路经的安全性。当发生跨合约的调用时,可以在calldata参数的消息中植入当前calling-context的信息,以确保可以建立完整的calling-context计算。一旦到达context-tagged路经的末尾,ContractGuard会检查路经的安全性。倘若路经异常,则ContractGuard会把此次交易标记为异常交易;此标记会随执行过程通过在returndata进行植入的方式返回到此交易各层合约的入口函数。直到整个交易的入口,ContractGuard通过检查此标记决定进行告警以及整个交易的回滚。
此时,交易初始被调用的智能合约A或者通过A调用的智能合约B中的一个触发了警报,即所述嵌入式IDS判断出现入侵行为,则回滚的内容为智能合约A和B;详情参见表2。
表2:
Figure BDA0002454211060000111
在本公开的一些实施例中,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个被保护的智能合约后,调用一个或多个未被保护的智能合约;所述未被保护的智能合约存在调用被保护的智能合约的可能。
在本公开的一些实施例中,若所述嵌入式IDS判断出现入侵行为时,若是首个被保护的智能合约触发警报,则对被调用的所有智能合约进行回滚;若是被未被保护的智能合约调用过的被保护的智能合约触发警报,则仅对被未被保护的智能合约调用过的被保护的智能合约的内容进行回滚。
在本公开的一些实施例中,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个未被保护的智能合约后,调用一个或多个被保护的智能合约。
在本公开的一些实施例中,若所述嵌入式IDS判断出现入侵行为,则对被调用的保护的智能合约进行回滚。
具体地,如表1中所示的情景二,交易的首个调用的智能合约是被保护的合约,但是随着执行,此次交易会调用到未被保护的智能合约当中,并且这些未被保护的智能合约有机会调用被保护的智能合约。例如,交易的初始智能合约A调用智能合约C后,智能合约C再调用智能合约B。这种情景下,ContractGuard会记录智能合约A和智能合约B的context-tagged(上下文)路经,但是智能合约A和智能合约B是独立进行异常标记以及回滚。而回滚的结果取决于在何处触发的警报:情况2(a)若在智能合约B发生告警,那仅仅只有智能合约B发生回滚;情况2(b)若在智能合约A发生告警,则在智能合约A、智能合约B、智能合约C三个合约都发生回滚。众所周知,最好是有一个方案可以保证交易的原子性。但是要实现这种回滚的原子性,合约与合约之间直接必须使用额外的消息调用以及storage存储实现异常标记的同步,因为未被保护的智能合约是不受ContractGuard所控制的。这类实现方式导致的执行开销太高。
相同的原因,当被保护的智能合约X调用未被保护的智能合约Z,ContractGuard并不会把当前的calling-context传给智能合约Z调用的智能合约Y。有一种例外的情况,就是X=Y。这种情况下,ContractGuard通过写合约storage的方式来传递calling-context;之所以采用这种实现方式,主要是为了防护可重入的攻击。当中最浪费的是,这种实现方式会对每个外部调用造成5000gas的额外开销。
最后的一个情景是交易的首个合约是未保护的合约,但是通过调用的方式进入到被保护的智能合约当中。这类情景的处理方式本质上和上述的两个情景是类似的,此处不再赘述。
在本公开的实施例中,上下文标记又称为插桩,是指在被测程序代码中插入一些代码以便测试人员获取测试信息。在对智能合约进行入侵检测的测试过程中,往往需要知道执行过程中的一些关键信息,比如程序中可执行语句被执行(即被覆盖)的情况、程序执行的路径、变量的定义、变量的引用等。在被测程序中插入标记完成相应工作的代码,即为代码插桩技术,该方式可以实现在被测程序执行的过程中自动记录这类关键信息,从而帮助对执行过程进行监测、发现问题、及时止损或回溯解决问题等。
通常情况下,插桩(上下文标记)一般需要在三个地方进行,第一个是在程序入口插桩,定义一个变量F作为路径标志,初始化为0;第二个是叶子节点,即程序执行到这个节点就结束了,此时要输出路径标志F,以确定程序执行了哪条路径;第三个是控制流程图之中权重非零的边e:v→w,需要在块v添加对F的值进行更改的语句。
根据本公开实施例所提出的智能合约的嵌入式入侵检测方法,不仅在普通智能合约中增加入侵检测的功能,无需构造复杂的检测系统,而且由原始的以太坊虚拟机就可以进行回滚,实现在智能合约执行过程中自检测、自防护,大幅提升系统的安全性和可靠性。
图6是根据本公开的一些实施例所示的一种自动执行路径的监控装置示意图。如图6所示,自动执行路径的监控装置600包括控制流图生成模块601、控制流图处理模块602、部署模块603和回滚模块604;其中,
控制流图生成模块601,用于在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
控制流图处理模块602,用于对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
部署模块603,用于将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
回滚模块604,用于在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
在一些实施例中,所述回滚模块604包括:当交易完全在所述保护的智能合约中执行时或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,发出通知。
在本公开的一个实施例中,如图7所示,还同时提供一种智能合约嵌入式入侵检测系统(IDS),通过在测试环境中使用测试用例收集和保存正常主体行为活动的路径特征集合,在智能合约部署后通过EVM在运行过程中利用嵌入式IDS识别出异常的路径特征,并且通过回滚的方式阻止程序继续执行,从而主动避免异常攻击行为给用户或全链造成损失。
具体地,所述智能合约嵌入式入侵检测系统主要划分为3个层次,在智能合约的产生和执行过程中通过3个阶段的操作来构成整体的防护框架。如图7所示,第一阶段为训练阶段,在测试环境(私有链、Ganache、测试链等)中使用测试用例对需要进行保护的智能合约进行测试;测试完成之后通过区块链的管理API收集所有测试用例的路径特征,形成安全路径特征集合。在该训练阶段,为保证最终的安全路径特征集合中收集的路径特征是安全可靠不会产生不良影响的,需要对测试用例进行设计,保证测试用例的正确性,以避免在安全路径特征集合中加入错误的数据,影响嵌入式IDS的安全性。当然,在某些实施例中,如果确实发现安全路径特征集合中已错误地收集了不安全的数据,也可以通过人工标注的方式予以排除。在本公开另外一些实施例中,除了收集正向的安全路径特征构成安全路径特征集合之外,还可以收集负向的不安全的路径特征,以便在必要时进行双向检查。
进一步地,第二阶段为保护阶段,对智能合约进行插桩,比如采用上述实施例中的方案,在不影响代码原有逻辑完整性的前提下把带有监控、获取以及识别智能合约执行路径的代码加入到智能合约的原始代码当中,再与安全路径特征集合组成带有嵌入式IDS功能的智能合约,并部署到区块链中。其中,带有嵌入式IDS功能的智能合约可以实时监控代码的运行过程并提取路径与训练所得到的安全路径特征集合进行匹配,若匹配成功则允许该智能合约继续执行,完成EVM的状态转换;匹配失败则阻止合约执行、进行回滚并记录相关信息,进入下一阶段提醒/通知进行审核。
第三阶段为审计阶段,若在保护阶段被嵌入式IDS判断出现入侵行为,可以通过审计路径特征,重现该交易的执行场景,分析智能合约的执行过程是否与智能合约预期所设计的逻辑相符。若相符,则把该路径特征加入到保存在智能合约的安全路径特征集合当中;否则,将该次执行过程判断为攻击行为并进行统计后根据主网提供的信息追踪入侵者背景。
通过上述方式实现的嵌入式IDS方案,可以在程序执行过程中自动检测程序执行的合法性并做出相应的抵御行为,提高智能合约的安全性。具体地,本公开实施例的智能合约嵌入式入侵检测系统可以防护很多对智能合约的非法攻击或入侵,例如:Reentrancy、Dangerous Delegatecall、Over/Underflow、Defalult Visiablilities、Unchecked send、Tx.Origin Authenticaion、Denial Of Service、Logic error,这些攻击若都会造成智能合约在执行过程中开发者所意想不到的路径。甚至一部分未知的入侵方式,只要会造成特殊的路径特征,则可以使用嵌入式IDS的方式进行防护。比如,Reentrancy除了对以太坊用户造成了巨大的经济损失之外还对以太坊的发展造成了严重的负面影响。对TheDAO合约的Reentrancy攻击可以成功被嵌入式IDS方法所防护。在TheDAO合约被部署之前进行充分的测试,但是并没有测试到合约某些函数的在Reentrancy攻击下的路径,于是这条特殊的路径的特征并没有收集到安全的路径特征集合当中。当TheDAO合约被部署后,攻击者对TheDAO合约进行Reentrancy攻击时,TheDAO合约必然会识别出该路径特征与所保存的路径特征集合不匹配并通知开发人员进行人工审核,开发人员根据不匹配的路径特征重现TheDAO合约的执行过程,判定出是恶意攻击,从而避免因为攻击而造成大量的经济损失。Parity钱包事件中的攻击也可以使用嵌入式IDS的方法进行防护。Parity钱包在开发阶段并没有考虑到某些初始化函数可以被多次调用,于是被恶意用户使用DangerousDelegatecall和Defalut Visiablities的方式进行了攻击,造成了大量的损失。若使用嵌入式IDS,则在恶意用户调用这些函数的时候,路径特征与安全路径特征集合不匹配会触发智能合约暂停执行并且通知开发人员进行审核,开发人员就有机会可以拦截此类攻击,避免造成经济损失。本公开的一个实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被执行后执行本公开前述实施例中的方法。
参考附图8,为本公开一个实施例提供的电子设备示意图。如图8所示,该电子设备800包括:
存储器830以及一个或多个处理器810;
其中,所述存储器830与所述一个或多个处理器810通信连接,所述存储器830中存储有可被所述一个或多个处理器执行的指令832,所述指令832被所述一个或多个处理器810执行,以使所述一个或多个处理器810执行本公开前述实施例中的方法。
具体地,处理器810和存储器830可以通过总线或者其他方式连接,图8中以通过总线840连接为例。处理器810可以为中央处理器(Central Processing Unit,CPU)。处理器810还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器830作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施例中的级联渐进网络等。处理器810通过运行存储在存储器830中的非暂态软件程序、指令以及功能模块832,从而执行处理器的各种功能应用以及数据处理。
存储器830可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器810所创建的数据等。此外,存储器830可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器830可选包括相对于处理器810远程设置的存储器,这些远程存储器可以通过网络(比如通过通信接口820)连接至处理器810。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
前述的计算机可读取存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方式或技术来实现的物理易失性和非易失性、可移动和不可移动介质。计算机可读取存储介质具体包括,但不限于,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、可擦除可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(DVD)、HD-DVD、蓝光(Blue-Ray)或其他光存储设备、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其他介质。
尽管此处所述的主题是在结合操作系统和应用程序在计算机系统上的执行而执行的一般上下文中提供的,但本领域技术人员可以认识到,还可结合其他类型的程序模块来执行其他实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。本领域技术人员可以理解,此处所述的本主题可以使用其他计算机系统配置来实践,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等,也可使用在其中任务由通过通信网络连接的远程处理设备执行的分布式计算环境中。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备的两者中。
本领域普通技术人员可以意识到,结合本文中所本公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对原有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
综上所述,本公开提出了一种智能合约的嵌入式入侵检测方法、装置、电子设备及其计算机可读存储介质,不仅在普通智能合约中增加入侵检测的功能,无需构造复杂的检测系统,而且由原始的以太坊虚拟机就可以进行回滚,实现在智能合约执行过程中自检测、自防护,大幅提升系统的安全性和可靠性。
应当理解的是,本公开的上述具体实施方式仅仅用于示例性说明或解释本公开的原理,而不构成对本公开的限制。因此,在不偏离本公开的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。此外,本公开所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (10)

1.一种智能合约的嵌入式入侵检测方法,其特征在于,包括:
在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
2.根据权利要求1所述的方法,其特征在于,当交易完全在所述保护的智能合约中执行时或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,发出通知。
3.根据权利要求2所述的方法,其特征在于,所述交易完全在所述保护的智能合约中执行,具体包括:交易仅调用一个被保护的智能合约;或者,交易在调用首个被保护的智能合约后,再调用一个或多个被保护的智能合约。
4.根据权利要求3所述的方法,其特征在于,当所述交易完全在保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,则对被调用的所有保护的智能合约进行回滚。
5.根据权利要求2所述的方法,其特征在于,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个被保护的智能合约后,调用一个或多个未被保护的智能合约;所述未被保护的智能合约存在调用被保护的智能合约的可能。
6.根据权利要求5所述的方法,其特征在于,若所述嵌入式IDS判断出现入侵行为时,若是首个被保护的智能合约触发警报,则对被调用的所有智能合约进行回滚;若是被未被保护的智能合约调用过的被保护的智能合约触发警报,则仅对被未被保护的智能合约调用过的被保护的智能合约的内容进行回滚。
7.根据权利要求2所述的方法,其特征在于,当所述交易不完全在所述保护的智能合约中执行,具体包括:交易在调用首个未被保护的智能合约后,调用一个或多个被保护的智能合约。
8.根据权利要求7所述的方法,其特征在于,若所述嵌入式IDS判断出现入侵行为,则对被调用的保护的智能合约进行回滚。
9.一种智能合约的嵌入式入侵检测装置,其特征在于,包括
控制流图生成模块,用于在测试环境中使用测试用例对需要进行保护的智能合约进行测试和分析,并生成所述智能合约对应的控制流图;
控制流图处理模块,用于对所述控制流图进行处理,标记所有测试用例的路径特征,形成安全路径特征集合;
部署模块,用于将编码后的所述安全路径特征集合添加至所述智能合约中组成带有嵌入式IDS功能的智能合约,并部署到区块链中;
回滚模块,用于在接收到所述嵌入式IDS判断出现入侵行为的通知时,标记异常,进行报警和回滚。
10.根据权利要求9所述的装置,其特征在于,所述回滚模块包括:当交易完全在所述保护的智能合约中执行时或者交易不完全在所述保护的智能合约中执行时,若所述嵌入式IDS判断出现入侵行为,发出通知。
CN202010301641.6A 2020-04-16 2020-04-16 一种智能合约的嵌入式入侵检测方法及装置 Pending CN111524007A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010301641.6A CN111524007A (zh) 2020-04-16 2020-04-16 一种智能合约的嵌入式入侵检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010301641.6A CN111524007A (zh) 2020-04-16 2020-04-16 一种智能合约的嵌入式入侵检测方法及装置

Publications (1)

Publication Number Publication Date
CN111524007A true CN111524007A (zh) 2020-08-11

Family

ID=71904237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010301641.6A Pending CN111524007A (zh) 2020-04-16 2020-04-16 一种智能合约的嵌入式入侵检测方法及装置

Country Status (1)

Country Link
CN (1) CN111524007A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112581140A (zh) * 2020-12-24 2021-03-30 西安深信科创信息技术有限公司 一种智能合约验证方法、计算机存储介质
CN113051624A (zh) * 2021-03-19 2021-06-29 南京航空航天大学 基于类型检测的智能合约信息流完整性验证方法及系统
CN113067774A (zh) * 2021-06-02 2021-07-02 支付宝(杭州)信息技术有限公司 区块链网络间的交易转发方法
CN113435893A (zh) * 2021-07-01 2021-09-24 支付宝(杭州)信息技术有限公司 智能合约的安全检测方法及装置
CN117834258A (zh) * 2023-12-29 2024-04-05 蚂蚁智安安全技术(上海)有限公司 一种针对区块链合约的重入攻击检测方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108306893A (zh) * 2018-03-05 2018-07-20 北京大学深圳研究生院 一种自组网络的分布式入侵检测方法和系统
CN109032706A (zh) * 2018-07-16 2018-12-18 百度在线网络技术(北京)有限公司 智能合约执行方法、装置、设备和存储介质
US20190130368A1 (en) * 2017-10-30 2019-05-02 NEC Laboratories Europe GmbH Method and system for securing smart contracts in blockchains
CN109710384A (zh) * 2018-12-29 2019-05-03 杭州趣链科技有限公司 一种安全的Java智能合约解释执行引擎及方法
CN109829013A (zh) * 2018-12-27 2019-05-31 上海点融信息科技有限责任公司 用于在区块链网络中运行智能合约的方法、存储介质、计算设备
CN110633200A (zh) * 2018-06-25 2019-12-31 富士通株式会社 用于测试智能合约的方法和设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190130368A1 (en) * 2017-10-30 2019-05-02 NEC Laboratories Europe GmbH Method and system for securing smart contracts in blockchains
CN108306893A (zh) * 2018-03-05 2018-07-20 北京大学深圳研究生院 一种自组网络的分布式入侵检测方法和系统
CN110633200A (zh) * 2018-06-25 2019-12-31 富士通株式会社 用于测试智能合约的方法和设备
CN109032706A (zh) * 2018-07-16 2018-12-18 百度在线网络技术(北京)有限公司 智能合约执行方法、装置、设备和存储介质
CN109829013A (zh) * 2018-12-27 2019-05-31 上海点融信息科技有限责任公司 用于在区块链网络中运行智能合约的方法、存储介质、计算设备
CN109710384A (zh) * 2018-12-29 2019-05-03 杭州趣链科技有限公司 一种安全的Java智能合约解释执行引擎及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵淦森等: "ContractGuard:面向以太坊区块链智能合约的入侵检测系统", 《网络与信息安全学报》, vol. 6, no. 2, 15 April 2020 (2020-04-15), pages 35 - 55 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112581140A (zh) * 2020-12-24 2021-03-30 西安深信科创信息技术有限公司 一种智能合约验证方法、计算机存储介质
CN112581140B (zh) * 2020-12-24 2022-07-29 西安深信科创信息技术有限公司 一种智能合约验证方法、计算机存储介质
CN113051624A (zh) * 2021-03-19 2021-06-29 南京航空航天大学 基于类型检测的智能合约信息流完整性验证方法及系统
CN113051624B (zh) * 2021-03-19 2024-05-07 南京航空航天大学 基于类型检测的智能合约信息流完整性验证方法及系统
CN113067774A (zh) * 2021-06-02 2021-07-02 支付宝(杭州)信息技术有限公司 区块链网络间的交易转发方法
CN113435893A (zh) * 2021-07-01 2021-09-24 支付宝(杭州)信息技术有限公司 智能合约的安全检测方法及装置
CN113435893B (zh) * 2021-07-01 2022-05-17 支付宝(杭州)信息技术有限公司 智能合约的安全检测方法及装置
CN117834258A (zh) * 2023-12-29 2024-04-05 蚂蚁智安安全技术(上海)有限公司 一种针对区块链合约的重入攻击检测方法和装置

Similar Documents

Publication Publication Date Title
CN111524007A (zh) 一种智能合约的嵌入式入侵检测方法及装置
CN111523784A (zh) 自动执行路径的监控方法及装置
CN105528295B (zh) 移动应用程序异常行为检测方法及装置
SA515360536B1 (ar) طريقة وجهاز وبرنامج حاسب لمراقبة نظام تحكم صناعي
CN102222194A (zh) Linux主机计算环境安全保护的模块及方法
CN112685682B (zh) 一种攻击事件的封禁对象识别方法、装置、设备及介质
CN105074717A (zh) 在网络环境中的恶意脚本语言代码的检测
Vaidya et al. Security issues in language-based software ecosystems
US11893110B2 (en) Attack estimation device, attack estimation method, and attack estimation program
CN113872965B (zh) 一种基于Snort引擎的SQL注入检测方法
US20240143739A1 (en) Intelligent obfuscation of mobile applications
CN111259382A (zh) 恶意行为识别方法、装置、系统和存储介质
CN114091031A (zh) 基于白规则的类加载防护方法及装置
US20230065259A1 (en) Method and apparatus for protecting smart contracts against attacks
CN107122664B (zh) 安全防护方法及装置
CN108256351B (zh) 文件处理方法和装置、存储介质及终端
CN111897789B (zh) 一种日志生成方法及装置
KR101002754B1 (ko) 파일에 대한 무결성 검증 방법 및 시스템
KR101723623B1 (ko) 악성 코드 탐지 시스템 및 방법
CN112579330B (zh) 操作系统异常数据的处理方法、装置及设备
CN106682512A (zh) 一种防止程序被修改的方法及其装置、系统
KR102541888B1 (ko) 이미지 기반 악성코드 탐지 방법 및 장치와 이를 이용하는 인공지능 기반 엔드포인트 위협탐지 및 대응 시스템
CN113779589B (zh) 一种安卓智能手机应用误配置检测方法
Fernando et al. Securing RFID systems from SQLIA
CN115618344A (zh) 一种基于RASP的拦截java内存马注入的防护技术

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