CN109446814A - 一种漏洞检测方法及装置 - Google Patents
一种漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN109446814A CN109446814A CN201811158050.7A CN201811158050A CN109446814A CN 109446814 A CN109446814 A CN 109446814A CN 201811158050 A CN201811158050 A CN 201811158050A CN 109446814 A CN109446814 A CN 109446814A
- Authority
- CN
- China
- Prior art keywords
- file
- detected
- logical expression
- loophole
- test result
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种漏洞检测方法及装置。所述方法包括:获取待检测文件;按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;对每个逻辑表达式进行测试,得到测试结果;根据所述测试结果,确定所述待检测文件是否存在漏洞;其中,所述待检测文件中包含可执行代码。应用本申请实施例提供的方案,能够提高对待检测文件进行漏洞检测时的准确性。
Description
技术领域
本申请涉及安全检测技术领域,特别是涉及一种漏洞检测方法及装置。
背景技术
随着计算机技术的发展,用户可以通过包含可执行代码的文件来实现某些预定应用。当这些文件被电子设备执行时能够实现预定功能。对这些文件中的漏洞进行检测,能够尽可能避免损失,提高安全性。例如,基于区块链系统的以太坊平台,可以通过智能合约文件发布新型应用,区块链上的各个节点均可以通过智能合约文件实现对新型应用的使用。但是,智能合约文件的执行大多数还涉及用户之间的金钱转账,所以智能合约中的漏洞可能会造成严重后果。
在对待检测漏洞的文件进行漏洞检测时,通常采用漏洞特征匹配的方式。具体的,可以对待检测漏洞的文件中的代码进行检测,当检测到存在与漏洞特征代码匹配的代码时,认为文件中存在漏洞。但是这种方式只能检测出已知的安全漏洞,无法检测可能存在的未知安全漏洞,对文件漏洞的检测准确性不够高。
发明内容
本申请实施例的目的在于提供了一种漏洞检测方法及装置,以提高对待检测文件进行漏洞检测时的准确性。
第一方面,本申请实施例提供了一种漏洞检测方法,所述方法包括:
获取待检测文件;其中,所述待检测文件中包含可执行代码;
按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
对每个逻辑表达式进行测试,得到测试结果;
根据所述测试结果,确定所述待检测文件是否存在漏洞。
可选的,所述按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式的步骤,包括:
按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;
根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。
可选的,所述对每个逻辑表达式进行测试,得到测试结果的步骤,包括:
针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;
采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。
可选的,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;
所述采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果的步骤,包括:
将所述输入值输入对应的逻辑表达式,得到参考输出结果;
当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;
当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。
可选的,所述获取待检测文件的步骤,包括:
获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。
可选的,当根据所述测试结果确定所述待检测文件存在漏洞时,所述方法还包括:
针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞特征;
根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;
从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。
第二方面,本申请实施例提供了一种漏洞检测装置,所述装置包括:
获取模块,用于获取待检测文件;其中,所述待检测文件中包含可执行代码;
第一确定模块,用于按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
测试模块,用于对每个逻辑表达式进行测试,得到测试结果;
第二确定模块,用于根据所述测试结果,确定所述待检测文件是否存在漏洞。
可选的,所述第一确定模块,具体用于:
按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;
根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。
可选的,所述测试模块,具体用于:
针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;
采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。
可选的,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;
所述测试模块,采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果时,包括:
将所述输入值输入对应的逻辑表达式,得到参考输出结果;
当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;
当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。
可选的,所述获取模块,具体用于:
获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。
可选的,所述装置还包括:评分模块;所述评分模块,用于:
当根据所述测试结果确定所述待检测文件存在漏洞时,针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞类型;
根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;
从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本申请实施例第一方面提供的漏洞检测方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面提供的漏洞检测方法。
本申请实施例提供的漏洞检测方法及装置,可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的漏洞检测方法的一种流程示意图;
图2A为本申请实施例中可执行代码的一种示意图;
图2B为图2A中可执行代码对应的执行流程图;
图3为本申请实施例中漏洞检测系统的一种架构示意图;
图4为本申请实施例提供的漏洞检测装置的一种结构示意图;
图5为本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提高对待检测文件进行漏洞检测时的准确性,本申请实施例提供了一种漏洞检测方法及装置。下面通过具体实施例,对本申请进行详细说明。
图1为本申请实施例提供的漏洞检测方法的一种流程示意图。该方法应用于具有计算处理能力的电子设备。该电子设备包括计算机、平板电脑、笔记本电脑、智能手机、服务器等设备。该方法包括如下步骤:
步骤S101:获取待检测文件。
其中,待检测文件中包含可执行代码。可执行代码是机器能够直接执行的代码,可以是将目标代码连接后形成的代码。包含可执行代码的文件可以称为可执行文件。
步骤S102:按照可执行代码的执行逻辑,确定针对待检测文件中各个叶子节点的逻辑表达式。
其中,按照可执行代码的执行逻辑,可以从待检测文件中确定各个节点和对应的子节点。叶子节点可以理解为终端节点,是不包含子节点的节点。
待检测文件可以包括一个或多个叶子节点,每个叶子节点对应存在一个逻辑表达式,即待检测文件可以包括一个或多个逻辑表达式。
步骤S103:对每个逻辑表达式进行测试,得到测试结果。
其中,测试结果可以包括逻辑表达式存在漏洞或不存在漏洞的结果。
对每个逻辑表达式进行测试时,可以将不同的值输入逻辑表达式进行判断。
步骤S104:根据上述测试结果,确定待检测文件是否存在漏洞。
本步骤具体可以为,当测试结果表明逻辑表达式存在漏洞时,确定待检测文件存在漏洞。也可以为,当根据检测结果确定漏洞比例大于预设比例阈值时,确定待检测文件存在漏洞;或者,当根据检测结果确定漏洞个数大于预设数量时,确定待检测文件存在漏洞。漏洞比例为:存在漏洞的逻辑表达式的数量与所有逻辑表达式的数量的比例。预设比例阈值和预设数量均为预设值。
由上述内容可知,本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。
在确定待检测文件存在漏洞时,还可以发出告警;也可以对待检测文件中的漏洞进行修复。在对待检测文件中的漏洞进行修复时,具体可以根据存在漏洞的逻辑表达式对待检测文件进行修复。
在本申请的另一实施例中,基于图1所示实施例,步骤S102,按照可执行代码的执行逻辑,确定针对待检测文件中各个叶子节点的逻辑表达式的步骤,可以包括步骤1a~2a。
步骤1a:按照可执行代码的执行逻辑,生成待检测文件的可执行代码对应的执行流程图。
在本步骤中,可以将待检测文件中的可执行代码编译成字节码格式,按照字节码格式的执行逻辑,生成待检测文件的可执行代码对应的执行流程图。
执行流程图也可以称为控制流程图。
步骤2a:根据上述执行流程图,生成针对待检测文件中各个叶子节点的逻辑表达式。
例如,参见图2A和图2B。图2A为待检测文件中的可执行代码的一种示意图,图2B为根据图2A中可执行代码的执行逻辑生成的执行流程图。从图2B中可以看出,该部分中包括5个节点,分别为:Input与256比较、Input*4与1024比较、throw()、POP和never_reached()。其中有3个节点为叶子节点,分别为throw()、POP和never_reached()。针对每个叶子节点,均可以生成对应的逻辑表达式。例如,叶子节点never_reached()的逻辑表达式为(Input<256)^(Input*4>1024),叶子节点throw()的逻辑表达式为Input>256。在实际应用中,逻辑表达式的复杂度可能更高。
本实施例可以根据待检测文件的执行流程图生成各个叶子节点的逻辑表达式,能更准确地生成叶子节点的逻辑表达式。
在本申请的另一实施例中,基于图1所示实施例,步骤S103,对每个逻辑表达式进行测试,得到测试结果的步骤,具体可以包括步骤1b和2b。
步骤1b:针对每个逻辑表达式,确定与该逻辑表达式对应的输入参量。
其中,上述输入参量用于对逻辑表达式进行测试。输入参量可以包括一组或多组输入值。
在确定输入参量时,分别针对每个逻辑表达式进行确定。例如,待检测文件存在3个逻辑表达式,则可以针对这3个逻辑表达式,分别确定3个输入参量。
在一种实施方式中,输入参量可以包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果。
例如,针对叶子节点throw()的逻辑表达式Input>256,可以在0~512之间确定输入值,当输入值为0~256时,确定标准输出结果为throw();当输入值为257~512时,确定标准输出结果为非throw()。
步骤2b:采用输入参量对对应的逻辑表达式进行测试,得到测试结果。
当输入参量包括输入值时,本步骤具体可以将输入值输入对应的逻辑表达式,得到输出结果,判断输出结果与逻辑表达式的逻辑是否一致,如果一致,则确定得到不存在漏洞的测试结果;如果不一致,则确定得到存在漏洞的测试结果。
当输入参量可以包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果时,本步骤具体可以包括步骤2b-1和2b-2:
步骤2b-1:将输入值输入对应的逻辑表达式,得到参考输出结果。
其中,输入值对应的逻辑表达式,可以理解为输入值所在的输入参量对应的逻辑表达式。
步骤2b-2:当参考输出结果与标准输出结果不符时,确定得到存在漏洞的测试结果;当参考输出结果与标准输出结果相符时,确定得到不存在漏洞的测试结果。
在确定输入参量时即确定输入值与对应的标准输出结果,在得到参考输出结果时可以直接将参考输出结果与标准输出结果进行比较,得到是否存在漏洞的测试结果。这种方式更简便易实施。
例如,可以根据当前已知的攻击方法,确定针对每个逻辑表达式的不同的输入值,对每个逻辑表达式进行模糊(fuzzing)测试,验证每个叶子节点的逻辑表达式的真伪。假设针对叶子节点never_reached()的逻辑表达式(Input<256)^(Input*4>1024),当输入值为0x000000时,该逻辑表达式得到的结果为不可达,则说明该逻辑表达式的逻辑存在漏洞。
当确定逻辑表达式存在漏洞时,还可以根据输入参量对该逻辑表达式进行再次验证,确保漏洞真实存在。
可见,本实施例可以针对每个逻辑表达式确定对应的输入参量,采用该输入参量对对应的逻辑表达式进行测试,得到测试结果。这种测试方式能够更准确地实现对每个逻辑表达式真伪的测试。
在本申请的另一实施例中,基于图1所示方法实施例,步骤S101,获取待检测文件的步骤,可以包括:
获取区块链系统中的新增区块数据,从新增区块数据中获取新增智能合约,作为待检测文件。
其中,智能合约文件支持合约地址、合约字节码、合约源代码、松露(truffle)工程文件等。本实施例可以对区块链系统中的智能合约进行漏洞检测,提高智能合约的安全性。
在获取新增区块数据时,可以预先在区块链系统中建立以太坊节点,通过建立的以太坊节点来获取区块链系统中的新增区块数据。当区块链系统中出现新增区块数据时,该新增区块数据会同步给每个以太坊节点。通过这种方式能够更及时地对新增智能合约进行漏洞检测,实现对智能合约的实时检测。
在一种实施方式中,也可将作为检测特例的智能合约作为待检测文件。
在本申请的另一实施例中,基于图1所示实施例,当根据测试结果确定待检测文件存在漏洞时,该方法还可以包括以下步骤1c~3c所示的针对待检测文件的评分过程。
步骤1c:针对每个存在漏洞的逻辑表达式分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定逻辑表达式的漏洞类型。
其中,漏洞特征可以以特征表达式的形式表示。当逻辑表达式与漏洞特征匹配成功时,确定该逻辑表达式存在与该漏洞特征对应的漏洞类型。当逻辑表达式与漏洞特征匹配失败时,确定该逻辑表达式不存在与该漏洞特征对应的漏洞类型。
例如,在智能合约中漏洞类型可以包括整数溢出漏洞、交易顺序漏洞等。
步骤2c:根据各个逻辑表达式的漏洞类型,确定待检测文件的漏洞信息。
其中,漏洞信息可以包括漏洞个数、漏洞等级、漏洞详情、安全建议等方面。待检测文件的漏洞信息根据该待检测文件的所有存在漏洞的逻辑表达式的漏洞类型确定。
步骤3c:从预设的各个漏洞信息与评分之间的对应关系中,将该漏洞信息对应的评分确定为待检测文件的评分。
其中,各个漏洞信息与评分之间的对应关系,可以为根据已检测到漏洞的文件中出现的各类漏洞的分布情况预先确定。评分可以为预设范围,例如可以为0~5分。
在确定待检测文件的评分之后,还可以根据漏洞信息和评分生成检测报告。
本实施例中,可以在确定待检测文件存在漏洞时,确定逻辑表达式的漏洞类型,进而得到漏洞信息,并确定待检测文件的评分,实现对待检测文件更详细的评价,供用户参考。
下面结合具体实例对本申请再做详细说明。
参见图3,该图3为本申请实施例提供的应用于区块链系统的漏洞检测系统的一种架构示意图。
在漏洞检测系统包括三大部分:智能合约输入部分、静态检测部分、检测结果输出部分。智能合约输入部分包括实时自动输入和检测特例输入。实时自动输入通过以太坊自建节点获得区块链系统中的新增智能合约。以太坊自建节点在获取到新增区块数据时,可以将新增区块数据存储至数据中心。合约数据清洗可以对新增区块数据进行清洗,去除重复和无用数据,得到实时的新增智能合约。也可以由企业提供检测特例作为待检测文件。
静态检测部分包括执行流程图生成器、逻辑检测和漏洞类型检测。执行流程图生成器用于生成执行流程图。逻辑检测用于根据执行流程图生成逻辑表达式,并对逻辑表达式进行逻辑真伪的检测。漏洞类型检测包括整数溢出检测、交易顺序依赖检测等。检测结果输出部分包括:根据静态检测部分的结果生成漏洞详情分析报告,并可以对智能合约进行评分。
当需要检测智能合约是否存在漏洞时,直接调用接口即可以得到漏洞详情分析报告。
图4为本申请实施例提供的漏洞检测装置的一种结构示意图。与图1所示方法实施例相对应,应用于具有计算处理能力的电子设备。所述装置包括:
获取模块401,用于获取待检测文件;其中,所述待检测文件中包含可执行代码;
第一确定模块402,用于按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
测试模块403,用于对每个逻辑表达式进行测试,得到测试结果;
第二确定模块404,用于根据所述测试结果,确定所述待检测文件是否存在漏洞。
在本申请的另一实施例中,基于图4所示实施例,第一确定模块402具体用于:
按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;
根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。
在本申请的另一实施例中,基于图4所示实施例,测试模块403具体用于:
针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;
采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。
在本申请的另一实施例中,基于图4所示实施例,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;
测试模块403,采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果时,包括:
将所述输入值输入对应的逻辑表达式,得到参考输出结果;
当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;
当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。
在本申请的另一实施例中,基于图4所示实施例,获取模块401具体用于:
获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。
在本申请的另一实施例中,基于图4所示实施例,上述装置还包括:评分模块(图中未示出);该评分模块,用于:
当根据所述测试结果确定所述待检测文件存在漏洞时,针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞类型;
根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;
从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。
由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
图5为本申请实施例提供的一种电子设备的结构示意图。该电子设备包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现本申请实施例提供的漏洞检测方法。该方法包括:
获取待检测文件;其中,所述待检测文件中包含可执行代码;
按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
对每个逻辑表达式进行测试,得到测试结果;
根据所述测试结果,确定所述待检测文件是否存在漏洞。
上述电子设备提到的通信总线504可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口502用于上述电子设备与其他设备之间的通信。
存储器503可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器503还可以是至少一个位于远离前述处理器的存储装置。
上述处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的漏洞检测方法。该方法包括:
获取待检测文件;其中,所述待检测文件中包含可执行代码;
按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
对每个逻辑表达式进行测试,得到测试结果;
根据所述测试结果,确定所述待检测文件是否存在漏洞。
本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种漏洞检测方法,其特征在于,所述方法包括:
获取待检测文件;其中,所述待检测文件中包含可执行代码;
按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
对每个逻辑表达式进行测试,得到测试结果;
根据所述测试结果,确定所述待检测文件是否存在漏洞。
2.根据权利要求1所述的方法,其特征在于,所述按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式的步骤,包括:
按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;
根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。
3.根据权利要求1或2所述的方法,其特征在于,所述对每个逻辑表达式进行测试,得到测试结果的步骤,包括:
针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;
采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。
4.根据权利要求3所述的方法,其特征在于,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;
所述采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果的步骤,包括:
将所述输入值输入对应的逻辑表达式,得到参考输出结果;
当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;
当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。
5.根据权利要求1所述的方法,其特征在于,所述获取待检测文件的步骤,包括:
获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。
6.根据权利要求1所述的方法,其特征在于,当根据所述测试结果确定所述待检测文件存在漏洞时,所述方法还包括:
针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞类型;
根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;
从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。
7.一种漏洞检测装置,其特征在于,所述装置包括:
获取模块,用于获取待检测文件;其中,所述待检测文件中包含可执行代码;
第一确定模块,用于按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;
测试模块,用于对每个逻辑表达式进行测试,得到测试结果;
第二确定模块,用于根据所述测试结果,确定所述待检测文件是否存在漏洞。
8.根据权利要求7所述的装置,其特征在于,所述第一确定模块,具体用于:
按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;
根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。
9.根据权利要求7或8所述的装置,其特征在于,所述测试模块,具体用于:
针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;
采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。
10.根据权利要求9所述的装置,其特征在于,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;
所述测试模块,采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果时,包括:
将所述输入值输入对应的逻辑表达式,得到参考输出结果;
当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;
当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811158050.7A CN109446814A (zh) | 2018-09-30 | 2018-09-30 | 一种漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811158050.7A CN109446814A (zh) | 2018-09-30 | 2018-09-30 | 一种漏洞检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109446814A true CN109446814A (zh) | 2019-03-08 |
Family
ID=65544601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811158050.7A Pending CN109446814A (zh) | 2018-09-30 | 2018-09-30 | 一种漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446814A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109948345A (zh) * | 2019-03-20 | 2019-06-28 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、系统 |
CN110489973A (zh) * | 2019-08-06 | 2019-11-22 | 广州大学 | 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN111222138A (zh) * | 2019-12-31 | 2020-06-02 | 阿尔法云计算(深圳)有限公司 | 算法校验方法、算法确权方法及装置 |
CN111753306A (zh) * | 2020-05-29 | 2020-10-09 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN112131573A (zh) * | 2020-09-14 | 2020-12-25 | 深信服科技股份有限公司 | 安全漏洞的检测方法、装置及存储介质 |
CN112286828A (zh) * | 2020-12-24 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
CN112380541A (zh) * | 2020-11-16 | 2021-02-19 | 深圳壹账通智能科技有限公司 | 智能合约的漏洞的检测方法、装置及计算机设备 |
CN113254931A (zh) * | 2021-05-28 | 2021-08-13 | 平安普惠企业管理有限公司 | 基于区块链的代码系统更新方法、装置、设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794401A (zh) * | 2015-04-15 | 2015-07-22 | 南京大学 | 一种静态分析辅助的符号执行漏洞检测方法 |
CN105204980A (zh) * | 2014-05-26 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 一种虚幻引擎软件的测试方法,及测试设备 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
-
2018
- 2018-09-30 CN CN201811158050.7A patent/CN109446814A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204980A (zh) * | 2014-05-26 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 一种虚幻引擎软件的测试方法,及测试设备 |
CN104794401A (zh) * | 2015-04-15 | 2015-07-22 | 南京大学 | 一种静态分析辅助的符号执行漏洞检测方法 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109948345A (zh) * | 2019-03-20 | 2019-06-28 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、系统 |
CN110766402B (zh) * | 2019-06-27 | 2021-09-03 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN110489973A (zh) * | 2019-08-06 | 2019-11-22 | 广州大学 | 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质 |
CN111222138A (zh) * | 2019-12-31 | 2020-06-02 | 阿尔法云计算(深圳)有限公司 | 算法校验方法、算法确权方法及装置 |
CN111753306A (zh) * | 2020-05-29 | 2020-10-09 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN111753306B (zh) * | 2020-05-29 | 2022-08-05 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN112131573A (zh) * | 2020-09-14 | 2020-12-25 | 深信服科技股份有限公司 | 安全漏洞的检测方法、装置及存储介质 |
CN112380541A (zh) * | 2020-11-16 | 2021-02-19 | 深圳壹账通智能科技有限公司 | 智能合约的漏洞的检测方法、装置及计算机设备 |
CN112286828A (zh) * | 2020-12-24 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
CN112286828B (zh) * | 2020-12-24 | 2021-07-06 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
CN113254931A (zh) * | 2021-05-28 | 2021-08-13 | 平安普惠企业管理有限公司 | 基于区块链的代码系统更新方法、装置、设备以及存储介质 |
CN113254931B (zh) * | 2021-05-28 | 2024-02-06 | 深圳点链科技有限公司 | 基于区块链的代码系统更新方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109446814A (zh) | 一种漏洞检测方法及装置 | |
CN108564181B (zh) | 电力设备故障检测与维修方法及终端设备 | |
CN101399710B (zh) | 一种协议格式异常检测方法及系统 | |
CN109491905A (zh) | 前端测试方法、装置及电子设备 | |
CN106604362B (zh) | 一种无线保真Wi-Fi扫描方法及移动终端 | |
CN107276851B (zh) | 一种节点的异常检测方法、装置、网络节点及控制台 | |
CN108075934A (zh) | 一种网络质量监控方法、装置及系统 | |
CN105095769A (zh) | 一种信息服务软件漏洞检测方法 | |
CN104182681B (zh) | 基于hook的iOS系统关键行为检测装置和方法 | |
CN105512045A (zh) | 一种应用程序的测试方法、装置及测试设备 | |
CN105653947A (zh) | 一种评估应用数据安全风险的方法及装置 | |
CN105117340B (zh) | 用于iOS浏览器应用质量评估的URL检测方法和装置 | |
CN110245077A (zh) | 一种程序异常的响应方法及设备 | |
KR20180079434A (ko) | 바이러스 데이터베이스 획득 방법 및 기기, 장비, 서버 그리고 시스템 | |
CN109254868A (zh) | 一种文件检测方法及装置 | |
CN106557419B (zh) | 程序的测试方法及装置 | |
CN109313541A (zh) | 用于显示和比较攻击遥测资源的用户界面 | |
CN106230775A (zh) | 防止攻击url规则库的方法以及装置 | |
Sen et al. | Towards an approach to contextual detection of multi-stage cyber attacks in smart grids | |
CN107392027A (zh) | 一种网站漏洞测试方法、测试系统、电子设备及存储介质 | |
CN102298112B (zh) | 一种可编程逻辑器件的测试方法及系统 | |
CN114048480A (zh) | 漏洞检测方法、装置、设备及存储介质 | |
CN106304084B (zh) | 信息处理方法及装置 | |
CN109586788B (zh) | 监控系统故障诊断方法、装置、计算机设备及存储介质 | |
CN109976828B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190308 |
|
RJ01 | Rejection of invention patent application after publication |