CN116324773A - 用于保护智能合约免受攻击的方法和装置 - Google Patents
用于保护智能合约免受攻击的方法和装置 Download PDFInfo
- Publication number
- CN116324773A CN116324773A CN202080098929.6A CN202080098929A CN116324773A CN 116324773 A CN116324773 A CN 116324773A CN 202080098929 A CN202080098929 A CN 202080098929A CN 116324773 A CN116324773 A CN 116324773A
- Authority
- CN
- China
- Prior art keywords
- runtime
- runtime information
- information
- smart contract
- engine unit
- 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
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- 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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开的方法和装置提供了一种框架,该框架包括定制的运行环境和分析引擎单元,其可以使用来自运行环境的运行时信息来识别对任何区块链上的智能合约的已知或未知攻击,并保护智能合约免受攻击。该通用型框架具有低运行时开销,降低了开发分析引擎单元的难度,并提高了对新攻击的响应速度。
Description
技术领域
本公开一般涉及区块链上的智能合约,更具体地,涉及一种用于保护区块链上的智能合约免受攻击的方法和装置。
背景技术
智能合约是在相互不信任的参与者之间自动和强制执行预定义逻辑的自主程序,它由区块链的共识机制自动执行,而不依赖于受信任的权威。以太坊等智能合约系统的兴起,导致基于区块链的去中心化应用激增,包括存储和管理各种数据的应用。智能合约的正确执行是其有效性的必要条件:否则对合约的攻击(例如,由于任何功能错误、漏洞等)会导致灾难性的损失,如严重的财务损失。因此,提高智能合约的稳健性是一个紧迫的实际问题。
传统上,有两类方法来提高智能合约的安全性:离线分析和在线保护。离线分析方法对智能合约进行分析,包括漏洞发现、正确性检查、逆向工程和在合约部署前检测恶意智能合约。在线保护的目的是在智能合约部署后保护智能合约免受攻击。在线保护方法是在智能合约中插入运行时检查,或在智能合约的运行环境(例如,诸如EVM(Ethereum VM)等VM(虚拟机))中插入运行时检查。
发明内容
在本公开的第一个示例性方面,提供了一种用于保护智能合约免受攻击的计算机实现方法。该方法包括:检测在运行环境中发起的与区块链上的智能合约相关的第一操作;在检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;基于所述运行时信息,生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
在本公开的第二个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:检测单元,被配置为检测在运行环境中发起的与区块链上的智能合约相关的第一操作;信息收集单元,被配置为在所述检测单元检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;分析引擎单元,被配置为基于所述运行时信息,生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及响应单元,被配置为基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
在本公开的第三个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:用于检测在运行环境中发起的与区块链上的智能合约相关的第一操作的模块;用于在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息的模块;用于基于所述运行时信息生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及用于基于所述分析数据发起与所述智能合约的安全性相关的第二操作的模块。
在上述方法和装置的一些实施例中,所述运行时信息可以从所述运行环境的内核层和应用层获取。
上述方法和装置的一些实施例可以包括:用于根据规则集合分析所述运行时信息以生成所述分析数据的过程、特征或手段。
上述方法和装置的一些实施例还可以包括:用于从所述运行时信息中提取所述第一操作的活动特征,并根据所述规则集合分析所述活动特征以生成所述分析数据的过程、特征或手段,所述规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
进一步地,上述方法和装置的一些实施例可以包括:用于确定生成所述分析数据所需的所述运行时信息的内容,并基于所述确定的内容获取所述运行时信息的过程、特征或手段。
此外,上述方法和装置的一些实施例可以包括:用于确定生成所述分析数据所需的所述运行时信息的分组模式和所述运行时信息的群组的过程、特征或手段。上述方法和装置的一些实施例可以进一步包括:用于基于所述确定的分组模式和群组获取所述运行时信息并对所述运行时信息进行分组,并基于分组后的运行时信息生成所述分析数据的过程、特征或手段。
在上述方法和装置的一些实施例中,所述第一操作可以包括所述智能合约的创建、部署、调用和执行中的至少一个。
在上述方法和装置的进一步实施例中,所述第二操作可以包括以下至少一个:许可所述第一操作的一个或多个活动;阻止所述第一操作的一个或多个活动;以及生成针对所述第一操作的一个或多个活动的报告。
在上述方法和装置的进一步实施例中,所述运行时信息可以包括与所述第一操作相关联的区块信息、交易信息和指令信息中的至少一个。
在本公开的第四个示例性方面,提供了一种用于保护智能合约免受攻击的计算机实施方法。该方法包括:检测在运行环境中发起的与区块链上的智能合约相关的第一操作;在检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;将所述运行时信息发送至在所述运行环境之外的分析引擎单元;从所述分析引擎单元接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
在本公开的第五个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:检测单元,被配置为检测在运行环境中发起的与区块链上的智能合约相关的第一操作;信息收集单元,被配置为在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息;发送器,被配置为将所述运行时信息发送到所述运行环境之外的分析引擎单元;接收器,从所述分析引擎单元接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及响应单元,被配置为基于所述分析数据发起与所述智能合约的安全性相关的第二操作。
在本公开的第六个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:用于检测在运行环境中发起的与区块链上的智能合约相关的第一操作的模块;用于在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息的模块;用于将所述运行时信息发送到所述运行环境之外的分析引擎单元的模块;用于从所述分析引擎接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及用于基于所述分析数据发起与所述智能合约的安全性相关的第二操作的模块。
在上述方法和装置的一些实施例中,所述运行时信息可以从所述运行环境的内核层和应用层获取。
上述方法和装置的一些实施例可以包括:用于获取指示需要发送到所述分析引擎单元的所述运行时信息的内容的第一消息,并基于所述第一消息获取运行时信息的过程、特征或手段。
进一步地,上述方法和装置的一些实施例可以包括:用于获取指示需要发送到所述分析引擎单元的所述运行时信息的分组模式和所述运行时信息的群组的第二消息的过程、特征或手段。上述方法和装置的进一步实施例还可以包括:用于基于所述第二消息获取所述运行时信息并对所述运行时信息进行分组,以及将分组后的运行时信息发送至所述分析引擎单元的过程、特征或手段。
在上述方法和装置的一些实施例中,所述第一操作可以包括智能合约的创建、部署、调用和执行中的至少一个。
在上述方法和装置的进一步实施例中,所述第二操作可以包括以下的至少一个:许可所述第一操作的一个或多个活动;阻止所述第一操作的一个或多个活动;以及生成针对所述第一操作的一个或多个活动的报告。
在上述方法和装置的进一步实施例中,所述运行时信息可以包括与所述第一操作相关联的区块信息、交易信息和指令信息中的至少一个。
在本公开的第七个示例性方面,提供了一种用于保护智能合约免受攻击的计算机实施方法。该方法包括:从运行环境中的解释器接收作为原始数据的运行时信息,所述作为原始数据的运行时信息与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联;根据规则集合分析所述运行时信息,以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及发送所述分析数据至所述解释器。
在本公开的第八个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:接收器,被配置为从运行环境中的解释器接收与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联的作为原始数据的运行时信息;分析器,被配置为根据规则集合分析运行时信息,以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及发送器,被配置为将所述分析数据发送至所述解释器。
在本公开的第九个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:用于从运行环境中的解释器接收与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联的作为原始数据的运行时信息的模块;用于根据规则集合分析所述运行时信息以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及用于将所述分析数据发送至所述解释器的模块。
在上述方法和装置的一些实施例中,所述运行时信息可以从所述运行环境的内核层和应用层获取。
上述方法和装置的一些实施例可以包括:用于从所述运行时信息中提取所述第一操作的活动特征,并根据规则集合分析所述活动特征以生成所述分析数据的过程、特征或手段,所述规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
进一步,上述方法和装置的一些实施例可以包括:用于向所述解释器发送指示需要从所述解释器接收的运行时信息的内容的第一消息的过程、特征或手段。
上述方法和装置的一些实施例还可以包括:用于向所述解释器发送指示需要从所述解释器接收的所述运行时信息的分组模式和所述运行时信息的群组的第二消息的过程、特征或手段。
在本公开的第十个示例性方面,提供了一种用于保护智能合约免受攻击的装置。该装置包括:至少一个处理器;包括指令的存储器,该指令在被执行时使得至少一个处理器实施根据本公开的第一个、第四个和第七个示例性方面的方法。
在本公开的第十一个示例性方面,提供了计算机可读存储介质。该计算机可读存储介质存储用于实现根据上述第一个、第四个和第七个示例性方面的方法的计算机可执行指令。
在本公开的第十二个示例性方面,提供了一种有形地存储在计算机可读存储介质中的计算机程序产品。该计算机程序产品存储计算机可执行指令,该指令在执行时使得至少一个处理器实施根据上述第一个、第四个和第七个示例性方面的方法。
附图说明
图1示出了根据本公开的一个实施例的用于保护智能合约免受攻击的一种架构的示意图。
图2示出了根据本公开的一个实施例的用于保护智能合约免受攻击的另一种架构的示意图。
图3示出了根据本公开的一个实施例的用于保护智能合约免受攻击的另一种架构的示意图。
图4示出了根据本公开的一个实施例的用于保护智能合约免受攻击的另一种架构的示意图。
图5示出了图1和图2中的信息收集单元的一个示例。
图6示出了用于保护智能合约免受攻击的方法的流程图。
图7示出了用于保护智能合约免受攻击的另一种方法的流程图。
图8示出了用于保护智能合约免受攻击的另一示例方法的流程图。
图9示出了用于保护智能合约免受攻击的装置的示意图。
具体实施方式
下面与附图相关的详细描述旨在作为各种配置的描述,并不代表可以实施本文所述概念的唯一配置。详细描述包括具体的细节,目的是提供对各种概念的彻底理解。然而,对于本领域的技术人员来说,显然这些概念可以在没有这些具体细节的情况下进行实践。在某些情况下,众所周知的结构和组件是以框图的形式显示的,以避免模糊这些概念。
传统的离线分析方法在合约部署前分析智能合约,以提高智能合约的安全性。然而,离线方法有两个缺点。首先,智能合约在离线工具处理后也可能包含漏洞。例如,由于路径爆炸,一些基于符号执行的工具可能无法发现所有的漏洞。再比如,由于黑盒模糊法的低代码覆盖率,一些模糊法工具不太可能发现所有的漏洞。缺乏运行时信息是离线工具遗漏漏洞的另一个原因(例如一些未知的或新的运行时攻击)。例如,一些分析工具无法发现某些类型的重入错误,因为它们缺乏包括函数的交互、智能合约的交互以及合约构造器的执行的运行时信息。其次,离线方法不能保护已经部署在区块链上的智能合约免受攻击,因为区块链技术保证智能合约在部署后是不可改变的。
传统的在线保护方法要么在智能合约中插入运行时检查,要么在智能合约的运行环境中插入运行时检查,以提高智能合约的安全性。前一种方法有两个缺点。首先,它可以加强未来的智能合约,却使已经部署的(遗留的)智能合约不受保护。其次,智能合约的复杂性受到区块链协议的限制(如以太坊设计的燃气机制),因此保护能力(即插入代码的复杂性)也受到限制。后一种方法可以保护已经部署的智能合约免受攻击,因为所有的历史智能合约都在运行环境中运行。然而,运行环境的定制是困难和耗时的,因为这种定制需要对区块链内部的深入了解和巨大的代码努力,而且仅针对一个区块链平台。
相比之下,通过使用运行时信息作为原始数据,本公开的方法和装置提供了一种框架,该框架包括定制的运行环境和分析引擎单元的,其可以使用来自运行环境的运行时信息来识别对任何区块链上的智能合约的已知或未知的攻击,并保护智能合约免受攻击。该通用框架具有较低的运行时开销,降低了开发分析引擎单元的难度,并提高了对新攻击的响应速度。
图1是根据本公开的一个实施例的用于保护智能合约免受攻击的架构100的示意图。架构100的全部和任何部分可由区块链的一个或多个节点实现,如节点101(例如,区块链的完整节点)或任何其他设备。节点101包括运行环境(RE,running environment)102,诸如为区块链构建的虚拟机(VM,virtual machine)(例如,EVM),以及在RE 102之外(例如在RE 102的内核层之外)的分析引擎单元130(也称为"保护器"),用于分析对区块链上智能合约的任何潜在攻击。虽然图1示出了单个分析引擎单元,但架构100可以包括多个分析引擎单元。在图1的示例中,RE 102和分析引擎单元130在同一节点或设备上运行。
由于分析引擎130与RE 102是分开的,分析引擎单元的开发者不需要了解区块链内部,因为他们不需要修改RE,因此基于解释器开发分析引擎单元要比从头开发容易得多。在一个示例中,分析引擎单元可以是RE同一进程中的一个动态链接库(DLL,dynamic linklibrary)。这种设计消除了RE与分析引擎单元之间的进程间通信(IPC,inter-processcommunication),从而提高了效率。它还能使分析引擎单元即插即用,并允许开发者选择任何可以编译成DLL的编程语言。
RE 102包括解释器110、存储器120、可选的管理器140和可选的诊断器150。解释器110被嵌入到RE 102的下层中,以直接从RE 102的较低层(例如,内核层)和高层(例如,应用层)获取运行时信息(RI,runtime information)作为原始数据。解释器110可以从RE 102的存储器120获取RI,该存储器包括用于存储来自内核层的RI的内核层存储器空间121和用于存储来自应用层的RI的应用层存储器空间122。内核层存储器空间121和应用层存储器空间122是相互隔离的。在其他示例中,解释器110可以通过另一个存储RI的存储器或数据库间接地从RE 102的较低层(例如,内核层)和高层(例如,应用层)获取RI作为原始数据。管理器140负责注册和取消注册分析引擎单元130。诊断器150对智能合约进行诊断或调试。
解释器110包括用于检测智能合约的操作的检测单元111、用于获取智能合约的信息的信息收集单元112和用于根据分析引擎单元130的结果采取行动(例如,安全行动)的响应单元113。
检测单元111检测与区块链上的一个或多个智能合约相关的第一操作,该第一操作是在RE 102中发起的。用户可以通过客户端访问节点101以发起智能合约的操作。例如,用户可以访问节点101,通过向一个空地址发送合约字节码来进行部署交易,从而发起智能合约的部署。在部署智能合约后,其他用户可以通过客户端访问节点101来调用智能合约。
当一个挖矿节点在其生成的区块中包括交易时,智能合约交易的执行发生。每个验证节点在收到区块后都会重新运行智能合约代码和交易。
挖矿节点可在以下情况下生成区块:
·接收来自网络的未经确认的交易;
·验证每个未确认的交易,包括运行相关联的代码;
·加入有效的交易以填充区块。
一旦区块生成,它就会被分发到网络上,任何接收该区块的节点都会继续遍历交易列表,确保每笔交易都是有效的。
智能合约代码可以在以下时间运行:
·多个时刻,重复以及冗余地运行,例如,通过设计;
·但“官方”执行点是交易在区块链中发生的时间点,例如,如果是区块#8000000中的交易#6,那么该交易的“执行点”也许只能被描述为紧随交易#5之后,在交易#7之前。
重复验证是可能的,因为智能合约交易是确定性的。它们可能取决于一些因素,诸如区块编号本身、合约的当前存储值,或另一个智能合约的计算结果,但这些信息是常量,可以通过从链的起点开始逐步执行交易来完美地重新计算。
还有其他的发起与智能合约相关的操作的示例,为简明起见,不再赘述。
在检测单元111检测到第一操作之后,信息收集单元112获取与第一操作相关联的作为原始数据的运行时信息。相比之下,传统的在线保护只能从运行环境的应用层获取运行时信息,比从内核层获取的运行时信息少很多。例如,为了执行诸如c=a+b的加法操作,来自应用层的运行时信息只能包括一个输入数据a、一个输入数据b和一个输出数据c,而作为原始数据的运行时信息可以包括如下基于堆栈的内存操作:
I2:LOAD b
I1:LOAD c
I3:ADD
I4:STORE a
在这个示例中,作为原始数据的运行时信息可以比来自应用层的运行时信息提供更多的信息(例如,数据如何被推送入和弹出堆栈等)。
分析引擎单元130可以从信息收集单元112获取运行时信息。分析引擎单元130基于该运行时信息生成与第一操作的活动导致的智能合约的安全性相关联的分析数据。例如,分析数据可以指示或被用于确定由于可能来自外部来源(例如,智能合约的外部调用)的攻击而导致的智能合约的任何潜在异常操作的严重等级。异常操作的一个或多个活动可能例如导致区块链上的不安全结果。
响应单元113可以从分析引擎130获取分析数据。响应单元113基于该分析数据发起与智能合约的安全性相关的第二操作。例如,根据生成的分析数据指示由于攻击而导致的智能合约的任何潜在异常操作的严重等级,响应单元113可以采取相应的安全行动来处理与智能合约相关的第一操作。
通过使用丰富的运行时信息作为原始数据,上述架构100可以提供一个通用型框架,以识别任何区块链上的智能合约受到攻击而导致的任何潜在异常操作,并采取相应的安全行动来保护智能合约免受攻击。
在另一个实施例中,信息收集单元112可以从运行环境的内核层和应用层获取运行时信息。如上所述,传统的在线保护只能从运行环境的应用层获取运行时信息。
在进一步的实施例中,分析引擎单元130可以根据规则集合分析运行时信息以生成分析数据。该规则集合是可动态配置的,以便分析引擎单元130可以主动防御任何已知的、未知的或新的攻击,而传统的在线保护由于其与已知攻击的操作进行比较,因此只能被动地防御已知的攻击。
在进一步的实施例中,分析引擎单元130可以从运行时信息中提取第一操作的活动特征,并根据规则集合分析该活动特征以生成分析数据,其中,规则集合可以与执行顺序、执行次数和执行参数等中的至少一个相关。第一操作的活动特征表示与第一操作的一个或多个活动相关的信息,诸如函数调用次数、函数参数和交易的输入数据。
作为规则集合的一个示例,智能合约A有一个循环,在每个迭代中,A调用另一个智能合约B,智能合约B又回调A。如果一个计算机程序或子例程可以在其执行过程中被中断,然后在其先前的调用完成执行之前安全地被再次调用("重新进入"),则被称为"重入函数"。为了消除不是由重入引起的循环,维护一计数器,在内部交易开始时,该计数器增加,在该内部交易结束时,该计数器减少。如果循环是由重入形成的,当循环迭代时,计数器将增加,因为调用者将等待被调用者完成。反之,当循环开始新的迭代时,计数器将被重置,因为在循环中产生的所有内部交易都会返回。在这个示例中,分析引擎单元130从运行时信息中提取活动特征(例如,回调函数的调用次数)。通过使用与执行次数相关的规则(例如,一个循环的次数),分析引擎单元130可以识别一个执行多次并转移资源(例如,ETH)的循环,并生成指示由于重入攻击而引起的潜在异常操作的分析数据。在这个示例中,分析引擎单元130需要交易信息,特别是交易发送方和交易接收方的地址,所需发送的资源,交易开始和结束的时间。
作为规则集合的另一个示例,智能合约的字节码包含一个分发例程,该例程从交易中读取函数ID,并通过将读取的函数ID与分发例程中编码的多个函数ID相匹配来确定哪个函数将被调用。如果读取的函数ID与编码的多个函数ID不匹配,将调用回调函数。这样的函数调用可以被称为"不正确的函数调用",因为被调用的函数(即回调函数)不是预期的函数(即交易所指示的函数)。分析引擎单元130可以通过三个步骤检测"不正确的函数调用"。在第一步,分析引擎单元130处理部署智能合约的交易信息,以获取每个部署的智能合约的字节码。之后,它定位字节码中的分发例程,并获取分发例程中编码的所有函数ID。因此,分析引擎单元130维护一个将智能合约的地址与函数ID的列表关联起来的字典。在第二步,分析引擎单元130处理调用智能合约的交易信息,以获取指示预期调用的函数的函数ID。在第三步,对于每个函数调用,分析引擎单元130检查从输入数据中提取的函数ID是否属于字典中维护的函数ID列表。如果不是,则检测到“不正确的函数调用”。分析引擎单元130可以被进一步增强,以消除误报(false positive),例如,基于观察到函数ID是4个字节且每个参数是32字节的倍数。因此,如果交易被用来调用一个非回调函数,输入数据的长度应该是32x+4,x>0。在这个示例中,分析引擎单元130从运行时信息中提取活动特征(例如,交易中和智能合约的分发例程中的调用函数ID,输入数据的长度)。通过使用与执行参数(例如,函数ID和输入数据的长度)相关的规则,分析引擎单元130可以识别“不正确的函数调用”,并生成指示由于“不正确的函数调用”攻击而引起的潜在异常操作的分析数据。在这个示例中,分析引擎单元130需要交易信息,因为交易可以部署或调用智能合约。
作为该规则集合的另一个示例,在调用智能合约后,应当检查返回值,因为被调用者可能因异常而非正常停止,而在被调用者中产生的异常不会传播给调用者。如果不检查返回值,调用者无法知道被调用者的执行是否成功,因此被调用者的失败可能会给调用者带来意外的问题。它可以被称为“合约调用后无检查”。分析引擎单元130获取智能合约的字节码,并扫描字节码以找到每个合约调用后的检查。如果分析引擎单元130不能找到检查,就会生成一份报告。例如,如果调用合约后的指令序列不能匹配任何用于检查返回值的指令模式,则分析引擎单元130会检测到合约调用后缺乏检查的问题。在这个示例中,分析引擎单元130从运行时信息中提取活动特征(例如,合约调用后的指令序列)。通过使用与执行顺序(例如,指令模式)相关的规则,分析引擎单元130可以识别“合约调用后无检查”,并生成指示由于“合约调用后无检查”攻击而引起的潜在异常操作的分析数据。在这个示例中,分析引擎单元130需要交易信息来获取智能合约的字节码。
应当理解,上述关于规则集合的例子只是示例性的,而不是限制性的。例如,分析引擎单元130可以通过使用规则的任意组合来识别对智能合约的潜在攻击。
在另一个实施例中,分析引擎单元130可以确定生成分析数据所需的运行时信息的内容。信息收集单元112可以基于确定的内容获取运行时信息。在一个例子中,信息收集单元112可以从分析引擎单元130获取指示生成分析数据所需的运行时信息的内容的第一消息。在另一个例子中,信息收集单元112可以从可选地包括在RE 102中的管理器140获取指示生成分析数据所需的运行时信息的内容的第一消息。管理器140负责分析引擎单元130的注册和取消注册。为了注册分析引擎单元,应从分析引擎单元130或其他设备向管理器140发送注册消息,该注册消息携带关于分析引擎单元需要什么运行时信息以及何时(即从哪个区块)应用分析引擎单元,以及哪些功能用于接收不同的运行时信息的信息。在收到注册信息后,管理器140通知信息收集单元112关于应该向分析引擎单元130发送什么运行时信息以及何时发送该运行时信息,以及分析引擎单元的哪些功能已经准备好接收运行时信息。要取消分析引擎单元的注册,应该从分析引擎单元或其他输入端向管理员发送取消注册消息,该取消注册消息携带关于哪个分析引擎单元将被取消注册以及何时(即从哪个区块)停止分析引擎单元的信息。如果没有给出关于何时停止的信息,分析引擎单元将立即被取消注册。在收到取消注册消息后,管理器140删除关于分析引擎单元130的记录,然后通知信息收集单元112关于何时停止向分析引擎单元发送运行时信息。基于分析引擎单元130可能只需要部分信息来实现其功能这一事实提供按需信息获取,因此减少了因获取和发送所有运行时信息到分析引擎单元130而产生的高额开销。例如,为了防止具有重入漏洞的智能合约被利用,如上所述,分析引擎单元130只需要交易信息,因此按需信息获取不需要收集区块和执行的RE(例如,VM)指令的信息。因此,分析引擎单元的开发者只需要告诉解释器110或管理器140需要什么运行时信息,以及在检测到攻击时如何做。因此,在开发基于解释器110的分析引擎单元时,不需要修改RE 102,这对快速响应(即快速开发新的分析引擎单元)新的攻击至关重要。
在另一个实施例中,分析引擎单元130可以确定运行时信息的分组模式以及生成分析数据所需的运行时信息的群组。信息收集单元112可以基于确定的分组模式和群组获取并分组运行时信息,并且分析引擎单元130可以基于分组后的运行时信息生成分析数据。在一个例子中,信息收集单元112可以从分析引擎单元130获得第二消息,指示运行时信息的分组模式以及生成分析数据所需的运行时信息的群组。在另一个例子中,信息收集单元112可以从可选地包括在RE 102中的管理器140获得第二消息,指示运行时信息的分组模式和生成分析数据所需的运行时信息组。在接收到第二消息后,信息收集单元112可以根据第二消息获得并分组运行时信息。这可以简化分析引擎单元的开发,因为如果分析引擎单元需要RE指令的运行时信息,分析引擎单元开发者需要知道指令语义。通过信息分组,分析引擎开发者只需要知道需要什么样的信息,而不是哪些RE指令包含所需的信息。例如,如果分析引擎单元130需要比较指令的运行时信息,通过信息分组,分析引擎单元130只需要告诉管理器140或信息收集单元112“它需要比较的运行时信息”。然而,在没有信息分组的情况下,分析引擎单元130需要告知管理者140它需要LT、GT、SLT、SGT、EQ、ISZERO的运行时信息,这些指令是例如EVM所支持的比较指令。此外,分析引擎单元130可以灵活地配置信息分组模式,以从单一攻击或群组攻击下保护。
在另一个实施例中,第一操作可以包括智能合约的创建、部署、调用和执行中的至少一个。
在进一步的实施例中,第二操作可以包括以下的至少一个许可:第一操作的一个或多个活动;阻止第一操作的一个或多个活动;以及生成针对第一操作的一个或多个活动的报告等等。响应单元113可以根据来自分析引擎单元130的分析数据采取行动(例如,安全行动),以保护智能合约免受潜在攻击。例如,有三种情况,但本公开的实施例在此方面不受限制。第一,如果分析引擎单元130基于分析数据没有发现任何攻击,那么响应单元113不采取特别行动,只是许可第一操作的一个或多个活动(例如,它让智能合约照常运行)。第二,如果分析引擎单元130基于分析数据发现将招致严重后果的攻击,那么响应单元113阻止第一操作的一个或多个活动(例如,它停止智能合约的执行)。例如,如果智能合约的重入漏洞受到攻击,智能合约的执行将被停止,因为这种攻击会造成金钱损失。第三,如果分析引擎单元130基于分析数据检测到可能不会招致严重后果的异常情况,那么响应单元113生成针对第一操作的一项或多项活动的报告,并让智能合约运行。例如,如果在比较中使用区块的时间戳,矿工可能会控制比较的结果,因为时间戳是由矿工设置的。这样的问题可能不会造成严重的安全后果,因此相应的分析引擎单元130可以通知解释器110显示一个报告(例如,警告信息)。
在另一个实施例中,如果第二操作包括生成针对第一操作的一个或多个活动的报告,那么RE 102可以可选地包括诊断器150,以使用生成的报告来诊断或调试智能合约。
在进一步的实施例中,运行时信息可包括与第一操作相关的区块信息、交易信息和指令信息中的至少一个。由于能够收集区块、交易和智能合约的完整运行时信息,因此允许开发任意的分析引擎单元。例如,信息收集单元112可以从每个区块的任何或所有字段获得数据,从每个交易的任何或所有字段获得数据,以及从任何或所有执行的RE(例如,VM)指令的运行时信息获得数据。下面将参照图5详细描述信息收集单元的一个例子。
图2是根据本公开的一个实施例的用于保护智能合约免受攻击的架构200的示意图。如图2所示,除了架构200的节点201的运行环境(RE)202包括具有发送器214和接收器215的解释器210之外,节点201具有与架构100的节点101几乎相同的元素。为简明起见,将省略对图2的这些与图1相同的元素的详细描述。
发送器214将运行时信息发送到RE 202之外的分析引擎单元130。
接收器215从分析引擎单元130接收与由第一操作的活动导致的智能合约的安全性相关的分析数据。
通过使用丰富的运行时信息作为原始数据,上述架构200可以提供一个通用型框架,以识别任何区块链上的智能合约因受到攻击而引起的任何潜在异常操作,并采取相应的安全行动来保护智能合约免受攻击。此外,它可以减少开发用于识别因攻击而引起的潜在异常操作的分析引擎单元的难度。
在另一个实施例中,信息收集单元112或接收器215可以获得指示需要发送到分析引擎单元130的运行时信息的内容的第一消息。信息收集单元112可以基于该第一消息获得运行时信息。类似于架构100,第一消息可以从分析引擎单元130或管理器140或其他设备获得。
在进一步的实施例中,信息收集单元112或接收器215可以获得指示需要发送到分析引擎单元130的运行时信息的分组模式和运行时信息的群组的第二消息。信息收集单元112可以获取运行时信息并基于第二消息对运行时信息进行分组,并且发送器214可以将分组后的运行时信息发送到分析引擎单元130。类似于架构100,第二消息可以从分析引擎单元130或管理器140或其他设备获取。
这里,第一操作和第二操作与图1的描述的操作类似。
图3是根据本公开的一个实施例的另一个用于保护智能合约免受攻击的架构300的示意图。如图3所示,除了架构300的节点301的分析引擎单元330具有接收器331、发送器332和分析器333之外,该节点301具有与架构100的节点101几乎相同的元素。为简明起见,将省略对图3的这些与图1相同的元素的详细描述。
接收器331从运行环境102中的解释器110接收作为原始数据的运行时信息,该运行时信息与在运行环境102中发起的、同区块链上的智能合约相关的第一操作相关联。
分析器333根据规则集合分析运行时信息,以生成与第一操作的活动导致的智能合约的安全性相关联的分析数据。
发送器332将分析数据发送至解释器110。
通过使用丰富的运行时信息作为原始数据,上述架构300能够提供一个通用的框架来识别任何区块链上的智能合约因受到攻击而引起的任何异常操作,从而采取相应的安全行动来保护智能合约免受攻击。由于分析引擎330与RE 302分开,分析引擎单元的开发者不需要了解区块链内部,因为他们不需要修改RE,因此基于解释器开发分析引擎单元要比从头开发容易很多。
在进一步的实施例中,分析器333可以从运行时信息中提取第一操作的活动特征,并根据规则集合分析活动特征以生成分析数据,其中,规则集合与执行顺序、执行次数和执行参数等中的至少一个相关。
在另一个实施例中,发送器332可以向解释器110发送指示需要从解释器110接收的运行时信息的内容的第一消息。解释器110可以基于该第一消息将运行时信息发送到分析引擎单元330。
在另一个实施例中,发送器332可以向解释器110发送指示需要从解释器110接收的运行时信息的分组模式和运行时信息的群组的第二消息。解释器110可以基于该第二消息对运行时信息进行分组,并将分组后的运行时信息发送到分析引擎单元330。
这里的第一操作和第二操作与图1描述的操作类似。
图4是根据本公开的一个实施例的另一个用于保护智能合约免受攻击的架构400的示意图。如图4所示,除了架构400的RE 102和分析引擎单元130分别在节点401和与节点401分开的设备403上操作外,架构400具有与架构100几乎相同的元素。为简明起见,将省略对图4中这些与图1中类似元素的详细描述。
该架构400可以减少处理能力和电源都有限的节点401的处理负荷。例如,由于节点上的资源有限,节点401可能没有能力对潜在的攻击实施复杂的分析,并因此将运行时信息发送到在设备403上执行的分析引擎单元430,该设备403足以实施对运行时信息的分析以生成分析数据。
这里的第一操作和第二操作与图1描述的操作类似。
图5为图1-2所示的信息收集单元的一个例子500的示意图。该信息收集单元500包括用于分别获取区块信息、交易信息和指令信息的块收集器501、交易收集器502和指令收集器503。
块收集器501可以从每个块的任何或所有字段获得数据。下面的表1示出了块的示例性的块信息。一个区块包括区块头和区块体。区块头包含元数据,诸如区块编号,开采区块的难度,产生区块的矿工,区块被开采的时间戳等。区块体包含该区块中所有外部交易的交易哈希值。
表1.区块信息
交易收集器502可以从每个交易的任何或所有字段获取数据,包括每个外部交易和每个内部交易。下面的表2A和2B分别示出了外部交易和内部交易的示例性交易信息。外部交易携带许多有用的信息,例如,交易发送者和交易接收者的地址,要发送的资源量(例如,诸如以太坊的ETH的加密货币),以及输入数据。如果交易被用来部署智能合约,输入数据包含智能合约的字节码。如果交易被用来调用智能合约中的一个函数,那么输入数据包含指示应该调用哪个函数的函数ID,以及函数参数。内部交易也携带很多有用的信息,例如,要被创建的智能合约的字节码,要发送的资源量(例如,诸如以太坊的ETH的加密货币),包括要被调用的函数的函数ID和调用智能合约的参数的输入数据。
表2A.外部交易的交易信息
表2B.内部交易的交易信息
指令收集器503可以从任何或所有执行的RE(例如,VM)指令的运行时信息中获得数据。下面的表3示出了不同类型指令的示例性指令信息。作为一个例子,如果一个指令读取区块、交易或已执行的智能合约的字段,可以获得字段的名称、要读取的字段中的位置和读取值。作为另一个例子,如果一个指令改变账户的余额,可以获得原始余额和新余额。作为又一个例子,如果一个指令消耗堆栈的前两个项目,将这两个项目相加并将结果推送到堆栈顶部,则可以得到指令所消耗的堆栈项目,以及指令所增加的堆栈项目。
表3.指令信息
图6是用于保护智能合约免受攻击的示例方法600的流程图。该方法600可以由图1的架构100(包括分析引擎单元130和解释器110)或图4的架构400(包括分析引擎单元430和解释器410)实现。该方法600包括检测步骤S605、获取步骤S610、生成步骤S615和发起步骤S620。
在步骤S605,方法600检测在运行环境中发起的与区块链上的智能合约相关的第一操作。例如,步骤S605可以由图1的检测单元111实现。
在步骤S610,方法600在检测到第一操作后,获取与第一操作相关联的作为原始数据的运行时信息。例如,步骤S610可以由图1的信息收集单元112实现。
在步骤S615,方法600基于运行时信息,生成与第一操作的活动导致的智能合约的安全性相关联的分析数据。例如,步骤S615可以由图1的分析引擎单元130实现。
在步骤S620,方法600基于分析数据,发起与智能合约的安全性相关的第二操作。例如,步骤S620可以由图1的响应单元113实施。
通过使用丰富的运行时信息作为原始数据,上述方法600可以提供一个通用的框架来识别任何区块链上的智能合约因受到攻击而引起的任何潜在异常操作,并采取相应的安全行动来保护智能合约免受攻击。此外,它可以减少开发用于识别由于攻击而引起的潜在异常操作的分析引擎单元的难度。
运行时信息可以从运行环境的内核层和应用层获取。
方法600可以进一步包括:根据规则集合分析运行时信息以生成分析数据的步骤。
方法600可以进一步包括以下步骤:从运行时信息中提取第一操作的活动特征,以及根据规则集合分析活动特征以生成分析数据,其中规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
方法600可以进一步包括以下步骤:确定生成分析数据所需的运行时信息的内容,以及基于确定的内容获取运行时信息。
方法600可以进一步包括以下步骤:确定生成分析数据所需的运行时信息的分组模式和运行时信息的群组,基于确定的分组模式和群组获取运行时信息并对该运行时信息进行分组,以及基于分组后的运行时信息生成分析数据。
第一操作可以包括智能合约的创建、部署、调用和执行中的至少一个。
第二操作可以包括以下至少一个:许可第一操作的一个或多个活动;阻止第一操作的一个或多个活动;以及生成针对第一操作的一个或多个活动的报告。
图7是用于保护智能合约免受攻击的示例方法700的流程图。该方法700可以由图2的架构200(包括解释器210)或图4的架构400(包括解释器110)实现。该方法700包括检测步骤S705、获取步骤S710、发送步骤S715、接收步骤S720和发起步骤S725。
在步骤S705,方法700检测在运行环境中发起的与区块链上的智能合约相关的第一操作。步骤S705类似于图6中的步骤S605,并且例如可以由图2的检测单元111来实现。
在步骤S710,方法700在检测到第一操作后,获取与第一操作相关联的作为原始数据的运行时信息。步骤S710类似于图6中的步骤610,并且可以通过例如图2的信息收集单元112来实现。
在步骤S715,方法700将运行时信息发送到在所运行环境之外的分析引擎单元。例如,步骤S715可以由图2的发送器214实现。发送器214可以包括在信息收集单元112中或由其实施。或者,发送器214可以与信息收集单元112分开实施。
在步骤S720,方法700从分析引擎单元接收与第一操作的活动导致的智能合约的安全性相关联的分析数据。例如,步骤S720可以由图2的接收器215实现。接收器215可以被包括在图2的响应单元113中或由其实施。或者,接收器215可以与响应单元113分开实施。
在步骤S725,方法700基于分析数据发起与智能合约的安全性相关的第二操作。步骤S725类似于图6中的步骤620,并且可以由图2的响应单元113实现。
通过使用丰富的运行时信息作为原始数据,上述方法700可以提供一个通用的框架来识别任何区块链上的智能合约由于攻击而引起的任何潜在的异常操作,并采取相应的安全行动来保护智能合约免受攻击。此外,它可以减少开发用于识别因攻击而引起的潜在异常操作的分析引擎单元的难度。
运行时信息可以从运行环境的内核层和应用层获取。
方法700可以进一步包括以下步骤:获取指示需要发送到分析引擎单元的运行时信息的内容的第一消息;以及基于该第一消息获取运行时信息。
方法700可以进一步包括以下步骤:获取指示需要发送到分析引擎单元的运行时信息的分组模式和运行时信息的群组的第二消息;基于该第二消息获取运行时信息并对该运行时信息进行分组;以及将分组后的运行时信息传送到分析引擎单元。
第一操作可以包括智能合约的创建、部署、调用和执行中的至少一个。
第二操作可以包括以下的至少一个:许可所述第一操作的一个或多个活动;阻止所述第一操作的一个或多个活动;以及生成针对所述第一操作的一个或多个活动的报告。
图8是用于保护智能合约免受攻击的示例方法800的流程图。该方法800可以由图3的架构300(包括分析引擎单元330)或图4的架构400(包括分析引擎单元130)实现。该方法800包括接收步骤S805、分析步骤S810和发送步骤S815。
在步骤S805,方法800从运行环境中的解释器接收与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联的作为原始数据的运行时信息。例如,步骤S805可以由图3的接收器331实现。
在步骤S810,方法800根据规则集合分析运行时信息,以生成与第一操作的活动导致的智能合约的安全性相关联的分析数据。例如,步骤S810可以由图3的分析器333实现。
在步骤S815,方法800发送分析数据至解释器。例如,步骤S815可以由图3的发送器332实现。
通过使用丰富的运行时信息作为原始数据,上述方法800可以提供一个通用的框架来识别任何区块链上的智能合约由于攻击而引起的任何潜在的异常操作,以便采取相应的安全行动来保护智能合约免受攻击。此外,它可以减少开发用于识别因攻击而引起的潜在异常操作的分析引擎单元的难度。
运行时信息从运行环境的内核层和应用层获取。
方法800可以进一步包括以下步骤:从运行时信息中提取第一操作的活动特征;以及根据规则集合分析活动特征以生成分析数据,其中规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
方法800可以进一步包括向解释器发送指示需要从解释器接收的运行时信息的内容的第一消息的步骤。
方法800可以进一步包括向解释器发送指示需要从解释器接收的运行时信息的分组模式和运行时信息的群组的第二消息的步骤。
图9是用于保护智能合约免受攻击的示例设备900的示意图。该装置900可以包括处理器901和耦合到处理器901的存储器902。处理器901可以是通用处理器、数字信号处理器(DSP)、特定应用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其任何组合。存储器902可以包括随机存取存储器(RAM)和只读存储器(ROM)。存储器902可以存储计算机可读、计算机可执行的软件,包括在执行时使处理器901执行本文所述的各种功能的指令(例如,用于保护智能合约免受攻击的方法600、700和800的任何或所有步骤等)。
与本文公开内容相关的各种说明性块和模块可以用通用处理器、DSP、ASIC、FPGA或其他可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件或其任何组合来实现或执行,以执行本文所述的功能。通用处理器可以是一个微处理器,但在另一种情况下,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器也可以作为计算设备的组合来实现(例如,DSP和微处理器的组合,多个微处理器,一个或多个微处理器与DSP核心结合,或任何其他此类配置)。因此,本文所述的功能可由一个或多个其他处理单元(或核心),在至少一个集成电路(IC)上执行。在不同的例子中,可以使用不同类型的集成电路(例如,结构化/平台化的ASIC,FPGA,或另一个半定制的IC),它们可以以本领域已知的任何方式进行编程。每个单元的功能也可以全部或部分地用体现在存储器中的指令来实现,这些指令的格式可以由一个或多个通用或特定应用处理器执行。
计算机可读介质包括非暂时性计算机存储介质和通信介质,包括便于将计算机程序从一个地方传输到另一个地方的任何介质。非暂时性存储介质可以是任何可以被通用或特殊用途计算机访问的可用介质。通过举例,而不是限制,非暂时性计算机可读介质可以包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、光盘(CD)ROM或其他光盘存储、磁盘存储或其他磁性存储设备,或任何其他非暂时性介质,可用于携带或存储指令或数据结构形式的所需程序代码手段,并可由通用或特殊用途计算机,或通用或特殊用途处理器访问。另外,任何连接都被恰当地称为非暂时性计算机可读介质。例如,如果软件是从网站、服务器或其他远程来源使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波等无线技术传输的,那么同轴电缆、光纤电缆、双绞线、DSL或诸如红外线、无线电和微波等无线技术都包括在媒介的定义中。本文所用的磁盘和光盘包括CD、激光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁方式复制数据,而光盘则以激光方式复制数据。上述各项的组合也包括在计算机可读介质的范围内。
可以理解的是,所公开的过程/流程图中的块的具体顺序或层次是示例性的方法的说明。基于设计偏好,可以理解的是,流程/流程图中的块的具体顺序或层次可以被重新安排。此外,一些块可以被合并或省略。随附的方法权利要求书以示例性的顺序介绍了各种区块的要素,并不意味着局限于所介绍的具体顺序或层次结构。
前面提供的描述是为了使本领域的任何技术人员能够实践本文所述的各个方面。对这些方面的各种修改对于本领域的技术人员来说将是显而易见的,并且这里定义的通用原则可以应用于其他方面。因此,权利要求书并不打算局限于本文所示的方面,而是给予与权利要求书语言相一致的全部范围,其中对单数元素的提及并不意味着"一个且只有一个",除非特别说明,而是"一个或多个"。这里使用的"示例性"一词是指"作为一个例子、实例或说明"。此处描述为"示例性"的任何方面不一定被理解为比其他方面更优选或有利。除非特别说明,术语"一些"是指一个或多个。诸如"A、B或C中的至少一个"、"A、B和C中的至少一个"和"A、B、C或其任何组合"的组合包括A、B和/或C的任何组合,并且可以包括A的倍数、B的倍数或C的倍数。具体来说,诸如"A、B或C中的至少一个"、"A、B和C中的至少一个"以及"A、B、C或其任何组合"的组合可以是仅有A、仅有B、仅有C、A和B、A和C、B和C或A和B和C,其中任何此类组合可以包含A、B或C的一个或多个成员。本公开内容中所描述的各方面元素的所有结构和功能上的等价,对于本领域普通技术人员来说是已知的或将会知道的,在此明确纳入参考,并打算包含在权利要求中。此外,本文所披露的任何内容都不打算奉献给公众,无论这种披露是否在权利要求中明确提及。除非使用"手段"这一短语明确叙述,否则任何权利要求要素都不能被解释为手段加功能。
Claims (35)
1.一种用于保护智能合约免受攻击的计算机实现方法,包括以下步骤:
检测在运行环境中发起的与区块链上的智能合约相关的第一操作;
在检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;
基于所述运行时信息,生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
2.根据权利要求1所述的方法,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
3.根据权利要求1所述的方法,其中,所述生成所述分析数据的步骤包括:根据规则集合分析所述运行时信息以生成所述分析数据。
4.根据权利要求3所述的方法,其中,所述分析所述运行时信息的步骤包括:
从所述运行时信息中提取所述第一操作的活动特征;以及,
根据所述规则集合分析所述活动特征以生成所述分析数据,所述规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
5.根据权利要求1所述的方法,还包括以下步骤:确定生成所述分析数据所需的所述运行时信息的内容;以及,
其中,所述获取所述运行时信息的步骤还包括:基于所述确定的内容获取所述运行时信息。
6.根据权利要求1所述的方法,还包括以下步骤:确定生成所述分析数据所需的所述运行时信息的分组模式和所述运行时信息的群组;
其中,所述获取所述运行时信息的步骤还包括:基于所述确定的分组模式和群组获取所述运行时信息并对所述运行时信息进行分组;以及,
所述生成所述分析数据还包括:基于分组后的运行时信息生成所述分析数据。
7.根据权利要求1所述的方法,其中,
所述第一操作包括所述智能合约的创建、部署、调用和执行中的至少一个;以及,
所述第二操作包括以下至少一个:许可所述第一操作的一个或多个活动;阻止所述第一操作的一个或多个活动;以及生成针对所述第一操作的一个或多个活动的报告。
8.根据权利要求1所述的方法,其中,所述运行时信息包括与所述第一操作相关联的区块信息、交易信息和指令信息中的至少一个。
9.一种用于保护智能合约免受攻击的计算机实现方法,包括以下步骤:
检测在运行环境中发起的与区块链上的智能合约相关的第一操作;
在检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;
将所述运行时信息发送至在所述运行环境之外的分析引擎单元;
从所述分析引擎单元接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
10.根据权利要求9所述的方法,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
11.根据权利要求9所述的方法,还包括以下步骤:获取指示需要发送到所述分析引擎单元的所述运行时信息的内容的第一消息;以及
其中,所述获取所述运行时信息的步骤还包括:基于所述第一消息获取所述运行时信息。
12.根据权利要求9所述的方法,还包括以下步骤:获取指示需要发送到所述分析引擎单元的所述运行时信息的分组模式和所述运行时信息的群组的第二消息;
其中,所述获取所述运行时信息的步骤还包括:基于所述第二消息获取所述运行时信息并对所述运行时信息进行分组;以及
其中,所述将所述运行时信息发送至分析引擎单元的步骤还包括:将分组后的运行时信息发送至所述分析引擎单元。
13.根据权利要求9所述的方法,其中:
所述第一操作包括智能合约的创建、部署、调用和执行中的至少一个;以及,
所述第二操作包括以下的至少一个:许可所述第一操作的一个或多个活动;阻止所述第一操作的一个或多个活动;以及生成针对所述第一操作的一个或多个活动的报告。
14.根据权利要求9所述的方法,其中,所述运行时信息包括与所述第一操作相关联的区块信息、交易信息和指令信息中的至少一个。
15.一种用于保护智能合约免受攻击的计算机实现方法,包括以下步骤:
从运行环境中的解释器接收作为原始数据的运行时信息,所述作为原始数据的运行时信息与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联;
根据规则集合分析所述运行时信息,以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
发送所述分析数据至所述解释器。
16.根据权利要求15所述的方法,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
17.根据权利要求15所述的方法,其中,所述分析所述运行时信息的步骤包括:
从所述运行时信息中提取所述第一操作的活动特征;以及
根据所述规则集合分析所述活动特征以生成所述分析数据,所述规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
18.根据权利要求15所述的方法,还包括以下步骤:向所述解释器发送指示需要从所述解释器接收的所述运行时信息的内容的第一消息。
19.根据权利要求15所述的方法,还包括以下步骤:向所述解释器发送指示需要从所述解释器接收的所述运行时信息的分组模式和所述运行时信息的群组的第二消息。
20.一种用于保护智能合约免受攻击的装置,包括:
检测单元,被配置为检测在运行环境中发起的与区块链上的智能合约相关的第一操作;
信息收集单元,被配置为在所述检测单元检测到所述第一操作后,获取与所述第一操作相关联的作为原始数据的运行时信息;
分析引擎单元,被配置为基于所述运行时信息,生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
响应单元,被配置为基于所述分析数据,发起与所述智能合约的安全性相关的第二操作。
21.根据权利要求20所述的装置,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
22.根据权利要求20所述的装置,其中,所述分析引擎单元进一步被被配置为:根据规则集合分析所述运行时信息以生成所述分析数据。
23.根据权利要求20所述的装置,其中,所述分析引擎单元进一步被被配置为:
从所述运行时信息中提取所述第一操作的活动特征;以及
根据所述规则集合分析所述活动特征以生成所述分析数据,所述规则集合与执行顺序、执行次数和执行参数中的至少一个相关。
24.根据权利要求20所述的装置,其中,所述分析引擎单元进一步被被配置为:确定生成所述分析数据所需的所述运行时信息的内容;以及
其中,所述信息收集单元进一步被配置为基于所确定的内容获取所述运行时信息。
25.根据权利要求20所述的装置,其中,所述分析引擎单元进一步被被配置为:确定生成所述分析数据所需的所述运行时信息的分组模式和所述运行时信息的群组;
其中,所述信息收集单元进一步被配置为:基于所确定的分组模式和群组获取所述运行时信息并对所述运行时信息进行分组,以及
其中,所述分析引擎单元进一步被被配置为:基于分组后的运行时信息生成所述分析数据。
26.一种用于保护智能合约免受攻击的装置,包括:
检测单元,被配置为检测在运行环境中发起的与区块链上的智能合约相关的第一操作;
信息收集单元,被配置为在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息;
发送器,被配置为将所述运行时信息发送到所述运行环境之外的分析引擎单元;
接收器,从所述分析引擎单元接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
响应单元,被配置为基于所述分析数据发起与所述智能合约的安全性相关的第二操作。
27.根据权利要求26所述的装置,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
28.一种用于保护智能合约免受攻击的装置,包括:
接收器,被配置为从运行环境中的解释器接收与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联的作为原始数据的运行时信息;
分析器,被配置为根据规则集合分析运行时信息,以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据;以及
发送器,被配置为将所述分析数据发送至所述解释器。
29.根据权利要求28所述的装置,其中,所述运行时信息从所述运行环境的内核层和应用层获取。
30.一种用于保护智能合约免受攻击的装置,包括:
用于检测在运行环境中发起的与区块链上的智能合约相关的第一操作的模块;
用于在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息的模块;
用于基于所述运行时信息生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及
用于基于所述分析数据发起与所述智能合约的安全性相关的第二操作的模块。
31.一种用于保护智能合约免受攻击的装置,包括:
用于检测在运行环境中发起的与区块链上的智能合约相关的第一操作的模块;
用于在检测到所述第一操作后获取与所述第一操作相关联的作为原始数据的运行时信息的模块;
用于将所述运行时信息发送到所述运行环境之外的分析引擎单元的模块;
用于从所述分析引擎接收与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及
用于基于所述分析数据发起与所述智能合约的安全性相关的第二操作的模块。
32.一种用于保护智能合约免受攻击的装置,包括:
用于从运行环境中的解释器接收与在所述运行环境中发起的同区块链上的智能合约相关的第一操作相关联的作为原始数据的运行时信息的模块;
用于根据规则集合分析所述运行时信息以生成与所述第一操作的活动导致的所述智能合约的安全性相关联的分析数据的模块;以及
用于将所述分析数据发送至所述解释器的模块。
33.一种用于保护智能合约免受攻击的装置,包括:
至少一个处理器;以及
存储指令的存储器,所述指令在被执行时使得所述至少一个处理器执行根据权利要求1至19中任一项所述的方法。
34.一种计算机可读存储介质,存储用于执行根据权利要求1至19中任一项所述的方法的计算机可执行指令。
35.一种计算机程序产品,有形地存储在计算机可读存储介质中,所述计算机程序产品存储有计算机可执行指令,所述指令在执行时使得至少一个处理器执行根据权利要求1至19中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/073736 WO2021146988A1 (en) | 2020-01-22 | 2020-01-22 | Method and apparatus for protecting smart contracts against attacks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324773A true CN116324773A (zh) | 2023-06-23 |
Family
ID=76991952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080098929.6A Pending CN116324773A (zh) | 2020-01-22 | 2020-01-22 | 用于保护智能合约免受攻击的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230065259A1 (zh) |
CN (1) | CN116324773A (zh) |
WO (1) | WO2021146988A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658542B (zh) * | 2022-11-11 | 2023-09-19 | 南京掌御信息科技有限公司 | 一种代码密码算法类型识别与参数误用检测方法与系统 |
CN116743499B (zh) * | 2023-08-09 | 2023-10-27 | 杭州安碣信息安全科技有限公司 | 一种针对智能合约攻击的模仿交易生成方法 |
CN117034299B (zh) * | 2023-10-09 | 2024-01-26 | 广东时汇信息科技有限公司 | 一种基于区块链的智能合约安全检测系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL173472A (en) * | 2006-01-31 | 2010-11-30 | Deutsche Telekom Ag | Architecture for identifying electronic threat patterns |
US8914809B1 (en) * | 2012-04-24 | 2014-12-16 | Open Text S.A. | Message broker system and method |
US10915641B2 (en) * | 2017-10-30 | 2021-02-09 | Pricewaterhousecoopers Llp | Implementation of continuous real-time validation of distributed data storage systems |
US11405182B2 (en) * | 2018-12-03 | 2022-08-02 | Ebay Inc. | Adaptive security for smart contracts using high granularity metrics |
CN110263536B (zh) * | 2019-06-21 | 2024-05-24 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的监控方法及装置 |
-
2020
- 2020-01-22 CN CN202080098929.6A patent/CN116324773A/zh active Pending
- 2020-01-22 US US17/794,516 patent/US20230065259A1/en active Pending
- 2020-01-22 WO PCT/CN2020/073736 patent/WO2021146988A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20230065259A1 (en) | 2023-03-02 |
WO2021146988A1 (en) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3205072B1 (en) | Differential dependency tracking for attack forensics | |
CN104123493B (zh) | 应用程序的安全性检测方法和装置 | |
KR101811325B1 (ko) | 네트워크 환경에서의 악성 스크립트 언어 코드의 검출 | |
Xu et al. | A novel machine learning‐based analysis model for smart contract vulnerability | |
CN116324773A (zh) | 用于保护智能合约免受攻击的方法和装置 | |
US11882134B2 (en) | Stateful rule generation for behavior based threat detection | |
US20190325145A1 (en) | Management of Security Vulnerabilities | |
US10296743B2 (en) | Method and device for constructing APK virus signature database and APK virus detection system | |
CN111524007A (zh) | 一种智能合约的嵌入式入侵检测方法及装置 | |
Wang et al. | Demadroid: Object Reference Graph‐Based Malware Detection in Android | |
Araujo et al. | Compiler-instrumented, Dynamic {Secret-Redaction} of Legacy Processes for Attacker Deception | |
CN113312618A (zh) | 程序漏洞检测方法、装置、电子设备及介质 | |
Hamadouche et al. | Virus in a smart card: Myth or reality? | |
CN114091031A (zh) | 基于白规则的类加载防护方法及装置 | |
Nirumand et al. | A model‐based framework for inter‐app Vulnerability analysis of Android applications | |
Choi et al. | Large‐Scale Analysis of Remote Code Injection Attacks in Android Apps | |
US20240054210A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
Vanspauwen et al. | Verifying protocol implementations by augmenting existing cryptographic libraries with specifications | |
Tileria et al. | {WearFlow}: Expanding Information Flow Analysis To Companion Apps in Wear {OS} | |
CN113779589B (zh) | 一种安卓智能手机应用误配置检测方法 | |
CN115174192A (zh) | 应用安全防护方法及装置、电子设备和存储介质 | |
CN114417347A (zh) | 应用程序的漏洞检测方法、装置、设备、存储介质和程序 | |
Durães et al. | A methodology for the automated identification of buffer overflow vulnerabilities in executable software without source-code | |
Xiang et al. | Ghost in the binder: Binder transaction redirection attacks in Android system services | |
Gupta et al. | SEC‐H5: secure and efficient integration of settings of enhanced HTML5 XSS vector defensive framework on edge network of fog nodes |
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 |