一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种智能合约代码漏洞处理方法及装置与流程

2022-02-21 04:32:46 来源:中国专利 TAG:


1.本说明书涉及计算机应用领域,尤其涉及一种智能合约代码漏洞处理方法及装置。


背景技术:

2.互联网产业中的诸多业务均依赖于软件,因此软件的安全性至关重要;以区块链场景为例,其中许多基于区块链操作完成的转账、存证等业务均需要调用智能合约,而一旦智能合约代码中的逻辑漏洞被不法人士利用,就可能造成业务无法正常运行,导致资产损失等后果。
3.因此,在相关技术中,软件开发和维护人员可以对软件代码进行安全性漏洞扫描和修复,以期最终交付的软件代码中尽可能不含有安全性漏洞;但是,软件代码版本更迭过程中,上述安全性漏洞可能发生变化,软件开发和维护人员可能无法追踪处理所有的安全性漏洞,导致交付的软件产品实际并不安全,进而影响业务的稳定性。


技术实现要素:

4.有鉴于此,本说明书公开了一种智能合约代码漏洞处理方法和装置。
5.根据本说明书实施例的第一方面,公开了一种智能合约代码漏洞处理方法,包括:
6.在目标智能合约的合约代码满足漏洞扫描条件时,对所述合约代码执行安全扫描得到所述合约代码中包含的代码漏洞;
7.确定与所述合约代码对应的漏洞列表中是否包含所述代码漏洞;其中,所述漏洞列表中的代码漏洞被标记了处理状态;所述处理状态包括触发对所述代码漏洞进行跟踪处理的第一类处理状态,和指示所述代码漏洞不需要进行跟踪处理的第二类处理状态;
8.如果所述漏洞列表中包含所述代码漏洞,获取为所述代码漏洞标记的处理状态;
9.校验所述处理状态是否为所述第一类处理状态;如果所述处理状态为所述第一类处理状态,通知与所述代码漏洞对应的处理方对所述代码漏洞进行处理,并在获取到所述处理方对所述代码漏洞的处理结果时,将所述代码漏洞的处理状态更新为所述第二类处理状态。
10.根据本说明书实施例的第二方面,公开了一种智能合约代码漏洞处理装置,包括:
11.扫描模块,在目标智能合约的合约代码满足漏洞扫描条件时,对所述合约代码执行安全扫描得到所述合约代码中包含的代码漏洞;
12.确定模块,确定与所述合约代码对应的漏洞列表中是否包含所述代码漏洞;其中,所述漏洞列表中的代码漏洞被标记了处理状态;所述处理状态包括触发对所述代码漏洞进行跟踪处理的第一类处理状态,和指示所述代码漏洞不需要进行跟踪处理的第二类处理状态;
13.获取模块,如果所述漏洞列表中包含所述代码漏洞,获取为所述代码漏洞标记的处理状态;
14.处理模块,校验所述处理状态是否为所述第一类处理状态;如果所述处理状态为所述第一类处理状态,通知与所述代码漏洞对应的处理方对所述代码漏洞进行处理,并在获取到所述处理方对所述代码漏洞的处理结果时,将所述代码漏洞的处理状态更新为所述第二类处理状态。
15.根据本说明书实施例的第三方面,公开了一种电子设备,包括:
16.处理器;
17.用于存储处理器可执行指令的存储器;
18.其中,所述处理器通过运行所述可执行指令以实现上述任意一种方法的步骤。
19.根据本说明书实施例的第四方面,公开了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述任意一种方法的步骤。
20.在以上技术方案中,一方面,由于在与智能合约代码对应的漏洞扫描条件被满足的情况下,可以通过对智能合约代码进行安全扫描,得到智能合约代码中包含的代码漏洞,并通过所维护的漏洞列表,确定出智能合约代码中包含的已知的代码漏洞和未知的代码漏洞,因此,可以使开发人员和维护人员获知智能合约代码中包含的未知的代码漏洞。
21.另一方面,针对智能合约代码中包含的代码漏洞,可以根据所维护的漏洞列表中记录的为该代码漏洞标记的处理状态,在该代码漏洞的处理状态为触发进行跟踪处理的第一类处理状态时,对该代码漏洞进行跟踪处理,即通知对应的处理方对该代码漏洞进行处理,并在获取到对应的处理结果时,将该代码漏洞的处理状态更新为不需要进行跟踪处理的第二类处理状态,这样,可以使在智能合约代码中扫描得到的代码漏洞被跟踪处理,从而可以提高智能合约的安全性。
附图说明
22.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书文本一同用于解释原理。
23.图1是创建智能合约和调用智能合约的示意图;
24.图2是本说明书一示例性实施例示出的一种智能合约代码漏洞处理系统的示意图;
25.图3是本说明书一示例性实施例示出的一种智能合约代码漏洞处理方法的流程图;
26.图4是本说明书一示例性实施例示出的一种代码漏洞的处理状态的示意图;
27.图5是本说明书一示例性实施例示出的另一种智能合约代码漏洞处理方法的流程图;
28.图6是本说明书一示例性实施例示出的一种电子设备的硬件结构图;
29.图7是本说明书一示例性实施例示出的一种智能合约代码漏洞处理装置的框图。
具体实施方式
30.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
31.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
32.区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。区块链一般被划分为三种类型:公有链(public blockchain),私有链(private blockchain)和联盟链(consortium blockchain)。此外,还可以有上述多种类型的结合,比如私有链 联盟链、联盟链 公有链等。
33.在可编程的区块链中,可以通过面向用户提供智能合约(smart contract)的功能,以支持用户在区块链网络中创建并调用一些复杂的逻辑。所谓智能合约是在区块链上可以被交易触发执行的程序。
34.在可编程的区块链中,每一个节点设备都可以搭载一个图灵完备的虚拟机作为智能合约的执行环境,通过它可以实现各种复杂的逻辑。
35.用户在区块链中发布和调用智能合约就是在虚拟机上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
36.字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如solidity、serpent、lll语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
37.请参见图1,图1是创建智能合约和调用智能合约的示意图。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的虚拟机可以分别执行该交易,将智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
38.对于智能合约代码而言,也需要对智能合约代码进行安全性漏洞扫描和修复,以保证智能合约代码中尽可能不含有安全性漏洞。
39.本说明书提出一种针对智能合约代码中包含的代码漏洞,根据所维护的漏洞列表中记录的为该代码漏洞标记的处理状态,对该代码漏洞进行相应的处理的技术方案。
40.需要说明的是,上述技术方案也可以用于对除智能合约代码之外的其他类型的代码进行漏洞处理;其中,其他类型的代码可以包括应用程序(application,app)代码、小程序(mini program)代码等,本说明书对此不作限制。
41.上述代码,可以包括任意形式的代码,既可以包括java、c 、python等高级编程语言编写的、未经编译的代码,也可以包括经过编译后的可执行的程序代码;从应用角度而言,其既可以包括传统的客户端、服务端代码,也可以包括web应用的代码,等等。本领域普通技术人员可以知晓,无论是未经编译的代码文本,还是经过编译的可执行代码,均可以通
过技术手段进行安全分析和维护,因此,本说明书对于软件代码的具体形式无需加以详细限定。
42.上述代码漏洞,可以包括代码中可以使得系统或者相关数据的保密性、完整性、可用性、访问控制等方面面临安全威胁的缺陷;通常,软件开发人员的疏忽大意、编程语言的特性、软件开发和维护的机制都有可能导致上述漏洞的产生。以解释性语言javascript为例,该语言经常用于设计网页,其中可以包含用于执行代码的eval函数;而如果不对输入上述eval函数的待执行代码进行限制,就很有可能引入恶意代码,进而导致整个网页数据出现错误。本说明书对于代码漏洞的具体种类、形式无需进行罗列或限定。
43.在具体实现时,针对需要对其执行漏洞处理的智能合约(可称为目标智能合约),可以先检测该目标智能合约的合约代码是否满足漏洞扫描条件,后续,可以在该合约代码满足漏洞扫描条件时,对该合约代码执行安全扫描,得到该合约代码中包含的代码漏洞。
44.在实际应用中,为了便于对代码进行漏洞处理,可以维护与该代码对应的漏洞列表。其中,该漏洞列表中可以记录该代码中包含的代码漏洞,以及为各个代码漏洞标记的处理状态。进一步地,代码漏洞的处理状态可以包括两类处理状态,分别称为第一类处理状态和第二类处理状态;第一类处理状态可以触发对该代码漏洞进行跟踪处理;第二类处理状态可以指示该代码漏洞不需要进行跟踪处理。
45.在上述情况下,针对扫描得到的上述目标智能合约的合约代码中包含的代码漏洞,可以确定该代码漏洞是否包含在与该合约代码对应的漏洞列表中。
46.如果上述漏洞列表中包含上述代码漏洞,则可以通过该漏洞列表,获取为该代码漏洞标记的处理状态。
47.在获取到为上述代码漏洞标记的处理状态的情况下,可以对该处理状态进行校验,确定该处理状态是否为上述第一类处理状态。
48.如果为上述代码漏洞标记的处理状态为上述第一类处理状态,则说明需要对该代码漏洞进行跟踪处理,因此可以通知与该代码漏洞对应的处理方对该代码漏洞进行处理,并监测是否获取到该代码漏洞的处理结果;而在获取到该处理方对该代码漏洞的处理结果时,可以认为已经完成对该代码漏洞的处理,因此可以将该代码漏洞的处理状态更新为上述第二类处理状态。
49.在以上技术方案中,一方面,由于在与智能合约代码对应的漏洞扫描条件被满足的情况下,可以通过对智能合约代码进行安全扫描,得到智能合约代码中包含的代码漏洞,并通过所维护的漏洞列表,确定出智能合约代码中包含的已知的代码漏洞和未知的代码漏洞,因此,可以使开发人员和维护人员获知智能合约代码中包含的未知的代码漏洞。
50.另一方面,针对智能合约代码中包含的代码漏洞,可以根据所维护的漏洞列表中记录的为该代码漏洞标记的处理状态,在该代码漏洞的处理状态为触发进行跟踪处理的第一类处理状态时,对该代码漏洞进行跟踪处理,即通知对应的处理方对该代码漏洞进行处理,并在获取到对应的处理结果时,将该代码漏洞的处理状态更新为不需要进行跟踪处理的第二类处理状态,这样,可以使在智能合约代码中扫描得到的代码漏洞被跟踪处理,从而可以提高智能合约的安全性。
51.请参见图2,图2是本说明书一示例性实施例示出的一种智能合约代码漏洞处理系统的示意图。
52.如图2所示,在上述智能合约代码漏洞处理系统中,可以包括用于维护智能合约代码的合约代码库、用于对智能合约代码进行安全扫描的代码管理平台,以及用于对智能合约代码中包含的代码漏洞进行处理的漏洞处理平台。
53.具体地,上述代码管理平台可以从合约代码库中获取满足漏洞扫描条件的智能合约的合约代码,并通过对该合约代码进行安全扫描,例如:利用静态分析工具drana对该合约代码进行扫描,得到该合约代码中包含的代码漏洞。
54.上述代码管理平台可以将与上述合约代码对应的扫描结果提交给上述漏洞处理平台,从而使该漏洞处理平台可以获取到该合约代码中包含的代码漏洞,并根据所维护的漏洞列表中记录的为该代码漏洞标记的处理状态,对该代码漏洞进行相应的处理。
55.在实际应用中,上述合约代码库、上述代码管理平台和上述漏洞处理平台可以部署在同一台电子设备(例如:计算机、服务器等),也可以部署在不同的电子设备(例如:服务器集群中的不同的服务器)上,本说明书对此不作限制。
56.请参见图3,图3是本说明书一示例性实施例示出的一种智能合约代码漏洞处理方法的流程图。
57.上述智能合约代码漏洞处理方法可以应用于如图2所示的智能合约代码漏洞处理系统;该智能合约代码漏洞处理方法具体可以包括以下步骤:
58.步骤301:在目标智能合约的合约代码满足漏洞扫描条件时,对所述合约代码执行安全扫描得到所述合约代码中包含的代码漏洞。
59.针对需要对其执行漏洞处理的智能合约(可称为目标智能合约),首先可以获取该目标智能合约的合约代码中包含的代码漏洞。
60.具体地,可以先检测上述目标智能合约的合约代码是否满足漏洞扫描条件,后续,可以在该合约代码满足漏洞扫描条件时,对该合约代码执行安全扫描,得到该合约代码中包含的代码漏洞。
61.在实际应用中,如果代码发生更新,那么既有可能修复了该代码中原有的代码漏洞,也有可能在该代码中引入了新的代码漏洞,因此可以对该代码进行安全扫描,得到该代码中包含的代码漏洞;如果代码被执行,该代码中的代码漏洞可能会造成影响,导致该代码的执行结果不符合预期,因此也可以对该代码进行安全扫描,得到该代码中包含的代码漏洞。或者,为了及时发现代码中包含的代码漏洞,可以按照预设的时间周期,周期性地对该代码进行安全扫描,得到该代码中包含的代码漏洞;其中,该时间周期具体可以由技术人员预先设置。
62.也即,在示出的一种实施方式中,对于上述目标智能合约的合约代码而言,上述漏洞扫描条件可以包括以下示出的任意一种:该合约代码发生更新;该合约代码被调用;当前时刻满足针对该合约代码周期性地进行漏洞扫描的时刻。此外,还可以在此基础上进一步地进行改进,例如:将漏洞扫描条件设置为该合约代码被调用的次数是100的整数倍,等等;是否接收到安全扫描指令、目标代码容量是否达到预设阈值等也可以作为漏洞扫描条件;本说明书对此不作限制。
63.在实际应用中,也可以混合使用上述漏洞扫描条件中的多种,例如:对于一份app开发代码,可以预设每隔一周对其进行一次安全扫描,并设定每次该app开发代码被修改时对其进行一次安全扫描,等等。
64.在对上述目标智能合约的合约代码进行安全扫描时,具体可以通过语法检查、静态分析、执行测试、模糊测试等方式,对该合约代码进行安全扫描。
65.举例来说,如果上述目标智能合约的合约代码是未经编译的代码文本,那么上述安全扫描就可以包括语法检查的环节,通过检查上述代码文本是否符合对应编程开发语言的语法规范,确定该合约代码中是否存在某些特殊语法结构可能导致的代码漏洞;如果上述目标智能合约的合约代码是经过编译后的可执行程序,那么上述安全扫描可以包括模糊测试的环节,通过向该合约代码提供非预期的输入,并监视异常的执行结果,发现该合约代码中包含的代码漏洞。
66.步骤302:确定与所述合约代码对应的漏洞列表中是否包含所述代码漏洞;其中,所述漏洞列表中的代码漏洞被标记了处理状态;所述处理状态包括触发对所述代码漏洞进行跟踪处理的第一类处理状态,和指示所述代码漏洞不需要进行跟踪处理的第二类处理状态。
67.在实际应用中,为了便于对代码进行漏洞处理,可以维护与该代码对应的漏洞列表。其中,该漏洞列表中可以记录该代码中包含的代码漏洞,以及为各个代码漏洞标记的处理状态。
68.进一步地,代码漏洞的处理状态可以包括两类处理状态,分别称为第一类处理状态和第二类处理状态。其中,第一类处理状态可以触发对该代码漏洞进行跟踪处理,即如果某个代码漏洞被标记为第一类处理状态,则说明可以对该代码漏洞进行跟踪处理;第二类处理状态可以指示该代码漏洞不需要进行跟踪处理,即如果某个代码漏洞被标记为第二类处理状态,则说明不需要对该代码漏洞进行跟踪处理。
69.如下表1所示,为一种漏洞列表的示例:
70.代码漏洞处理状态代码漏洞1第二类处理状态代码漏洞2第一类处理状态
…………
71.表1
72.在上表1中,代码漏洞1被标记为第二类处理状态;代码漏洞2被标记为第一类处理状态;以此类推。
73.在实际应用中,上述漏洞列表既可以是文本形式的列表,也可以是关系型数据库或者非关系型数据库;本说明书对此不作限制。
74.举例来说,对于一系列存在相互依存或者关联关系的漏洞而言,可以利用图论的相关思想,采用图数据库的方式实现上述已知漏洞列表;对于不强调漏洞彼此之间的关联,但需要通过多标签的方式管理的情况,则可以采用sql数据库实现上述已知漏洞列表。
75.在上述情况下,针对获取到的上述目标智能合约的合约代码中包含的代码漏洞(该合约代码中包含的代码漏洞可能仅有一个,也可能有多个,下面以其中任一代码漏洞为例),可以确定该代码漏洞是否包含在与该合约代码对应的漏洞列表中。
76.具体地,可以通过特征匹配或者全文匹配的方式,确定上述漏洞列表中是否包含上述代码漏洞。
77.步骤303:如果所述漏洞列表中包含所述代码漏洞,获取为所述代码漏洞标记的处
理状态。
78.如果上述漏洞列表中包含上述代码漏洞,则可以通过该漏洞列表,获取为该代码漏洞标记的处理状态。
79.步骤304:校验所述处理状态是否为所述第一类处理状态;如果所述处理状态为所述第一类处理状态,通知与所述代码漏洞对应的处理方对所述代码漏洞进行处理,并在获取到所述处理方对所述代码漏洞的处理结果时,将所述代码漏洞的处理状态更新为所述第二类处理状态。
80.在获取到为上述代码漏洞标记的处理状态的情况下,可以对该处理状态进行校验,确定该处理状态是否为上述第一类处理状态。
81.如果为上述代码漏洞标记的处理状态为上述第一类处理状态,则说明需要对该代码漏洞进行跟踪处理,因此可以通知与该代码漏洞对应的处理方对该代码漏洞进行处理,并监测是否获取到该代码漏洞的处理结果;而在获取到该处理方对该代码漏洞的处理结果时,可以认为已经完成对该代码漏洞的处理,因此可以将该代码漏洞的处理状态更新为上述第二类处理状态。
82.在实际应用中,上述处理方具体可以是与负责管理上述目标智能合约的合约代码的人员对应的客户端,例如:与该合约代码的开发人员对应的代码开发环境客户端,与该合约代码的管理人员对应的自动化办公客户端,以及与该合约代码的管理人员对应的电子邮箱客户端,等等。
83.具体地,可以通过短信、电子邮件或者即时通讯消息等等,向上述处理方发送指示对上述代码漏洞进行处理的通知消息,从而使该处理方在接收到该通知消息时,可以知晓该代码漏洞,并对该代码漏洞进行相应的处理。
84.在实际应用中,可以根据在漏洞处理过程中对代码漏洞执行的操作,对上述第一类处理状态和上述第二类处理状态进行具体地划分。
85.请参见图4,图4是本说明书一示例性实施例示出的一种代码漏洞的处理状态的示意图。
86.如图4所示,上述第一类处理状态具体可以包括:新上报状态;重复上报状态;和/或,待处理状态;上述第二类处理状态具体可以包括:误报状态;忽略状态;已修复状态;和/或,关闭状态。
87.其中,对于从上述目标智能合约的合约代码中获取到的,但上述漏洞列表中的不包含的代码漏洞而言,由于通常需要对该代码漏洞进行跟踪处理,因此,可以先将该代码漏洞标记为新上报状态,以由安全管控方针对该代码漏洞的进一步的处理进行确认,并在该安全管控方确认后,将该代码漏洞由新上报状态更新为待处理状态。然而,如果该代码漏洞属于误报,则可以将该代码漏洞由新上报状态更新为误报状态;如果该安全管控方确认该代码漏洞不需要进一步的处理,则可以将该代码漏洞由新上报状态更新为忽略状态。
88.在实际应用中,上述安全管控方可以是与负责管理代码漏洞的人员对应的客户端,其中,负责管理代码漏洞的人员可以评估代码漏洞是否需要进一步的处理,并评判针对代码漏洞的处理结果是否正确,等等。由该安全管控方针对代码漏洞的进一步的处理进行确认,可以发现一部分误报的、不需要处理的代码漏洞,也可以忽略一部分影响较小的代码漏洞,即不对这些代码漏洞进行处理,从而可以减少漏洞处理的工作量;由该安全管控方针
对代码漏洞的处理结果进行确认,可以保证漏洞处理的正确性,避免由于错误的处理结果而导致的异常情况。
89.对于需要进行跟踪处理的代码漏洞而言,可以在获取到与该代码漏洞对应的处理方对该代码漏洞的处理结果时,将该代码漏洞的处理状态由上述第一类处理状态更新为已修复状态(通常是由待处理状态更新为已修复状态)。
90.如果从上述目标智能合约的合约代码中获取到的代码漏洞,在上述漏洞列表中记录的处理状态为已修复状态,则说明该代码漏洞重新出现,因此,可以将该代码漏洞由已修复状态更新为重复上报状态,以由上述安全管控方针对该代码漏洞的进一步的处理进行确认,并在该安全管控方确认后,将该代码漏洞由重复上报状态更新为待处理状态。与前述类似地,如果该代码漏洞属于误报,则可以将该代码漏洞由重复上报状态更新为误报状态;如果该安全管控方确认该代码漏洞不需要进一步的处理,则可以将该代码漏洞由重复上报状态更新为忽略状态。
91.对于上述漏洞列表中记录的处理状态为新上报状态或者重复上报状态的代码漏洞而言,可以确定该代码漏洞是否仍然包含在对上述目标智能合约的合约代码重新执行安全扫描得到的代码漏洞中,如果不包含,则说明该合约代码中已经不存在该代码漏洞,因此也就不再需要对该代码漏洞进行跟踪处理,此时,可以将该代码漏洞由新上报状态或者重复上报状态更新为关闭状态,以进一步地减少漏洞处理的工作量。
92.结合如图4所示的代码漏洞的处理状态,参见图5,图5是本说明书一示例性实施例示出的另一种智能合约代码漏洞处理方法的流程图。
93.上述智能合约代码漏洞处理方法可以视为如图3所示的智能合约代码漏洞处理方法的具体实现;该智能合约代码漏洞处理方法具体可以包括以下步骤:
94.步骤501:在目标智能合约的合约代码满足漏洞扫描条件时,对所述合约代码执行安全扫描得到所述合约代码中包含的代码漏洞。
95.步骤502:确定与所述合约代码对应的漏洞列表中是否包含所述代码漏洞。
96.步骤503:如果所述漏洞列表中包含所述代码漏洞,获取为所述代码漏洞标记的处理状态。
97.步骤504:如果为所述代码漏洞标记的处理状态为第一类处理状态,通知与所述代码漏洞对应的处理方对所述代码漏洞进行处理,并在获取到所述处理方对所述代码漏洞的处理结果时,将所述代码漏洞的处理状态更新为已修复状态。
98.上述第一类处理状态具体可以包括下述的待处理状态。
99.上述第二类处理状态具体可以包括指示代码漏洞已经被处理的已修复状态。在这种情况下,在获取到上述处理方对上述代码漏洞的处理结果时,可以将该代码漏洞的处理状态更新为已修复状态,表示已经完成对该代码漏洞的处理。
100.在示出的一种实施方式中,在获取到上述处理方对上述代码漏洞的处理结果时,可以先由上述安全管控方针对该处理结果进行确认;而在获取到该安全管控方针对该处理结果的确认时,再将该代码漏洞的处理状态更新为已修复状态。
101.步骤505:如果为所述代码漏洞标记的处理状态为已修复状态,将所述代码漏洞由已修复状态更新为重复上报状态,以由安全管控方针对所述代码漏洞的进一步的处理进行确认。
102.如果通过上述漏洞列表,获取到的上述代码漏洞标记的处理状态不为第一类处理状态,而是已修复状态,则说明该代码漏洞重新出现,因此可以将该代码漏洞由已修复状态更新为重复上报状态。其中,重复上报状态属于上述第一类处理状态,可以指示需要对该代码漏洞进行跟踪处理。
103.在上述情况下,上述安全管控方可以针对重复上报状态的上述代码漏洞的进一步的处理进行确认。
104.步骤506:如果所述漏洞列表中不包含所述代码漏洞,将所述代码漏洞添加至所述漏洞列表,并将所述代码漏洞标记为新上报状态,以由安全管控方针对所述代码漏洞进一步的处理进行确认。
105.如果上述漏洞列表中不包含上述代码漏洞,一方面,可以将该代码漏洞添加至该漏洞列表,以对该代码漏洞和其处理状态进行记录,便于后续对该代码漏洞的处理;另一方面,可以将该代码漏洞标记为新上报状态。其中,新上报状态属于上述第一类处理状态,可以指示需要对该代码漏洞进行跟踪处理。
106.在上述情况下,上述安全管控方可以针对新上报状态的上述代码漏洞的进一步的处理进行确认。
107.步骤507:响应于所述安全管控方确认所述代码漏洞需要进一步的处理,将所述代码漏洞由新上报状态或者重复上报状态更新为待处理状态。
108.如果上述安全管控方确认新上报状态的上述代码漏洞需要进一步的处理,则可以将该代码漏洞由新上报状态更新为待处理状态。
109.类似地,如果上述安全管控方确认重复上报状态的上述代码漏洞需要进一步的处理,则可以将该代码漏洞由重复上报状态更新为待处理状态。
110.步骤508:响应于所述安全管控方确认所述代码漏洞为误报的代码漏洞,将所述代码漏洞由新上报状态或者重复上报状态更新为误报状态。
111.如果上述安全管控方确认新上报状态的上述代码漏洞,实际上是误报的代码漏洞,则可以将该代码漏洞由新上报状态更新为误报状态。
112.类似地,如果上述安全管控方确认重复上报状态的上述代码漏洞,实际上是误报的代码漏洞,则可以将该代码漏洞由重复上报状态更新为误报状态。
113.其中,误报状态属于上述第二类处理状态,可以指示代码漏洞属于误报,不需要进行跟踪处理。
114.步骤509:响应于所述安全管控方确认所述代码漏洞为不需要进一步的处理,将所述代码漏洞由新上报状态或者重复上报状态更新为忽略状态。
115.如果上述安全管控方确认新上报状态的上述代码漏洞,是可以忽略的代码漏洞,则可以将该代码漏洞由新上报状态更新为忽略状态。
116.类似地,如果上述安全管控方确认重复上报状态的上述代码漏洞,是可以忽略的代码漏洞,则可以将该代码漏洞由重复上报状态更新为忽略状态。
117.其中,忽略状态属于上述第二类处理状态,可以指示代码漏洞可以忽略,不需要进行跟踪处理。
118.步骤510:获取所述漏洞列表中包含的新上报状态或者重复上报状态的目标代码漏洞,并确定所述目标代码漏洞是否包含在对所述合约代码执行安全扫描得到的所述代码
漏洞之中;如果否,将所述目标代码漏洞由新上报状态或者重复上报状态更新为关闭状态。
119.对于上述漏洞列表中包含的新上报状态或者重复上报状态的代码漏洞而言,针对其中任一代码漏洞(称为目标代码漏洞),可以在尚未获取到上述安全管控方针对该目标代码漏洞的进一步的处理的确认时,先确定该目标代码漏洞是否仍然包含在对上述目标智能合约的合约代码重新执行安全扫描得到的代码漏洞中。
120.如果包含,则说明仍然需要对上述目标代码漏洞进行跟踪处理,因此可以保留该目标代码漏洞的新上报状态或者重复上报状态。
121.如果不包含,则说明上述目标智能合约的合约代码中已经不存在该目标代码漏洞,因此也就不再需要对该目标代码漏洞进行跟踪处理,此时,不管上述安全管控方是否确认,都可以将该目标代码漏洞由新上报状态或者重复上报状态更新为关闭状态。其中,关闭状态属于上述第二类处理状态,可以指示停止对代码漏洞进行跟踪处理。
122.在以上技术方案中,一方面,由于在与智能合约代码对应的漏洞扫描条件被满足的情况下,可以通过对智能合约代码进行安全扫描,得到智能合约代码中包含的代码漏洞,并通过所维护的漏洞列表,确定出智能合约代码中包含的已知的代码漏洞和未知的代码漏洞,因此,可以使开发人员和维护人员获知智能合约代码中包含的未知的代码漏洞。
123.另一方面,针对智能合约代码中包含的代码漏洞,可以根据所维护的漏洞列表中记录的为该代码漏洞标记的处理状态,在该代码漏洞的处理状态为触发进行跟踪处理的第一类处理状态时,对该代码漏洞进行跟踪处理,即通知对应的处理方对该代码漏洞进行处理,并在获取到对应的处理结果时,将该代码漏洞的处理状态更新为不需要进行跟踪处理的第二类处理状态,这样,可以使在智能合约代码中扫描得到的代码漏洞被跟踪处理,从而可以提高智能合约的安全性。
124.与前述智能合约代码漏洞处理方法的实施例相对应,本说明书还提供了智能合约代码漏洞处理装置的实施例。
125.本说明书智能合约代码漏洞处理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书智能合约代码漏洞处理装置所在电子设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该智能合约代码漏洞处理的实际功能,还可以包括其他硬件,对此不再赘述。
126.请参考图7,图7是本说明书一示例性实施例示出的一种智能合约代码漏洞处理装置的框图。该智能合约代码漏洞处理装置70可以应用于如图6所示的电子设备;该装置70可以包括:
127.扫描模块701,在目标智能合约的合约代码满足漏洞扫描条件时,对所述合约代码执行安全扫描得到所述合约代码中包含的代码漏洞;
128.确定模块702,确定与所述合约代码对应的漏洞列表中是否包含所述代码漏洞;其中,所述漏洞列表中的代码漏洞被标记了处理状态;所述处理状态包括触发对所述代码漏洞进行跟踪处理的第一类处理状态,和指示所述代码漏洞不需要进行跟踪处理的第二类处理状态;
129.获取模块703,如果所述漏洞列表中包含所述代码漏洞,获取为所述代码漏洞标记的处理状态;
130.处理模块704,校验所述处理状态是否为所述第一类处理状态;如果所述处理状态为所述第一类处理状态,通知与所述代码漏洞对应的处理方对所述代码漏洞进行处理,并在获取到所述处理方对所述代码漏洞的处理结果时,将所述代码漏洞的处理状态更新为所述第二类处理状态。
131.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
132.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
133.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
134.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
135.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
136.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
137.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
138.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围
内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
139.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
140.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
141.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献