CN116662177A - 一种面向电力系统终端的测试用例自动化生成方法及系统 - Google Patents
一种面向电力系统终端的测试用例自动化生成方法及系统 Download PDFInfo
- Publication number
- CN116662177A CN116662177A CN202310638404.2A CN202310638404A CN116662177A CN 116662177 A CN116662177 A CN 116662177A CN 202310638404 A CN202310638404 A CN 202310638404A CN 116662177 A CN116662177 A CN 116662177A
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- mutation
- grammar
- terminal
- 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 271
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012549 training Methods 0.000 claims abstract description 5
- 230000035772 mutation Effects 0.000 claims description 64
- 230000008569 process Effects 0.000 claims description 28
- 239000012634 fragment Substances 0.000 claims description 22
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000012544 monitoring process Methods 0.000 claims description 13
- 238000001914 filtration Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 11
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 230000007123 defense Effects 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- UPLPHRJJTCUQAY-WIRWPRASSA-N 2,3-thioepoxy madol Chemical compound C([C@@H]1CC2)[C@@H]3S[C@@H]3C[C@]1(C)[C@@H]1[C@@H]2[C@@H]2CC[C@](C)(O)[C@@]2(C)CC1 UPLPHRJJTCUQAY-WIRWPRASSA-N 0.000 description 6
- 230000006399 behavior Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000011160 research Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000009193 crawling Effects 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013101 initial test Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011076 safety test Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 238000012038 vulnerability analysis Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000009225 memory damage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02J—CIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
- H02J13/00—Circuit arrangements for providing remote indication of network conditions, e.g. an instantaneous record of the open or closed condition of each circuitbreaker in the network; Circuit arrangements for providing remote control of switching means in a power distribution network, e.g. switching in and out of current consumers by using a pulse code signal carried by the network
-
- 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
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S10/00—Systems supporting electrical power generation, transmission or distribution
- Y04S10/50—Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Power Engineering (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
本发明提供了一种面向电力系统终端的测试用例自动化生成方法及系统,对测试输入数据进行分类,构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。本发明能够提高测试用例生成的效率,有助于及时发现电力系统终端自身存在的安全隐患,提升网络攻击安全防御能力,确保电力系统终端安全可靠运行。
Description
技术领域
本发明属于物联网安全技术领域,涉及一种面向电力系统终端的测试用例自动化生成方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
模糊测试是一种安全测试技术,主要用于检测安全漏洞,近年来得到了快速发展。模糊测试是漏洞检测技术的一种,通过使用针对目标程序生成的随机字符流,对目标程序进行多次测试,以检测可能存在的漏洞。相比于静态分析、动态分析、二进制比对等方法,模糊测试方法规避了状态爆炸、路径爆炸、约束求解困难、耗时长以及误报率高等问题,且具有自动化程度高、系统消耗低、误报率低、不依赖于目标程序源代码等优点。
模糊测试相关的研究工作,一方面集中在提升模糊测试的漏洞检测能力,另一方面集中在拓宽模糊测试的应用范围。目前,模糊测试已发展成为信息安全的一个重要组成部分,随着技术理念的不断迭代发展,现阶段的模糊测试不仅包括传统的黑盒模糊测试,还衍生了灰盒和白盒的模糊测试技术,在产学研领域都得到了广泛关注。截止目前,国内外已经有众多安全厂商发布了软件和硬件的模糊测试产品,但还没有能实现自动化模糊测试的产品。
在新型电力系统不断发展的背景下,分布式新能源广泛并网、海量负荷资源控制等新型应用不断发展,电力系统海量异构终端不断接入,终端种类数量激增,这使得通过终端漏洞利用来对电网的安全性进行威胁的可能性不断增加,对电力系统的安全形势造成了严重威胁。传统依靠人工进行终端安全测试的方式难以保证电力系统中海量终端的安全性,因此迫切需要形成高效、便捷的面向电力系统海量终端的模糊测试体系。
目前,国内外针对嵌入式终端的模糊测试尚在初级阶段,支持的终端类型有限。当前国内外关于终端的模糊测试在白盒、黑盒、灰盒几方面均有一定的研究。其中针对终端的白盒模糊测试技术需要提供终端固件的源码,需要终端厂商的支持或者对终端产品的反编译;针对终端的灰盒模糊测试,需要在测试过程中通过终端的反馈信息对模糊测试过程进行引导;而针对终端的黑盒模糊测试则通常面向终端的网络协议进行检测。针对电力物联网发展背景下的终端安全测试技术难以有效保证电力系统终端安全性且自动化程度低的问题,需进行适应性改造和针对性研究。
发明内容
本发明为了解决上述问题,提出了一种面向电力系统终端的测试用例自动化生成方法及系统,本发明能够提高测试用例生成的效率,有助于及时发现电力系统终端自身存在的安全隐患,提升网络攻击安全防御能力,确保电力系统终端安全可靠运行。
根据一些实施例,本发明采用如下技术方案:
一种面向电力系统终端的测试用例自动化生成方法,包括以下步骤:
对测试输入数据进行分类,构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;
基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。
作为可选择的实施方式,还包括根据安全防护需求,从网络攻防视角,分析各终端针对漏洞的安全威胁,考虑电力业务终端所涉及的安全作用,确定电力业务终端的安全涉及方面。
作为可选择的实施方式,构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成的具体过程包括:对报文内容进行确定,划分参与变异内容和不参与变异内容,对于参与变异内容,按照固定的模式对种子的内容进行变异,同样的种子进行确定性变异生成的测试用例相同,按照设定的变异长度与步长,从种子内容的头部开始变异。
作为进一步的实施方式,在变异过程中,还包括对被变异种子进行大量随机变异,每次随机选中种子中的某位或某几位,对被选中的字节随机应用一个变异策略,生成新的测试用例,但在此过程中,不改变种子的长度。
作为可选择的实施方式,利用语法描述和变异生成结构化输入的测试用例的具体过程包括:
将现有的测试用例按照语法G分解为语法片段,得到语法片段池,并通过已有测试用例推导出一个子语法G′,它是语法G的一个子集,与测试套件存在映射关系;
重复多次执行依据子语法G′替换掉片段池中的某个片段,两个语法片段表示相同的语法成分,但结构不同,生成新的测试用例。
作为进一步的实施方式,在重复多次执行依据子语法G′替换掉片段池中的某个片段的过程中,增加变异过滤机制,在重复执行过程中设置多个监测点,每个监测点都包含一个用户定义的回调程序,当执行到一监测点时,以上下文信息为参数调用所述回调程序,检查上下文,决定下一步的执行指令。
作为进一步的实施方式,在重复多次执行依据子语法G′替换掉片段池中的某个片段的过程中,增加输出重写机制,生成新的测试用例的字符串后,立即对它执行用户定义的回调程序,同时,该字符串的推导序列也被作为参数传递给回调程序,以对生成的测试用例进行进一步操作。
作为可选择的实施方式,将生成的测试用例按照预定义规则进行命名,分类存储。
作为可选择的实施方式,基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试的具体过程包括:
根据目标程序的输入语法格式生成对应的畸形数据,在生成之后,根据其有效性进行筛选,将触发漏洞可能性超过设定值的测试用例传送给目标程序以供模糊测试使用;
将已生成的测试用例输入到目标程序中执行,对其执行过程和程序运行结束的状态进行监测,当检测到程序执行的异常信息时,将触发该异常事件的测试用例保存起来,并对相关信息进行记录,以对程序漏洞的后续判断与分析。
一种面向电力系统终端的测试用例自动化生成系统,包括:
安全防护分析模块,被配置为面向电力系统各环节业务终端,根据安全防护需求,从网络攻防视角,分析各终端遭受漏洞利用攻击对电网安全稳定运行造成的影响;
自动生成模块,被配置为构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;
模糊测试模块,被配置为基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。
一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行所述方法中的步骤。
一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的方法中的步骤。
与现有技术相比,本发明的有益效果为:
本发明通过应用一组变异操作(确定性变异和随机变异),对预先提供的种子测试用例进行修改,进而生成新的测试输入。该方法简洁、实施便捷、规模化程度高,提高了非结构化数据的测试用例生成的效率。
本发明针对高结构化输入程序的测试用例生成过程中,利用语法来指导测试输入的生成,有效地构造测试用例,实现更好的程序覆盖率,确保了生成的测试用例能够通过程序的初始词法分析和解析阶段;能够系统地生成测试输入,尽可能多地覆盖到边缘用例和复杂结构,有助于揭露目标程序对这些异常情况及相关安全问题的不当处理。
本发明在高结构化输入的测试用例生成过程中,加入了变异过滤(mutationfiltering)和输出重写(output rewriting)机制,分别允许用户在执行数据变异时引导生成引擎的行为,以及对生成的测试用例内容微调,使得用户具有了是否对当前推导序列执行变异、推导序列的当前元组是否可以作为分叉点、选择哪些语法规则替换以当前分叉点为根的子树的控制权,还能对生成的测试用例作进一步改进。
本发明可以将测试用例按照预定义规则进行命名,分类存储,为终端模糊测试提供优势初始种子,支撑模糊测试引擎快速覆盖目标程序,提升深层次终端漏洞发现能力。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明一种实施例的技术方案示意图;
图2是本发明一种实施例的结构化测试用例生成框架示意图;
图3是本发明一种实施例的模糊测试执行流程示意图;
图4是本发明一种实施例的面向电力系统终端的模糊测试流程示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
实施例一
正如背景技术中所述的考虑电力系统应用复杂,采用大量私有协议和专用终端,以及电力专用终端所具有的封闭性等特性,对电力系统终端模糊测试进行研究,以构建适用于新型电力系统海量终端的攻击与防护体系,及时发现电力系统终端自身存在的安全隐患,提升网络攻击安全防御能力,确保电力系统终端安全可靠运行,具有极高的研究价值。
本实施例提供了一种面向电力系统终端、应用于模糊测试的测试用例自动化生成方法。
当然,为了能够更好的进行测试用例的生成,可以先对电力业务各环节所涉及的终端安全、电力业务终端安全漏洞及面临的安全威胁、电力终端安全防护需求等进行分析。
例如,典型的终端软件漏洞包括缓冲区溢出(Buffer Overflow)、栈溢出(StackOverflow)、堆溢出(Heap Overflow)、越界读写(Out-of-Bounds Read/Write)、整数溢出(Integer Overflow)、空指针引用(Null Pointer Deference)、双重解引用(DoubleFree)、除零漏洞(Divide By Zero)等。以电力工控系统中实际存在的一些漏洞与攻击为例,分析电力工控终端面临的安全威胁,主要包括重放攻击、拒绝服务、认证绕过、厂商后门、APT攻击等。
针对分析结果,我们在测试用例的生成过程,可以对于上述漏洞针对性的增加相关测试用例。
如图1所示,模糊测试是通过构造大量的半有效测试输入,将其在测试过程中提供给程序,通过监控程序的运行来发现异常状况,这些异常往往预示着潜在的安全漏洞。由于所生成测试用例的数据结构决定了对程序的测试范围,而且数据质量会直接影响测试效果,因此测试用例生成是模糊测试的一个重要环节。
数据在类型上可大致分为非结构化数据和结构化数据两种。非结构化数据指的是不遵循固定逻辑结构的数据,如文本,图像,声音,视频等;结构化数据为具有清晰结构,遵循一定语法或模型,事先经过人为组织的数据,比如关系数据库中的二维表结构以及树,图等典型的数据结构。
现有模糊测试用例生成的方式有两种,即基于生成的方式、基于变异的方式。基于生成的模糊测试工具一般基于刻画输入数据格式与状态行为的建模来产生测试输入,对于处理高结构化输入的程序而言,该方法有较好的效果。基于变异的模糊测试工具通过应用一组变异操作,对预先提供的种子测试用例进行修改,进而生成新的测试输入。该方法简洁、实施便捷、规模化程度高,在非结构化数据的测试用例生成上广泛应用。
本实施例针对非结构化输入的测试用例自动化生成采用构建基于变异的测试用例生成策略的技术方案。
以工控协议模糊测试为例进行说明。
1)协议报文的变异方式
一条报文一般会由多种协议堆叠构成,而在协议模糊测试中,往往只有其中的一个协议是被测对象,因此,在正式开始报文内容的变异前,首先需要确定哪些内容参与变异,哪些内容不进行变异。
2)确定性变异
确定性变异,是按照一个固定的模式对种子的内容进行变异,同样的种子进行确定性变异生成的测试用例一定是相同的。当一个种子开始确定性变异时,将从种子内容的头部开始,按照一定的变异长度与步长进行变异。确定性变异的变异策略包括:bitflip、arithmetic、interestingvalue等。
3)havoc
havoc指对被变异种子进行大量随机变异的变异方式。一个种子每次进行havoc,变异生成的测试用例都可能是不同的。havoc策略每次随机选中种子中的某位或某几位,对被选中的bit随机应用一个变异策略,生成新的测试用例。
在工控协议的模糊测试中,由于二进制协议大多通过偏移来确定字段位置,随意插入或删除某些字节往往只会生成无效的测试用例,因此本文中的havoc策略不改变种子的长度。havoc变异策略包括:bitflip、arithmetic、interestingvalue、randomvalue,每种变异策略被选中的概率是均等的。
针对结构化输入的测试用例:
在面对只接受高度结构化数据输入的程序时,传统的模糊测试技术会导致测试数据在程序验证阶段被丢弃掉,无法到达更深的位置,减小了发现漏洞的可能性。需要考虑如何在测试程序只允许高度结构化数据输入的情况下,有效地构造测试用例,实现更好的程序覆盖率。
针对高结构化输入程序的模糊测试,本实施例提出了一种新的解决方法。利用语法来指导测试输入的生成:对于目标语法G和一个能够接受目标语言L(G)所定义字符串的程序,构造语法上有效的测试输入。这就确保了生成的测试用例能够通过程序的初始词法分析和解析阶段。此外,本方法能够系统地生成测试输入,这样就会尽可能多地覆盖到边缘用例和复杂结构,有助于揭露目标程序对这些异常情况及相关安全问题的不当处理。为了实现这一目标,我们的方法由以下两个阶段构成:
模型推导(Model inference)。这一阶段要求测试器提供两个输入,包括目标语法G和初始的有效测试套件。首先把测试用例按照语法G分解为语法片段,然后我们会得到一个语法片段池,它将被用作下一阶段的基本构建单元。我们同时通过现有用例推导出一个子语法G′,它是G的一个子集,与测试套件存在映射关系。G′将在下一阶段用于指导数据生成;
基于语法的变异(Grammar-aware mutation)。这一阶段使用第一阶段提供的素材,使现有的测试用例产生变异。具体来说就是,我们选择一个语法片段,依据G′用它替换掉片段池中的某个片段。这两个语法片段表示相同的语法成分,但结构不同。然后系统地重复这一步骤,产生大量新的测试用例,使其结构实现多样化。
下面介绍详细过程,如图2所示,用户或者测试者需提供两个输入:目标语法G的语法规则和一组现有的目标语言L(G)的测试用例,这组测试用例将作为我们实现框架的种子集。在第一阶段,框架首先调用语法解析器的生成器,按照语法规则构造G的一个解析器,并且用这个解析器把种子集中的测试用例转化为一组解析树。然后,框架以自下而上的方式检查每个树,从树结构推导语法成分(包括非终结符和相应的语法规则),同时也收集一些语法实例片段(即推导序列组成的集合)。然后把这些得到的信息传递给第二阶段的测试用例生成引擎。生成引擎在生成新测试用例时,通过一种叫做变异过滤(mutationfiltering)的机制,有机会征询用户如何执行下一次变异。另外,在生成新的测试用例以后,用户代码也有机会通过重写测试用例的某些部分来微调测试字符串的内容。这个字符串最终被添加到生成的测试用例套件中。
本实施例还考虑了变异的控制机制,用户能灵活地控制运行超时的行为。为了实现这一目的,引入了两个机制:变异过滤(mutation filtering)和输出重写(outputrewriting),它们的功能分别是允许用户在执行数据变异时引导生成引擎的行为,以及对生成的测试用例内容微调。
为了实现变异过滤,在阶段II(基于语法的变异)的主循环各处设置若干个监测点。每个监测点都包含一个用户定义的回调(callback)程序。当程序执行到一个监测点时,就以上下文信息为参数调用相应的callback。然后callback的用户代码就能检查上下文,决定下一步怎么执行,并返回以下代码之一来指示引擎:CONTINUE,SKIP或STOP,它们分别表示继续当前操作,跳过当前操作进入到下次循环,停止生成。有了变异过滤机制,用户就有了如下控制权:
是否对当前推导序列执行变异;
推导序列的当前元组是否可以作为分叉点;
选择哪些语法规则替换以当前分叉点为根的子树。
变异过滤最常用于为阶段II(基于语法的变异)的迭代设置终止条件,比如当生成测试用例的计数超过某个阈值时终止迭代算法。此外,阶段II(基于语法的变异)的穷举策略可能没办法很好地扩展到某些复杂程序。在这种情况下,测试者可以利用变异过滤有选择性地探索感兴趣的语言特性,或者随机选择要执行变异的分支。
另一个可用于控制生成引擎行为的机制是输出重写,让测试者能在框架生成最终字符串之前,有机会修改字符串。它的工作原理是在生成测试字符串之后,立即对它执行用户定义的callback函数。同时,该字符串的推导序列也被作为参数传递给callback。推导序列如实保留了对应字符串的语法结构的每个细节。这样一来,callback的用户代码就能对生成的测试用例作进一步改进。
模糊测试初始种子输入数据的有效性对目标程序执行时能否发现漏洞是比较敏感的,所以有效初始输入数据的获取也是模糊测试中不可忽视的一个环节。
本实施例构建面向电力终端的测试用例库主要包括三个阶段:
首先,收集初始测试用例。一般的模糊测试相关初始输入数据可以通过网络爬取、模糊测试工具自行产生、分析人员自行创建和利用己公开的数据集等多种方式获得。网络爬取方式一般针对特定文件格式数据的获取,自行产生的数据是模糊测试工具根据特定的算法在学习到目标程序部分语法信息后生成的。自行创建的数据常常是分析人员从实际环境中获得的,如抓取的网络数据包、特定格式的输入数据文件等。
其次,生成大量多样的测试用例。在初始测试用例基础上,利用上述针对非结构化输入的测试用例自动化生成技术和针对结构化输入的测试用例自动化生成技术进行测试用例的自动化生成,丰富测试用例数量的同时,提升测试用例的多样性。
最后,根据测试用例的数据类型进行分类。按照不同的文件和数据格式,如Modbus协议报文、XML等,将测试用例按照预定义规则进行命名,分类存储,为终端模糊测试提供优势初始种子,支撑模糊测试引擎快速覆盖目标程序,提升深层次终端漏洞发现能力。
基于上述测试用例,可以进行模糊测试。
模糊测试模型/框架/工具可以选用现有技术。
如图3所示,模糊测试的漏洞探测过程一般分为待测目标识别、确定输入向量、测试用例生成、程序执行、监视异常、漏洞分析与评估等多个环节。
在生成测试用例数据之后,模糊测试模型/框架/工具会将这些数据输入到目标程序中执行,并对其执行过程和程序运行结束的状态进行监测。一般程序在执行时的结束状态有正常退出、执行超时程序、挂起或程序崩溃等几种情况。程序正常退出说明输入数据符合目标程序的正常执行过程,所以也将符合此种情况的测试用例不予考虑。
其他三种情况往往会伴随目标程序中潜在安全问题而产生,那么触发这些异常事件的测试用例数据也是用于目标程序的后续进一步分析处理的对象。
当检测到程序执行的异常信息时,模糊测试模型/框架/工具会将触发该异常事件的测试用例保存起来,并对相关信息进行记录,用来对程序漏洞的后续判断与分析。反馈式的模糊测试模型/框架/工具还会将有效的测试用例变异数据和检测信息提供给测试用例生成器,以促进生成更优的测试用例。
在模糊测试成功获得能够使目标程序崩溃的相关信息之后,就进入漏洞分析阶段了。分析人员在该阶段会借助各种调试器来分析由模糊测试获得的崩溃数据,从而确定漏洞的类型、严重程度和触发漏洞的原因。
作为一种实施方式,如图4所示,执行时相关组件包含测试用例生成器、目标程序执行引擎、监视器、漏洞检测器和漏洞过滤器等五个主要部分。其中,静态分析技术主要是在前期帮助模糊测试工具收集目标程序相关信息,而且图中除了静态分析技术之外的其他环节基本上都是动态分析方式完成的。
测试用例生成器:可以利用上述生成策略,生成测试用例。
在测试用例生成器中,主要就是考虑如何制定高效的测试用例生成策略和保证测试用例的生成质量。测试用例生成器根据目标程序的输入语法格式来生成的对应的畸形数据,而且在生成之后还会根据其有效性进行筛选,将触发漏洞可能性大的测试用例传送给目标程序以供模糊测试使用。这样既避免了因低效测试用例过多带来的性能开销问题,也在一定程度上提高了模糊测试效率。
目标程序执行引擎:目标程序就是将要使用模糊测试工具对其进行漏洞检测的终端程序,而且模糊测试的目的就是为了发现目标程序中潜在的软件安全漏洞。实际可以用于模糊测试的目标程序多种多样,如可以是网络程序、编译器、库文件、操作系统内核程序等等不同的可执行程序。选用现有技术即可,在此不再赘述。
面向终端固件的模糊测试,测试执行的环境分为基于真实设备的模糊测试,以及基于模拟环境的模糊测试。其中,基于真实设备的测试,包括通过向终端发送大量数据包并监控设备CPU的使用和检查系统日志来检测路由协议漏洞、观察内存破坏、内存错误漏洞在嵌入式设备上的不同行为,分析固件漏洞;基于模拟环境的测试,可以利用真实设备处理固件I O交互,基于模拟器执行固件程序,同时将执行过程中遇到的真实外设访问转发到真实设备进行处理,对于一些无法获取的外设硬件,实现相应的软件抽象。
监视器:在目标程序执行期间监控目标程序的各项运行指标来收集程序运行时的信息,如程序执行路径、触发的系统信号、是否正常退出程序、是否崩溃、是否挂起等诸多监控指标。通过对目标程序运行过程的监控,不但能利用具体事件来分析判断输入数据是否有效和是否触发漏洞,而且可以在模糊测试中实时反馈收集到的信息来提高测试用例生成质量。
漏洞检测器:通过对目标程序接受输入数据后的执行结果进行分析,会通过输入数据和目标程序的执行结果等相关信息判断是否成功触发了目标程序的潜在漏洞。若触发了漏洞,则会交给漏洞过滤器做进一步筛选,否则将不做处理。该环节常用到的方法有符号执行、覆盖率反馈(Coverage Feedback)、污点分析等,在此不再赘述。能够实时的对程序执行状态进行检测。
漏洞过滤器:用于进行漏洞筛选。在漏洞过滤器环节处理完毕之后,整个模糊测试所涉及的检测任务完成。
实施例二
一种面向电力系统终端的测试用例自动化生成系统,包括:
安全防护分析模块,被配置为面向电力系统各环节业务终端,根据安全防护需求,从网络攻防视角,分析各终端遭受漏洞利用攻击对电网安全稳定运行造成的影响;
自动生成模块,被配置为构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;
模糊测试模块,被配置为基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种面向电力系统终端的测试用例自动化生成方法,其特征是,包括以下步骤:
对测试输入数据进行分类,构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;
基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。
2.如权利要求1所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成的具体过程包括:对报文内容进行确定,划分参与变异内容和不参与变异内容,对于参与变异内容,按照固定的模式对种子的内容进行变异,同样的种子进行确定性变异生成的测试用例相同,按照设定的变异长度与步长,从种子内容的头部开始变异。
3.如权利要求2所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,在变异过程中,还包括对被变异种子进行大量随机变异,每次随机选中种子中的某位或某几位,对被选中的字节随机应用一个变异策略,生成新的测试用例,但在此过程中,不改变种子的长度。
4.如权利要求1所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,利用语法描述和变异生成结构化输入的测试用例的具体过程包括:
将现有的测试用例按照语法G分解为语法片段,得到语法片段池,并通过已有测试用例推导出一个子语法G′,它是语法G的一个子集,与测试套件存在映射关系;
重复多次执行依据子语法G′替换掉片段池中的某个片段,两个语法片段表示相同的语法成分,但结构不同,生成新的测试用例。
5.如权利要求4所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,在重复多次执行依据子语法G′替换掉片段池中的某个片段的过程中,增加变异过滤机制,在重复执行过程中设置多个监测点,每个监测点都包含一个用户定义的回调程序,当执行到一监测点时,以上下文信息为参数调用所述回调程序,检查上下文,决定下一步的执行指令。
6.如权利要求4或5所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,在重复多次执行依据子语法G′替换掉片段池中的某个片段的过程中,增加输出重写机制,生成新的测试用例的字符串后,立即对它执行用户定义的回调程序,同时,该字符串的推导序列也被作为参数传递给回调程序,以对生成的测试用例进行进一步操作;
或,将生成的测试用例按照预定义规则进行命名,分类存储。
7.如权利要求1所述的一种面向电力系统终端的测试用例自动化生成方法,其特征是,基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试的具体过程包括:
根据目标程序的输入语法格式生成对应的畸形数据,在生成之后,根据其有效性进行筛选,将触发漏洞可能性超过设定值的测试用例传送给目标程序以供模糊测试使用;
将已生成的测试用例输入到目标程序中执行,对其执行过程和程序运行结束的状态进行监测,当检测到程序执行的异常信息时,将触发该异常事件的测试用例保存起来,并对相关信息进行记录,以对程序漏洞的后续判断与分析。
8.一种面向电力系统终端的测试用例自动化生成系统,其特征是,包括:
安全防护分析模块,被配置为面向电力系统各环节业务终端,根据安全防护需求,从网络攻防视角,分析各终端遭受漏洞利用攻击对电网安全稳定运行造成的影响;
自动生成模块,被配置为构建基于变异的测试用例生成策略,利用其进行非结构化输入的测试用例的生成,利用语法描述和变异生成结构化输入的测试用例,形成面向电力终端的测试用例库;
模糊测试模块,被配置为基于所述面向电力终端的测试用例库,训练模糊测试模型,执行测试用例,进行模糊测试。
9.一种计算机可读存储介质,其特征是,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行权利要求1-7中任一项所述方法中的步骤。
10.一种终端设备,其特征是,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行权利要求1-7中任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310638404.2A CN116662177A (zh) | 2023-05-30 | 2023-05-30 | 一种面向电力系统终端的测试用例自动化生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310638404.2A CN116662177A (zh) | 2023-05-30 | 2023-05-30 | 一种面向电力系统终端的测试用例自动化生成方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662177A true CN116662177A (zh) | 2023-08-29 |
Family
ID=87714799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310638404.2A Pending CN116662177A (zh) | 2023-05-30 | 2023-05-30 | 一种面向电力系统终端的测试用例自动化生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662177A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687902A (zh) * | 2023-11-20 | 2024-03-12 | 北京计算机技术及应用研究所 | 一种面向模糊测试的种子挖掘方法 |
CN117873908A (zh) * | 2024-03-12 | 2024-04-12 | 中兴通讯股份有限公司 | 测试用例确定方法及装置 |
CN118381751A (zh) * | 2024-06-21 | 2024-07-23 | 中国电子科技集团公司第三十研究所 | 基于大规模预训练模型的工控协议模糊测试用例生成方法 |
-
2023
- 2023-05-30 CN CN202310638404.2A patent/CN116662177A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687902A (zh) * | 2023-11-20 | 2024-03-12 | 北京计算机技术及应用研究所 | 一种面向模糊测试的种子挖掘方法 |
CN117687902B (zh) * | 2023-11-20 | 2024-07-30 | 北京计算机技术及应用研究所 | 一种面向模糊测试的种子挖掘方法 |
CN117873908A (zh) * | 2024-03-12 | 2024-04-12 | 中兴通讯股份有限公司 | 测试用例确定方法及装置 |
CN118381751A (zh) * | 2024-06-21 | 2024-07-23 | 中国电子科技集团公司第三十研究所 | 基于大规模预训练模型的工控协议模糊测试用例生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Petsios et al. | Slowfuzz: Automated domain-independent detection of algorithmic complexity vulnerabilities | |
Chen et al. | Learning to prioritize test programs for compiler testing | |
CN116662177A (zh) | 一种面向电力系统终端的测试用例自动化生成方法及系统 | |
Shar et al. | Mining SQL injection and cross site scripting vulnerabilities using hybrid program analysis | |
Liang et al. | Deepfuzzer: Accelerated deep greybox fuzzing | |
Ceccato et al. | SOFIA: An automated security oracle for black-box testing of SQL-injection vulnerabilities | |
Yi et al. | An intelligent communication warning vulnerability detection algorithm based on IoT technology | |
CN108647145A (zh) | 软件内存安全检测方法及系统 | |
CN113326050B (zh) | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 | |
Gutiérrez‐Madroñal et al. | Evolutionary mutation testing for IoT with recorded and generated events | |
CN112506564B (zh) | 一种用于建立控制流图的方法、系统和介质 | |
Mohi-Aldeen et al. | Application of Negative Selection Algorithm (NSA) for test data generation of path testing | |
CN111966604A (zh) | 一种fuzzing工控协议漏洞挖掘系统 | |
Partenza et al. | Automatic identification of vulnerable code: Investigations with an ast-based neural network | |
Hu et al. | A systematic review of network protocol fuzzing techniques | |
Brown et al. | Online malware classification with system-wide system calls in cloud iaas | |
CN111309589A (zh) | 一种基于代码动态分析的代码安全扫描系统及方法 | |
Masri et al. | Generating profile-based signatures for online intrusion and failure detection | |
Helmke et al. | EPF: An evolutionary, protocol-aware, and coverage-guided network fuzzing framework | |
CN111625448B (zh) | 协议包生成方法、装置、设备及存储介质 | |
Miao et al. | Deep learning in fuzzing: A literature survey | |
Avancini et al. | Circe: A grammar-based oracle for testing cross-site scripting in web applications | |
CN115391787A (zh) | 一种基于生成对抗网络的afl种子优化方法及系统 | |
Zhang et al. | Machine Learning-based Fuzz Testing Techniques: A Survey | |
Liu et al. | Research on Automatic Test Case Generation Technology and Fuzzing Framework for Power System Terminal |
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 |