CN116450611A - 一种时序数据库安全的测试方法、装置及设备 - Google Patents
一种时序数据库安全的测试方法、装置及设备 Download PDFInfo
- Publication number
- CN116450611A CN116450611A CN202310414654.8A CN202310414654A CN116450611A CN 116450611 A CN116450611 A CN 116450611A CN 202310414654 A CN202310414654 A CN 202310414654A CN 116450611 A CN116450611 A CN 116450611A
- Authority
- CN
- China
- Prior art keywords
- time sequence
- instrumentation
- database
- sequence database
- file
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 103
- 238000000034 method Methods 0.000 claims abstract description 143
- 230000008569 process Effects 0.000 claims abstract description 75
- 238000012545 processing Methods 0.000 claims abstract description 67
- 230000002159 abnormal effect Effects 0.000 claims abstract description 43
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000005856 abnormality Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 2
- 230000002123 temporal effect Effects 0.000 claims 3
- 238000010998 test method Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000011076 safety test Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 8
- 238000003780 insertion Methods 0.000 description 8
- 230000037431 insertion Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000035772 mutation Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 241000555745 Sciuridae Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000009781 safety test method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书实施例公开了一种时序数据库安全的测试方法、装置及设备,该方法包括:对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件;生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息;基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种时序数据库安全的测试方法、装置及设备。
背景技术
数据是现代计算机基础发展的基石,而数据库则是数据存储的重要手段。随着大数据库时代的到来,以及云平台和物联网的兴起,时序数据库得到了广泛的应用。由于许多重要且敏感的信息都保存在时序数据库中,因此,时序数据库愈来愈成为有价值的攻击目标。一旦攻破时序数据库,入侵者则可以获得非常有价值的数据,因此,确保时序数据库的安全至关重要,而对时序数据库安全进行测试是确保时序数据库安全中重要方式之一。为此,需要提供一种更有效的针对时序数据库安全的测试方式。
发明内容
本说明书实施例的目的是提供一种更有效的针对时序数据库安全的测试方式,从而可以提供一个能够应用于时序数据库,并且可以自动地对时序数据库安全进行整体的测试的技术方案。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种时序数据库安全的测试方法,所述方法包括:对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件。生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息。基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
本说明书实施例提供的一种时序数据库安全的测试装置,时序数据库安全的测试装置,所述装置包括覆盖率收集组件、时序SQL语句生成组件、异常监控组件,其中:所述覆盖率收集组件,被配置为对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件,将所述插桩后的机器指令码文件提供给目标设备,并触发所述目标设备运行所述插桩后的机器指令码文件。所述时序SQL语句生成组件,被配置为生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中。所述覆盖率收集组件,被配置为通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,获取所述时序数据库中多组件的覆盖信息,并将所述覆盖信息传递给所述时序SQL语句生成组件。所述异常监控组件,被配置为通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息,并基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
本说明书实施例提供的一种时序数据库安全的测试设备,所述时序数据库安全的测试设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件。生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息。基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
本说明书实施例还提供了一种存储介质,所述存储介质用于存储计算机可执行指令,所述可执行指令在被处理器执行时实现以下流程:对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件。生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息。基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图;
图1为本说明书一种时序数据库安全的测试系统的结构示意图;
图2A为本说明书一种时序数据库安全的测试方法实施例;
图2B为本说明书一种时序数据库安全的测试过程的示意图;
图3为本说明书另一种时序数据库安全的测试过程的示意图;
图4为本说明书一种时序数据库安全的测试装置实施例;
图5为本说明书另一种时序数据库安全的测试系统的结构示意图;
图6为本说明书一种时序数据库安全的测试设备实施例。
具体实施方式
本说明书实施例提供一种时序数据库安全的测试方法、装置及设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
本说明书实施例提供一种时序数据库安全的测试系统,如图1所示,其系统架构中可以包括目标设备和时序数据库安全的测试设备,其中,目标设备可以是终端设备或服务器等,其中的终端设备可以如手机、平板电脑等移动终端设备,也可以如笔记本电脑或台式电脑等计算机设备,还可以如IoT设备(具体如智能手表、车载设备等),其中的服务器可以是独立的一个服务器,还可以是由多个服务器构成的服务器集群等,该服务器可以是如金融业务或网络购物业务等的后台服务器,也可以是某应用程序的后台服务器等,图1中以服务器为例说明。时序数据库安全的测试设备可以是由多种不同的组件构建的电子设备,可以用于对指定的时序数据库的安全性进行测试,目标设备可以是运行该时序数据库的设备。时序数据库安全的测试过程可以包括准备阶段、异常信息收集阶段和异常信息分析阶段,其中,在准备阶段,可以通过时序数据库安全的测试设备对该时序数据库进行处理,从而将时序数据库能够被目标设备运行,并且在时序数据库的程序代码中插入指定的探针(本质上即为进行信息采集的代码段,具体可以是赋值语句或指定函数的调用等),以便采集相应的信息。在异常信息收集阶段,目标设备可以运行该时序数据库,时序数据库安全的测试设备可以收集在该时序数据库运行过程中的异常信息。在异常信息分析阶段,时序数据库安全的测试设备可以对采集的异常信息进行分析,以得到对时序数据库的安全测试结果。具体处理可以参见下述实施例中的具体内容。
实施例一
如图2A和图2B所示,本说明书实施例提供一种时序数据库安全的测试方法,该方法的执行主体可以为电子设备,该电子设备可以是上述图1中的时序数据库安全的测试设备,在实际应用中,该电子设备可以是终端设备或服务器等,其中的终端设备可以如手机、平板电脑等移动终端设备,还可以如笔记本电脑或台式电脑等计算机设备,或者,也可以为IoT设备(具体如智能手表、车载设备等)等,其中的服务器可以是独立的一个服务器,还可以是由多个服务器构成的服务器集群等,该服务器可以是如金融业务或网络购物业务等的后台服务器,也可以是某应用程序的后台服务器等。本实施例中以执行主体为服务器为例进行详细说明,对于执行主体为终端设备的情况,可以参见下述服务器的情况处理,在此不再赘述。该方法具体可以包括以下步骤:
在步骤S202中,对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件。
其中,时序数据库可以是用于处理带有时间标签(按照时间的顺序变化,即时间序列化)的数据,带有时间标签的数据也可以称为时间序列数据。目标程序代码可以是时序数据库中的任意程序代码,例如,可以指定的编程语言(如C编程语言或JAVA编程语言等)编写的程序代码,也可以是包含某指定语义的程序代码等,具体可以根据实际情况设定,本说明书实施例对此不做限定。编译可以是利用编译程序从源语言编写的源程序代码产生目标程序代码的过程,具体可以是将通过编程语言编写的高级语言的程序代码转换为计算机能够识别的机器指令码,机器指令码可以是二进制代码等。插桩可以是在保证源程序代码的原有逻辑完整性的基础上,在源程序代码中插入一些探针(也可称为“探测仪”,本质上即为进行信息采集的代码段,具体可以是赋值语句或指定函数的调用等),通过探针的执行并抛出源程序代码运行的特征数据的处理。
在实施中,数据是现代计算机基础发展的基石,而数据库则是数据存储的重要手段。随着大数据库时代的到来,以及云平台和物联网的兴起,时序数据库得到了广泛的应用。时序数据库是一种对物联网数据进行操作和管理的大型软件,时序数据库可以处理来自各种客户端的操作请求,并进行统一的管理和控制。由于许多重要且敏感的信息都保存在时序数据库中,因此,时序数据库愈来愈成为有价值的攻击目标。一旦攻破时序数据库,入侵者则可以获得非常有价值的数据,因此,确保时序数据库的安全至关重要。与常用的关系数据库相比,时序数据库采用复杂的逻辑来处理其低延迟和时序特性,其安全性、可靠性、正确性均受到了复杂性的挑战。
模糊测试是一种流行的漏洞挖掘方式,通过产生大量的输入数据来测试程序代码,并通过监测程序代码的异常来发现异常信息。常用的模糊测试工具,如AFL、SQLsmith和Squirrel等方式,其中的AFL方式,采用了包括位翻转、字节翻转等多种方式变换已有种子来产生新的输入数据,进而测试程序代码;其中的SQLsmith方式,使用抽象语法树模型自动构造输入数据,进而测试程序代码;其中的Squirrel方式,利用语法树来变换已有输入数据,进而测试程序代码。然而,由于时序数据库的多结构、多层次、多节点的独特属性,上述模糊测试工具很难直接适用于时序数据库,其原因在于,首先无法获取时序数据库多组件精确的覆盖信息,其中,数据库系统往往具有极其复杂的逻辑和繁多的组件,而粗略记录的特征在时序数据库的系统中存在冲突和不精确的现象,因而无法有效将测试过程导向新的路径;其次,无法有效合成语法和语义正确的时序查询语句,其中,时间序列是时序数据库组织数据的基本形式,但上述模糊测试工具很难生成语法和语义正确的时序查询语句以进行测试,具体地,针对关系数据库的模糊测试工具很难产生具有时间序列的逻辑信息,此外,时序数据库接受的查询是高度结构化的,严格的语法阻碍了基于变换(或变异)的模糊测试工具中随机变换生成的大多数种子;最后,无法动态捕获时序数据库的隐式异常信息,其中,“崩溃”状态被用作模糊测试中发现程序代码存在漏洞的指示,但时序数据库利用隐式异常处理来防止整个系统崩溃以提高可用性和可靠性,然而上述异常信息可能包含严重的错误,而模糊测试工具往往会忽略它们。
通常,时序数据库的测试人员需要人工手写大量的时序测试用例对时序数据库进行安全测试,但上述方式不仅需要消耗大量的人工成本,而且由于缺乏时序数据库运行时指定信息的反馈,测试完备性较低,许多隐藏在时序数据库中的程序代码深层的漏洞难以被挖掘,而上述漏洞很可能会导致时序数据库的厂商和用户被黑客攻击,造成用户的资源损失。因此,一个能够应用于时序数据库,并自动地对该时序数据库安全进行测试的方式,非常具有产业上的利用价值。为此,需要提供一种更有效的针对时序数据库安全的测试方式。本说明书实施例提供一种可实现的技术方案,具体可以参见下述内容。
当技术人员或用户需要对某时序数据库的安全性进行测试时,可以将待测试的时序数据库或该时序数据库的标识提供给电子设备,该电子设备可以直接获取相应的时序数据库或者可以通过提供的标识获取相应的时序数据库,并可以将获取的时序数据库作为待测试的时序数据库。电子设备可以对该时序数据库进行分析,通过分析,可以得到该时序数据库中包含的组件的信息、基本块的信息、程序代码对应的编程语言等信息。为了在测试过程中精准收集时序数据库多个组件的覆盖率,需要使用编译器对时序数据库中的源文件进行白盒插桩编译处理,具体地,可以根据上述分析结果从时序数据库中获取目标程序代码,或者,也可以通过关键字匹配等方式直接从时序数据库中获取目标程序代码,还可以通过其它方式从时序数据库中获取目标程序代码,具体可以根据实际情况设定。
可以根据实际情况构建编译器,该编译器不仅可以对时序数据库中的程序代码进行编译处理,还可以对上述程序代码进行插桩处理,该编译器可以设置于电子设备中。当需要对时序数据库中的目标程序代码进行编译插桩处理时,可以启动上述编译器,并可以通过该编译器对时序数据库中的目标程序代码进行编译处理,并在进行编译处理的过程中,对目标程序代码进行插桩处理,通过上述处理可以得到目标程序代码对应的插桩后的中间文件,或者,也可以不需要构建编译器,可以先使用预先设定的插桩机制对目标程序代码进行插桩处理,得到插桩后的程序代码,然后,可以使用预先设定的编译程序对上述插桩后的程序代码进行编译处理,最终可以得到目标程序代码对应的插桩后的中间文件,或者,可以先使用预先设定的编译程序对目标程序代码进行编译处理,得到中间文件,然后,可以使用预先设定的插桩机制对上述中间文件进行插桩处理,最终可以得到目标程序代码对应的插桩后的中间文件。上述仅是可实现的处理方式,在实际应用中,还可以包括多种不同的处理方式,具体可以根据实际情况设定。
由于插桩后的中间文件无法被电子设备所识别,因此,需要将插桩后的中间文件转换为电子设备能够识别的文件,即可以对插桩后的中间文件进行分析,确定插桩后的中间文件的类型,然后,可以基于确定的类型获取转换程序,可以通过该转换程序将插桩后的中间文件转换为插桩后的机器指令码文件。并可以将插桩后的机器指令码文件提供给目标设备,目标设备可以按照时序数据库原有的启动方式加载并运行插桩后的机器指令码文件,其中的目标设备可以是能够运行上述时序数据库的设备,具体可以如服务器等,该服务器可以是该时序数据库原始所属的服务端,也可以是具有另一个指定运行环境的服务端等,具体可以根据实际情况设定。
在步骤S204中,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息。
其中,时序规则可以包括多种,例如可以根据时序数据库对应的时间序列特征构建该时序规则,或者,可以根据专家经验设定该时序数据库对应的时序规则等,具体可以根据实际情况设定,本说明书实施例对此不做限定。异常信息可以包括多种,例如异常信息可以包括时间跨度异常、序列跨度异常、数据异常等,具体也可以根据实际情况设定。
在实施中,为了确定时序数据库中可能存在的Bug,可以运行时序数据库,并可以模拟正常情况使用该时序数据库,从而确定时序数据库中可以存在的Bug,基于此,可以预先设定时序数据库对应的时序规则,电子设备可以结合该时序规则,自动生成能够满足时序数据库对应的时序规则的时序SQL语句,其中,生成的时序SQL语句可以包括一个或多个,而在实际应用中,为了更全面的确定时序数据库中可能存在的Bug,生成的时序SQL语句可以包括多个。然后,可以将生成的时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中。目标设备中可以预先设置有采集指定信息并返回给电子设备的应用程序,当生成的时序SQL语句输入到目标设备后,可以启动该应用程序,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,可以产生各种相关信息,可以通过该应用程序从上述产生的信息中捕获时序数据库运行过程中出现的异常信息,并可以将该异常信息提供给电子设备,电子设备可以基于输入到目标设备中的时序SQL语句收集返回的异常信息。
在步骤S206中,基于捕获的异常信息,确定对时序数据库安全的测试结果。
在实施中,通过上述方式可以收集到异常信息后,可以对上述异常信息进行分析,可以基于分析结果,可以将异常信息和触发该异常信息对应的异常处理的输入信息进行保存,可以基于保存的信息生成针对时序数据库的完整的测试报告,从而得到对时序数据库安全的测试结果。
本说明书实施例提供一种时序数据库安全的测试方法,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,然后,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,最终,可以基于捕获的异常信息,确定对时序数据库安全的测试结果,这样,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,并通过生成的正确的时序SQL语句对编译插桩后得到的可执行文件进行处理,进而自动实现对时序数据库进行安全测试的目的,此外,还可以通过简单调整上述处理获取时序数据库多组件精确的覆盖信息,并可以实现动态捕获时序数据库中可能出现的隐式异常信息,从而可以提高时序数据库进行安全测试效果,能够更加有效对时序数据库进行安全测试。
实施例二
如图3所示,本说明书实施例提供一种时序数据库安全的测试方法,该方法的执行主体可以为终端设备或服务器等,其中的终端设备可以如手机、平板电脑等移动终端设备,还可以如笔记本电脑或台式电脑等计算机设备,或者,也可以为IoT设备(具体如智能手表、车载设备等)等,其中的服务器可以是独立的一个服务器,还可以是由多个服务器构成的服务器集群等,该服务器可以是如金融业务或网络购物业务等的后台服务器,也可以是某应用程序的后台服务器等。本实施例中以执行主体为服务器为例进行详细说明,对于执行主体为终端设备的情况,可以参见下述服务器的情况处理,在此不再赘述。该方法具体可以包括以下步骤:
在步骤S302中,对待测试的时序数据库中的目标程序代码进行编译处理,得到多个编译中间文件。
其中,本实施例中,目标程序代码可以是由预设的编程语言编写的程序代码,预设的编程语言可以包括C编程语言、C++编程语言和JAVA编程语言中的一种或多种,具体也可以根据实际情况设定。
在实施中,可以基于上述方式预先设置编译器,可以使用该编译器对时序数据库中的源文件(包含目标程序代码)进行编译处理,可以生成包含有上述源文件中的逻辑信息的多个编译中间文件。
在步骤S304中,将属于同一可执行文件的多个编译中间文件进行合并,得到目标程序代码对应的全程序编译中间文件,对全程序编译中间文件中的基本块进行插桩处理,得到目标程序代码对应的插桩后的中间文件。
其中,基本块可以是顺序执行的语句序列构成的程序代码,基本块中只有一个入口和一个出口,入口即为基本块中的第一个程序语句,出口即为基本块中的最后一个程序语句,对于某个基本块,该基本块执行时只从其入口进入,从其出口退出,即只要基本块中第一条指令被执行了,则基本块内所有指令都会按照顺序仅执行一次。
在实施中,可以预先设定全程序优化机制,该全程序优化机制可以对编译中间文件进行合并,并可以对合并的信息进行标记等处理,基于此,电子设备可以通过预设的全程序优化机制,将属于同一可执行文件的多个编译中间文件进行合并,同时,还可以对合并后的文件中包含的基本块进行无冲突的标号,最终可以得到目标程序代码对应的全程序编译中间文件。可以对该全程序编译中间文件进行静态分析并导出分析结果,可以基于分析结果,对全程序编译中间文件中的基本块进行插桩处理,从而可以得到目标程序代码对应的插桩后的中间文件,其中,可以是对全程序编译中间文件中的每个基本块进行插桩处理,也可以是对全程序编译中间文件中的部分基本块进行插桩处理等,具体可以根据实际情况设定。
在步骤S306中,将插桩后的中间文件转换为插桩后的机器指令码文件。
其中,本实施例中,插桩后的机器指令码文件可以为携带有内存安全检查程序的二进制文件。
在实施中,可以根据实际情况设定安全强化的变换机制,安全强化的变换机制可以将经过插桩处理后得到的中间文件转换为指定的机器指令码文件,具体地,可以对该插桩后的中间文件进行静态分析并导出分析结果,可以基于分析结果,使用上述安全强化的变换机制将插桩后的中间文件转换为携带有内存安全检查程序的二进制文件。
上述实施例一中步骤S202中对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件的具体处理也可以通过上述步骤302~步骤S306的处理实现,也可以通过多种不同的方式完成步骤S202的处理,以下再提供一种可选的处理方式,具体可以包括以下步骤A2和步骤A4的处理。
在步骤A2中,对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,插桩后的中间文件包括多个。
上述步骤A2的具体处理可以参见上述实施例一中的相关内容或上述步骤302~步骤S306中的相关内容,在此不再赘述。
在步骤A4中,将属于同一可执行文件的多个插桩后的中间文件进行合并,得到目标程序代码对应的插桩后的全程序中间文件,并将插桩后的全程序中间文件转换为插桩后的机器指令码文件。
在实施中,可以预先设定另一种全程序优化机制,该全程序优化机制可以对插桩后的中间文件进行合并,并可以对合并的信息进行标记等处理,基于此,电子设备可以通过预设的全程序优化机制,将属于同一可执行文件的多个插桩后的中间文件进行合并,同时,还可以对合并后的文件中包含的基本块进行无冲突的标号,最终可以得到目标程序代码对应的插桩后的全程序中间文件。可以根据实际情况设定另一种安全强化的变换机制,该安全强化的变换机制可以将经过插桩处理后得到的全程序中间文件转换为指定的机器指令码文件,具体地,可以对该插桩后的全程序中间文件进行静态分析并导出分析结果,可以基于分析结果,使用上述安全强化的变换机制将插桩后的全程序中间文件转换为携带有内存安全检查程序的二进制文件。
在实际应用中,可以将上述得到的插桩后的机器指令码文件(即携带有内存安全检查程序的二进制文件)提供给目标设备,目标设备中也可以设置有测试程序或者该测试程序也可以以智能体的方式插入到插桩后的机器指令码文件中等。电子设备触发该测试程序提取该时序数据库中包含的基本块的信息,并可以根据提取到的基本块的信息,初始化共享内存用于存放计数器信息,然后,测试程序运行该时序数据库的原始启动程序,初始化该时序数据库,该时序数据库在进行初始化时,可以获得目标设备中的共享内存文件,并将共享内存映射到当前进程的地址空间。
在步骤S308中,根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,生成满足时序数据库对应的时序规则的时序SQL语句。
在实施中,以根据时序数据库对应的时间序列特征和预设的SQL语句的语法语义规则,生成时序SQL语句为例进行详细说明,对于基于上述两者之一生成时序SQL语句的情况,可以根据下述内容处理,在此不再赘述。电子设备首先可以进行混合输入规范的构建,之后可以进行面向时间序列的变异处理。其中,混合输入规范描述了构建结构化时序SQL语句的规则,混合输入规范可以由常用的SQL语句规范和时序数据库对应的时间序列特征组成。其中的SQL语句规范描述了关系查询的语法语义规则,面向时间的模型描述时间序列的关键字和语法规则,SQL语句规范包含很多对SQL查询的基本描述,该基本描述为查询提供了骨架。此外,面向时间的模型抽象了时间序列特征,该时间序列特征提供了生成时间序列元素的规则。上述二者结合可以得到混合输入规范,该混合输入规范可以为生成合适的时序SQL语句提供指导,即可以根据该混合输入规范(即时序数据库对应的时间序列特征和预设的SQL语句的语法语义规则)生成满足时序数据库对应的时序规则的时序SQL语句,在实际应用中,通过对时序数据库的初始化后,可以通过上述方式不断的随机生成时序SQL语句。
上述步骤S308的具体处理方式可以多种多样,以下再提供一种可选的处理方式,具体可以包括以下步骤B2和步骤B4的处理。
在步骤B2中,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,获取时序数据库中多组件的覆盖信息。
在实施中,还可以通过反馈的时序数据库中多组件的覆盖信息来指导时序SQL语句的生成,具体地,通过将共享内存映射到当前进程的地址空间,并对时序数据库的初始化后,可以将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,收集目标设备中的全部进程产生的信息,从而得到时序数据库中多组件的覆盖信息。
在步骤B2中,根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合时序数据库中多组件的覆盖信息生成满足时序数据库对应的时序规则的时序SQL语句。
其中,生成的时序SQL语句可以包括多个。
在实施中,根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合时序数据库中多组件的覆盖信息,随机生成满足时序数据库对应的时序规则的时序SQL语句。
需要说明的是,在启动时序数据库运行后,电子设备需要生成具有时序特性的语法和语义正确的时序SQL语句,电子设备本身采用混合使用符合语法和语义的变异规则和满足时间序列特征的规范,不断生成时序SQL语句,同时,也会不断获取运行时时序数据库中多组件的覆盖信息的反馈,上述反馈的信息会进一步引导时序SQL语句的生成,从而可以提高服务端代码覆盖率。
上述步骤B2的具体处理可以多种多样,以下再提供一种可选的处理方式,具体可以包括以下内容:根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合时序数据库中多组件的覆盖信息,通过预设的变异策略生成多个不同的时序SQL语句,该变异策略包括修改目标程序代码对应的时间序列数据的策略或修改目标程序代码对应的时间序列结构的策略。
在实施中,可以将预先构建的少量满足时序数据库对应的时序规则的时序SQL语句作为种子,并可以在语法树层次上进行变异以生成满足时序数据库对应的时序规则的时序SQL语句,具体地,可以将上述种子转换为抽象语法树(AST),以便更好地理解和分析其中的结构化信息。与原始查询语句相比,抽象语法树为分析查询的构造和逻辑提供了更结构化和更精确的格式,然后,根据输入规范(即时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则)识别上述抽象语法树的时序数据节点和时序结构,并随机选择以下两种变异策略(即修改目标程序代码对应的时间序列数据的策略或修改目标程序代码对应的时间序列结构的策略)来变异初始的时序SQL语句,最终得到多个时序SQL语句。其中,对于修改目标程序代码对应的时间序列数据的策略,可以修改上述抽象语法树中的数据,还可以更改时间序列值以生成新的时序SQL语句;对于修改目标程序代码对应的时间序列结构的策略,该策略通过在上述输入规范(或上述混合输入规范)的基础上删除、修改或添加指定的节点来改变上述抽象语法树的结构,以生成新的时序SQL语句。
在步骤S310中,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息。
在实施中,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,在上述测试过程中,电子设备通过测试程序主动对测试的各个线程进行动态监控,具体地,可以在时序数据库运行期间捕获来自运行环境的错误消息,具体可以通过检测异常处理代码来跟踪时序数据库的一个进程来实现,首先定位异常处理代码,并获取时序数据库中的所有自定义异常,用于区分异常的种类,然后,可以扫描每个进行隐式异常处理的程序以捕获错误消息,从而可以得到时序数据库运行过程中出现的异常信息。
在步骤S312中,基于捕获的异常信息,确定对时序数据库安全的测试结果。
本说明书实施例提供一种时序数据库安全的测试方法,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,然后,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,最终,可以基于捕获的异常信息,确定对时序数据库安全的测试结果,这样,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,并通过生成的正确的时序SQL语句对编译插桩后得到的可执行文件进行处理,进而自动实现对时序数据库进行安全测试的目的,此外,还可以通过简单调整上述处理获取时序数据库多组件精确的覆盖信息,并可以实现动态捕获时序数据库中可能出现的隐式异常信息,从而可以提高时序数据库进行安全测试效果,能够更加有效对时序数据库进行安全测试。
实施例三
以上为本说明书实施例提供的时序数据库安全的测试方法,基于同样的思路,本说明书实施例还提供一种时序数据库安全的测试装置,如图4所示。
该时序数据库安全的测试装置400包括:覆盖率收集组件410、时序SQL语句生成组件420和异常监控组件430。此外,本说明书实施例还提供一种时序数据库安全的测试系统,可以参见图5所示,其中包括时序数据库安全的测试装置400和目标设备500,其中:
时序数据库安全的测试装置400可以对对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,将插桩后的机器指令码文件提供给目标设备500。此外,时序数据库安全的测试装置400还可以生成满足时序数据库对应的时序规则的时序SQL语句,并将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备500中。另外,时序数据库安全的测试装置400还通过目标设备500在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,并基于捕获的异常信息,确定对时序数据库安全的测试结果。
其中,覆盖率收集组件410可以对待测试的时序数据库中的目标程序代码进行编译插桩处理,收集时序数据库运行时基本块的运行情况,同时,还可以收集测试过程中时序数据库中多组件的覆盖信息。时序SQL语句生成组件420可以自动的生成大量语法语义正确的时序SQL语句。异常监控组件430可以在时序数据库运行的过程中,主动地从运行环境中获取运行异常信息,并对异常信息进行分析和去重,保存可以触发异常的时序输入数据,并可以将上述时序输入数据和异常信息调用栈一起存储。
目标设备500可以接收时序数据库安全的测试装置400发送的插桩后的机器指令码文件,并可以加载并运行插桩后的机器指令码文件,从而运行该时序数据库,在运行时序数据库的过程中,接收时序数据库安全的测试装置400发送的满足时序数据库对应的时序规则的时序SQL语句,并可以运行该时序SQL语句。
其中,时序数据库安全的测试装置400包含的各个组件的功能和作用,可以如下:
覆盖率收集组件410,被配置为对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,将插桩后的机器指令码文件提供给目标设备500,并触发目标设备500运行插桩后的机器指令码文件。
时序SQL语句生成组件420,被配置为生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备500中;
覆盖率收集组件410,被配置为通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,获取时序数据库中多组件的覆盖信息,并将该覆盖信息传递给时序SQL语句生成组件420;
异常监控组件430,被配置为通过目标设备500在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,并基于捕获的异常信息,确定对时序数据库安全的测试结果。
上述各个组件的具体处理过程可以参见上述实施例一和实施例二中的相关内容,在此不再赘述。
本说明书实施例中,覆盖率收集组件410中可以包括基于底层虚拟机LLVM和ASM开发的编译工具链。通过该编译工具链可以对待测试的时序数据库中的目标程序代码进行编译插桩处理等。
本说明书实施例中,异常监控组件430可以包括代理器和异常检测器,其中:
代理器,被配置为通过目标设备500在运行插桩后的机器指令码文件的过程中执行时序SQL语句,在时序数据库运行过程中从运行环境中获取异常信息。
异常检测器,被配置为接收代理器发送的异常信息,基于异常信息,确定对时序数据库安全的测试结果。
在实施中,代理器旨在在时序数据库运行期间捕获来自运行环境的错误消息,具体可以通过检测异常处理代码来跟踪时序数据库的一个进程来实现,首先定位异常处理代码,并获取时序数据库中的所有自定义异常,用于区分异常的种类,然后,可以扫描每个进行隐式异常处理的程序以捕获错误消息,从而可以得到时序数据库运行过程中出现的异常信息。代理器可以将异常信息发送给异常检测器,异常检测器可以进一步分析异常信息,以记录和报告异常情况,最终,可以得到对时序数据库安全的测试结果。
本说明书实施例中,插桩后的中间文件包括多个,覆盖率收集组件410,被配置为将属于同一可执行文件的多个插桩后的中间文件进行合并,得到目标程序代码对应的插桩后的全程序中间文件,并将插桩后的全程序中间文件转换为插桩后的机器指令码文件。
上述具体处理过程可以参见上述实施例一和实施例二中的相关内容,在此不再赘述。
本说明书实施例中,目标程序代码是由预设的编程语言编写的程序代码,预设的编程语言包括C编程语言、C++编程语言和JAVA编程语言中的一种或多种。
本说明书实施例中,覆盖率收集组件410,被配置为对待测试的时序数据库中的目标程序代码进行编译处理,得到多个编译中间文件;将属于同一可执行文件的多个编译中间文件进行合并,得到目标程序代码对应的全程序编译中间文件,对全程序编译中间文件中的基本块进行插桩处理,得到目标程序代码对应的插桩后的中间文件。
上述具体处理过程可以参见上述实施例一和实施例二中的相关内容,在此不再赘述。
本说明书实施例中,时序SQL语句生成组件420,被配置为根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,生成满足时序数据库对应的时序规则的时序SQL语句。
上述具体处理过程可以参见上述实施例二中的相关内容,在此不再赘述。
本说明书实施例中,时序SQL语句生成组件420,被配置为接收覆盖率收集组件410发送的时序数据库中多组件的覆盖信息;根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合时序数据库中多组件的覆盖信息生成满足时序数据库对应的时序规则的时序SQL语句。
上述具体处理过程可以参见上述实施例二中的相关内容,在此不再赘述。
本说明书实施例中,生成的时序SQL语句包括多个,时序SQL语句生成组件420,被配置为根据时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合时序数据库中多组件的覆盖信息,通过预设的变异策略生成多个不同的时序SQL语句,该变异策略包括修改目标程序代码对应的时间序列数据的策略或修改目标程序代码对应的时间序列结构的策略。
在实施中,如图5所示,可以通过具有鲁棒性的SQL字典(其中,可以包括如时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,也可以包括修改目标程序代码对应的时间序列数据的策略或修改目标程序代码对应的时间序列结构的策略等变异策略等,具体可以根据实际情况设定)和种子池(预先设定的满足时序数据库对应的时序规则的时序SQL语句等),通过SQL生成器生成多个不同的时序SQL语句,上述具体处理过程可以参见上述实施例二中的相关内容,在此不再赘述。
本说明书实施例中,插桩后的机器指令码文件为携带有内存安全检查程序的二进制文件。
在实施中,如图5所示,携带有内存安全检查程序的二进制文件中可以包括用于支持服务端运行的二进制文件、用于支持客户端运行的二进制文件和指定的功能单元的二进制文件等。
本说明书实施例提供一种时序数据库安全的测试装置,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,然后,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,最终,可以基于捕获的异常信息,确定对时序数据库安全的测试结果,这样,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,并通过生成的正确的时序SQL语句对编译插桩后得到的可执行文件进行处理,进而自动实现对时序数据库进行安全测试的目的,此外,还可以通过简单调整上述处理获取时序数据库多组件精确的覆盖信息,并可以实现动态捕获时序数据库中可能出现的隐式异常信息,从而可以提高时序数据库进行安全测试效果,能够更加有效对时序数据库进行安全测试。
实施例四
以上为本说明书实施例提供的时序数据库安全的测试装置,基于同样的思路,本说明书实施例还提供一种时序数据库安全的测试设备,如图6所示。
所述时序数据库安全的测试设备可以为上述实施例提供电子设备等。
时序数据库安全的测试设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对时序数据库安全的测试设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在时序数据库安全的测试设备上执行存储器602中的一系列计算机可执行指令。时序数据库安全的测试设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606。
具体在本实施例中,时序数据库安全的测试设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对时序数据库安全的测试设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件;
生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息;
基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于上述一种时序数据库安全的测试设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供一种时序数据库安全的测试设备,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,然后,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,最终,可以基于捕获的异常信息,确定对时序数据库安全的测试结果,这样,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,并通过生成的正确的时序SQL语句对编译插桩后得到的可执行文件进行处理,进而自动实现对时序数据库进行安全测试的目的,此外,还可以通过简单调整上述处理获取时序数据库多组件精确的覆盖信息,并可以实现动态捕获时序数据库中可能出现的隐式异常信息,从而可以提高时序数据库进行安全测试效果,能够更加有效对时序数据库进行安全测试。
实施例五
进一步地,基于上述图2A到图3所示的方法,本说明书一个或多个实施例还提供了一种存储介质,用于存储计算机可执行指令信息,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令信息在被处理器执行时,能实现以下流程:
对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件;
生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息;
基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于上述一种存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供一种存储介质,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到目标程序代码对应的插桩后的中间文件,将插桩后的中间文件转换为插桩后的机器指令码文件,然后,生成满足时序数据库对应的时序规则的时序SQL语句,将时序SQL语句输入到运行插桩后的机器指令码文件的目标设备中,通过目标设备在运行插桩后的机器指令码文件的过程中执行时序SQL语句,捕获时序数据库运行过程中出现的异常信息,最终,可以基于捕获的异常信息,确定对时序数据库安全的测试结果,这样,通过对待测试的时序数据库中的目标程序代码进行编译插桩处理,并通过生成的正确的时序SQL语句对编译插桩后得到的可执行文件进行处理,进而自动实现对时序数据库进行安全测试的目的,此外,还可以通过简单调整上述处理获取时序数据库多组件精确的覆盖信息,并可以实现动态捕获时序数据库中可能出现的隐式异常信息,从而可以提高时序数据库进行安全测试效果,能够更加有效对时序数据库进行安全测试。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程欺诈案例的串并设备的处理器以产生一个机器,使得通过计算机或其他可编程欺诈案例的串并设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程欺诈案例的串并设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程欺诈案例的串并设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (12)
1.一种时序数据库安全的测试方法,所述方法包括:
对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件;
生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息;
基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
2.根据权利要求1所述的方法,所述插桩后的中间文件包括多个,所述将所述插桩后的中间文件转换为插桩后的机器指令码文件,包括:
将属于同一可执行文件的多个插桩后的中间文件进行合并,得到所述目标程序代码对应的插桩后的全程序中间文件,并将所述插桩后的全程序中间文件转换为插桩后的机器指令码文件。
3.根据权利要求2所述的方法,所述目标程序代码是由预设的编程语言编写的程序代码,所述预设的编程语言包括C编程语言、C++编程语言和JAVA编程语言中的一种或多种。
4.根据权利要求1所述的方法,所述对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,包括:
对待测试的时序数据库中的目标程序代码进行编译处理,得到多个编译中间文件;
将属于同一可执行文件的多个编译中间文件进行合并,得到所述目标程序代码对应的全程序编译中间文件,对所述全程序编译中间文件中的基本块进行插桩处理,得到所述目标程序代码对应的插桩后的中间文件。
5.根据权利要求1-4中任一项所述的方法,所述生成满足所述时序数据库对应的时序规则的时序SQL语句,包括:
根据所述时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,生成满足所述时序数据库对应的时序规则的时序SQL语句。
6.根据权利要求5所述的方法,所述根据所述时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,生成满足所述时序数据库对应的时序规则的时序SQL语句,包括:
将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,获取所述时序数据库中多组件的覆盖信息;
根据所述时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合所述时序数据库中多组件的覆盖信息生成满足所述时序数据库对应的时序规则的时序SQL语句。
7.根据权利要求6所述的方法,生成的所述时序SQL语句包括多个,所述根据所述时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合所述时序数据库中多组件的覆盖信息生成满足所述时序数据库对应的时序规则的时序SQL语句,包括:
根据所述时序数据库对应的时间序列特征和/或预设的SQL语句的语法语义规则,并结合所述时序数据库中多组件的覆盖信息,通过预设的变异策略生成多个不同的所述时序SQL语句,所述变异策略包括修改所述目标程序代码对应的时间序列数据的策略或修改所述目标程序代码对应的时间序列结构的策略。
8.根据权利要求7所述的方法,所述插桩后的机器指令码文件为携带有内存安全检查程序的二进制文件。
9.一种时序数据库安全的测试装置,所述装置包括覆盖率收集组件、时序SQL语句生成组件、异常监控组件,其中:
所述覆盖率收集组件,被配置为对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件,将所述插桩后的机器指令码文件提供给目标设备,并触发所述目标设备运行所述插桩后的机器指令码文件;
所述时序SQL语句生成组件,被配置为生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中;
所述覆盖率收集组件,被配置为通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,获取所述时序数据库中多组件的覆盖信息,并将所述覆盖信息传递给所述时序SQL语句生成组件;
所述异常监控组件,被配置为通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息,并基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
10.根据权利要求9所述的装置,所述覆盖率收集组件中包括基于底层虚拟机LLVM和ASM开发的编译工具链。
11.根据权利要求9所述的装置,所述异常监控组件包括代理器和异常检测器,其中:
所述代理器,被配置为通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,在所述时序数据库运行过程中从运行环境中获取所述异常信息;
所述异常检测器,被配置为接收所述代理器发送的所述异常信息,基于所述异常信息,确定对所述时序数据库安全的测试结果。
12.一种时序数据库安全的测试设备,所述时序数据库安全的测试设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
对待测试的时序数据库中的目标程序代码进行编译插桩处理,得到所述目标程序代码对应的插桩后的中间文件,将所述插桩后的中间文件转换为插桩后的机器指令码文件;
生成满足所述时序数据库对应的时序规则的时序SQL语句,将所述时序SQL语句输入到运行所述插桩后的机器指令码文件的目标设备中,通过所述目标设备在运行所述插桩后的机器指令码文件的过程中执行所述时序SQL语句,捕获所述时序数据库运行过程中出现的异常信息;
基于捕获的异常信息,确定对所述时序数据库安全的测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310414654.8A CN116450611A (zh) | 2023-04-12 | 2023-04-12 | 一种时序数据库安全的测试方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310414654.8A CN116450611A (zh) | 2023-04-12 | 2023-04-12 | 一种时序数据库安全的测试方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116450611A true CN116450611A (zh) | 2023-07-18 |
Family
ID=87121601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310414654.8A Pending CN116450611A (zh) | 2023-04-12 | 2023-04-12 | 一种时序数据库安全的测试方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116450611A (zh) |
-
2023
- 2023-04-12 CN CN202310414654.8A patent/CN116450611A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Stack overflow in github: any snippets there? | |
Krishna et al. | Too much automation? The bellwether effect and its implications for transfer learning | |
Howard et al. | Automatically mining software-based, semantically-similar words from comment-code mappings | |
US8875110B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
US10423624B2 (en) | Event log analysis | |
US20160253229A1 (en) | Event log analysis | |
Sestili et al. | Towards security defect prediction with AI | |
Haben et al. | A replication study on the usability of code vocabulary in predicting flaky tests | |
Lei et al. | How test suites impact fault localisation starting from the size | |
CN109471889B (zh) | 报表加速方法、系统、计算机设备和存储介质 | |
Tan | Code comment analysis for improving software quality | |
Zhang et al. | System log parsing: A survey | |
Tao et al. | Logstamp: Automatic online log parsing based on sequence labelling | |
CN115309451A (zh) | 代码克隆检测方法、装置、设备、存储介质及程序产品 | |
Hu et al. | Augmenting greybox fuzzing with generative ai | |
Samoaa et al. | A systematic mapping study of source code representation for deep learning in software engineering | |
Staunton et al. | Searching for safety violations using estimation of distribution algorithms | |
CN114661290A (zh) | 一种脚本错误的处理方法、装置、设备及存储介质 | |
He et al. | Multi-intention-aware configuration selection for performance tuning | |
Dogga et al. | A system-wide debugging assistant powered by natural language processing | |
WO2024103838A1 (zh) | 一种代码分析方法、装置、电子设备及存储介质 | |
Abuín et al. | Perldoop: Efficient execution of Perl scripts on Hadoop clusters | |
CN116450611A (zh) | 一种时序数据库安全的测试方法、装置及设备 | |
Shao et al. | Combining lexical and structural information for static bug localisation | |
CN114691197A (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 |