计量芯片后门测试用例生成方案*

2014-03-22 12:00陈炎明关静雅
计量技术 2014年11期
关键词:测试用例测试数据作弊

陈炎明 郭 谡 王 晶,3 关静雅,3

(1.湖北省计量测试技术研究院,武汉 430223;2.北京出入境检验检疫局,北京 100026;3.武汉大学计算机学院,武汉 430072)

0 引言

随着微电子技术和数字技术的广泛运用,以及电子计量器具日益普及,在计量器具中嵌入式计量软件的元器件和部件或模块的使用也越来越多,如加油机、电子秤、出租车计价器等[1]。与传统的机械式计量器具相比,现代的计量器具仍存在计量作弊现象,并且作弊手段也趋于高科技化,从程序代码层面对计量软件进行作弊更改[2],利用嵌入式计量软件本身存在的设计漏洞修改计量程序或直接更换计量主板,来达到作弊的目的。

目前针对计量器具的作弊检查大多为人工现场检测,针对嵌入式计量软件作弊后门的软件检测方法研究较少。因此,研究一种适用于嵌入式计量软件的自动检测后门方法有助于提高检测力度及效率。

1 研究现状

根据是否考虑和分析软件的内部逻辑结构和程序算法设计,一般的软件测试方法可分为白盒测试、黑盒测试和灰盒测试三种类型。嵌入式软件测试与一般软件测试具有相同的目标,但是由于嵌入式系统的嵌入式特性,其测试策略有很大的不同[3]。嵌入式软件不像一般的商用软件和商用计算机系统具有很强的兼容性,嵌入式软件只能运行在特定的目标系统上。嵌入式软件与所属计算机系统的结构、I/O端口配置、相关联外部设备以及这些设备的输入输出信号特性都有联系。嵌入式软件还通常具有很强的时序相关性,由于嵌入式系统的功能要求,必须在规定时间内完成应用功能,并且时间也是应用处理的重要输入输出参数,具有严格的处理时序。运行平台的特定要求、时序相关性以及测试环境的不同使嵌入式软件的开发和测试具有很大的困难。

2 测试命令生成

本文测试用例的生成方法借鉴模糊测试的原理,以已知作弊命令为种子命令,分析种子命令格式,确定可变命令字段,通过模糊种子命令可变字段的命令字来生成新的测试命令。模糊测试中采用的是生成半有效数据,生成边界值或非法值来创建测试用例,来引发目标系统的崩溃或信息泄露等;本文的测试用例生成方法希望生成有效的测试命令,来触发计量程序进入作弊流程,不是依靠边界值或非法值,而是选取命令字集合中的有效命令字来替换种子命令中相应可变字段的命令字。通过控制种子命令的可变字段的数量可控制生成的测试命令数量,防止测试命令爆炸。

模糊测试技术是一种自动化的软件测试技术[4],它使用大量的半有效的测试用例为被测试的软件或系统提供输入数据,通过不符合正常输入的非预期数据输入目标程序并监视所发生的异常执行状态和异常输出来发现软件的缺陷和错误。半有效的测试数据是由大部分合法有效的数据和小部分变异、不合法的数据组成。目标系统在接受这种类型的输入数据后可能出现运行或输出错误,根据这些错误的发生情况和位置可分析软件或系统存在的错误和缺陷[5]。一般的边界值生成用例流程为首先输入正常值,通过给定合法值界定其边界值,综合考虑边界内的合法值和边界以外非法值,进一步生成测试数据。模糊测试除了一般的边界值分析外,还考虑可能引发系统未定义的行为或存在安全隐患的行为的任何输入[6]。

2.1 模糊测试的一般步骤

本文测试命令的具体生成步骤与模糊测试大体相同。模糊测试方法没有绝对错误和正确之分,但需要符合不同的目标应用程序,还要考虑被测数据所采用的数据格式或结构。模糊测试的几个基本阶段有识别目标、识别输入、生成畸形测试数据、执行测试数据、监视异常、确定原因等[7]。测试命令生成流程如图1所示。

图1 测试命令生成流程

1)识别目标。模糊测试的目标是应用软件或系统及其接收的数据,应用软件或系统能够接收的任何通信数据都能成为模糊测试的目标。模糊测试的效率很大程度上取决于测试目标的选取。除了选取目标应用程序,还要从目标应用程序的文件或库中选择作为具体目标的对象。由于这些目标库存在安全缺陷或漏洞的可能性相对较高[8],作为测试目标能够较大地提高测试效率。

2)识别输入。应用程序的输入数据一般包括文件数据、网络数据、环境变量和系统消息等。将所有输入向量枚举出来是模糊测试生成测试数据的重要步骤,这一步骤要求将所有存在的输入源和预期的输入值找出并定位,这一步骤的完成效果将大大影响模糊测试的效果。所有从客户端输入目标应用程序或目标系统的数据包括消息头信息、文件信息、环境变量以及注册键值等信息都是输入向量,这些输入变量都是要作为模糊测试生成测试数据的输入向量。

3)生成畸形测试数据。模糊测试数据在确定测试目标之后生成,根据生成决策通过预定义的方式,或自动生成方式,改变合法输入数据的格式,改变合法数据来生成畸形数据作为模糊测试数据。生成过程应由模糊器自动化完成。

4)执行测试数据。测试用例生成之后提交并被测试程序执行,并且测试用例的生成和目标程序运行测试数据可以并行进行,这样可以达到提高漏洞挖掘的速度的效果。执行测试数据自动化是模糊测试的关键[9]。

5)监视异常。监视异常运行结果在模糊测试过程中非常重要,但其重要性往往容易被忽视。监视异常需要具备测试目标程序无关性,并且与所使用的模糊测试方法无关。

6)确定原因。在监视运行结果的过程中如果发现异常运行状态或结果,在这一阶段要对造成此异常运行状态和结果的原因作进一步的分析。对异常运行状态和结果的原因的确定依靠人工分析,其效率取决于分析人员的专业知识和测试经验。

2.2 测试命令生成方法

测试命令生成模块通过模糊方法替换种子命令可变命令字段的键值形成新的模拟作弊命令。这些测试命令以不同类型的作弊命令作为种子命令来生成,可以覆盖可能触发篡改计量系数、计量单价等不同计量参数的作弊命令。

由于外接键盘键值有一定的数量,且输入的命令由多个按键值组合而成,完全穷举生成的测试命令数量会非常庞大,现有的测试资源和计算机运算速度不能满足,因此要设计一种精简地生成测试命令的算法,且生成的作弊后门的触发指令具有针对性,减少无用指令的冗余度,减少后门检测所消耗的资源和测试时间。本文采用启发式的测试命令构造来避免随机生成指令造成的指令爆炸,将已知作弊命令作为不同类型的种子命令来生成测试命令,即根据种子命令的格式,构建模糊某一格式的相应格式段的命令字来形成这一类型的测试命令用例。这些测试命令针对性地通过已知类型的作弊后门指令为参考生成测试命令,极有可能篡改程序中的计量参数,以此达到作弊目的。如图1所示,测试命令模糊测试生成方法和过程为:

1)作弊命令的格式为功能键值和数字、符号的组合形式。通过分离功能键值,数字键和符号键,构造功能键,数字键和符号键三个命令字集合,F={A,B,C,…},N={0,1,2,3,4,5,6,7,8,9},S={.};

2)选取一条已知作弊指令作为种子命令,分析并抽象种子命令格式;

3)根据种子命令格式,如F-F-NNNN-F,依次分析不同命令字段的命令字类型,判断该字段是否可变,若是,将该命令字用模糊测试方法用该类型命令字集合中的其他命令字替换,生成新的命令即为测试命令。测试命令依次生成并存储,逐条送至后门检测系统由目标程序执行。

3 总结

本文采用模糊测试的思想,设计出一种高效的测试命令生成方案,该方法既能通过已知作弊指令的格式及特征生成可能的测试命令集合并对其进行模拟测试,又能有效地防止因生成集合过大而造成的命令爆炸,确保了该方案的有效性及可行性。

[1]侯婉辉.对燃油加油机作弊手段及防作弊系统功能的探讨[J].中国科技信息,2011(5):045

[2]王林波,沈春磊,赵书展,等.如何治理加油机高科技计量作弊[J].上海计量测试,2007,34(3):47-49

[3]刘天泉.嵌入式系统软件设计方法研究及应用[D].杭州:浙江大学计算机系,2004

[4]Rieck K, Holz T, Willems C, et al.Learning and classification of malware behavior[M].Detection of Intrusions and Malware, and Vulnerability Assessment.Springer Berlin Heidelberg, 2008: 108-125

[5]梁斌,侯看看,石文昌.一种基于安全状态跟踪监测的漏洞静态检测方法[J].计算机学报,2009(5)

[6]Rieck K, Trinius P, Willems C, et al.Automatic analysis of malware behavior using machine learning[J].Journal of Computer Security,2011, 19(4): 639-668

[7]Chi Ruinan.Research on network data transmission and security using windows socket[J].Computer Engineering and Technology (ICCET), 2010(2):686

[8]Afanasyev M,Tsuwei Chen,Voelker G M,Snoeren A C.Usage Patterns in an Urban WiFi Network[J].Networking,2010(18): 1359

[9]Jones A, Ohlund J.Network Programming for Microsoft Windows[M].Microsoft Press.2000

猜你喜欢
测试用例测试数据作弊
作弊
基于SmartUnit的安全通信系统单元测试用例自动生成
测试数据管理系统设计与实现
有人要你帮忙作弊怎么办
基于混合遗传算法的回归测试用例集最小化研究
基于自适应粒子群优化算法的测试数据扩增方法
空间co-location挖掘模式在学生体能测试数据中的应用
没作弊
基于依赖结构的测试用例优先级技术
影响《标准》测试数据真实性的因素及破解策略