基于安全性分析的嵌入式软件测试

2019-12-03 04:56吴冬梅
电子技术与软件工程 2019年21期
关键词:测试环境嵌入式软件模拟器

文/吴冬梅

嵌入式软件以其所自身所具备的体积小、功耗低、系统资源占用少、灵活性强等特点,在诸多领域中得到广泛应用。由于嵌入式软件的主要服务对象为嵌入式系统,如果软件的安全性过低,则可能导致系统失效,这样会造成严重的后果。所以需要对嵌入式软件进行测试,及时找出缺陷和漏洞,加以修补和优化,提高嵌入式软件的整体可靠性,使其在嵌入式系统中的作用得以充分发挥。借此,下面从安全性的角度,对嵌入式软件测试展开分析探讨。

1 嵌入式软件的特点及测试的必要性

1.1 嵌入式软件的特点

嵌入式软件是软件工程研究的重点课题,具体是指以嵌入的方式安装在硬件中的操作系统和开发工具软件。大体上可将嵌入式软件分为三类:嵌入式操作系统、嵌入式支撑软件和嵌入式应用软件。嵌入式软件的特点主要体现在如下几个方面:

1.1.1 实用性

与普通软件相比,嵌入式软件具有非常独特的实用性,这是其较为突出的一大特点。从服务对象上看,嵌入式软件的主要服务对象是嵌入式系统,所以要求嵌入式软件与外部硬件设备之间具有紧密的关联。绝大多数嵌入式系统都是以应用作为核心,而从本质的角度上讲,嵌入式软件就是应用系统,可以按照用户提出的具体需求进行定向开发。因此,每种嵌入式软件都具有独特的应用环境及实用价值。

1.1.2 灵活性

嵌入式软件可以看成是一个模块,这个模块其能够在各种嵌入式系统中进行灵活运用,并且在运用的过程中,不会对原本的系统造成影响,即不改变系统的性能和原始功能。同时,嵌入式软件的体积非常小、功耗低、可靠性高,应用时不会占用过多的系统资源,使用灵活,便于升级。

1.2 嵌入式软件测试的必要性

由于嵌入式软件主要是为嵌入式系统服务,如果软件的安全性存在问题,极有可能导致系统失效,这样会造成灾难性的后果。所以必须对嵌入式软件进行严格的测试,借此来检验软件的安全性、可靠性。近年来,应用嵌入式设备的领域越来越多,嵌入式软件的复杂程度不断提升,因此,对嵌入式软件进行快速、有效地测试显得尤为必要。通过对嵌入式软件进行测试,能够及时发现软件的缺陷和漏洞,从而可以进行修补和优化,这样能使嵌入式软件的安全性和可靠性得到进一步提升,也才能使嵌入式软件的作用获得最大限度地发挥。

2 基于安全性的嵌入式软件测试

2.1 安全测试的难点

安全性是嵌入式软件的一个重要指标,由此使得安全性测试成为嵌入式软件测试中的关键内容。故障注入是验证软件可靠性较为常用的一种方法,具体是指在软件中生成一个错误,使其引起硬件故障。目前,可进行应用的故障注入方式种类较多,如对内存数据进行修改、借助应用软件生成故障等等。在此基础上,通过模拟的方法,能够使软件安全测试的优势得以充分发挥,最后利用故障函数,强制测试软件进入某种状态。大量的实践表明,这种测试方法,很难达到嵌入式软件安全性测试的要求。为保证嵌入式软件的安全性,需要使用相关测试平台,从软件运行可靠性的层面进行测试,如果结果合格,则说明嵌入式软件安全,若是不合格,表明嵌入式软件存在安全漏洞。

2.2 安全测试环境

2.2.1 安全性测试的主要环节

嵌入式软件从设计开发到完善直至投入使用是一个生命周期,由于嵌入式软件的主要服务对象为嵌入式系统,所以必须确保开发出来的嵌入式软件具有较高的安全性,这样才能保证嵌入式系统的运行安全、稳定。因此,嵌入式软件除了在开发时需要进行安全性测试之外,在应用过程中,仍然要进行安全性测试,保证软件不会出现安全性方面的问题。从重要程度上看,嵌入式软件开发环节中的安全性测试,要比后续使用阶段的安全性测试更加重要,这是因为如果开发的软件本身就存在安全漏洞,那么将无法满足系统的应用要求。鉴于此,现阶段对嵌入式软件的安全性测试,基本都集中在软件开发环节。

2.2.2 测试环境的搭建思路

在对嵌入式软件进行安全性测试前,要先搭建一个测试环境,具体做法如下:为确保输入的有效性,可采用检测软件基本单位的方法,完成软件单元的安全性测试,借助软件防御策略,避免恶意入侵及操作不当对嵌入式软件安全造成危害;当软件单元测试完毕后,可对软件进行集成测试,以软件的安全属性变化对测试环境的影响,作为集成测试的指导依据。在集成测试环节中,主要是利用测试环境对嵌入式软件中存在的缺陷进行验证,若是软件存在缺陷,则表明其安全性不足,反之,说明软件安全;集成测试结束后,便可在模拟环境中,对软件进行验收测试,将找到的漏洞纳入入侵矩阵,据此对软件的安全缺陷进行识别。

2.2.3 测试环境的实现

在嵌入式软件开发阶段进行安全性测试时,漏洞检测是关键内容,为使测试过程得以简化,可直接在宿主机上对测试环境进行仿真模拟。在PC机上安装模拟器,使其在C语言环境下运行,然后配置相关变量,此时便可进行模拟测试。通过模拟器对嵌入式软件进行安全性测试的过程中,模拟器的启动方法有两种,一种是直接启动,即双击解压包打开相关程序,从命令窗口将程序导入模拟器中;另一种将需要测试的软件导入到集成环境中,在导航页面上开启模拟器。

2.3 安全测试方法

2.3.1 软件功能的安全测试

嵌入式软件以实用性而著称,一款软件的实用性主要与功能有关,所以在对嵌入式软件进行测试的过程中,应当重点对软件的功能进行安全测试,此项测试可以软件的安全需求分析与验证为基础。程序开发人员在对嵌入式软件进行设计时,为确保软件本身的安全性,通常会按照具体的安全需求,增设各种安全措施,比如,数据加密、权限管理等等,据此对测试用例进行设计,最后使用与功能测试相似的方法,对嵌入式软件功能的安全性进行测试。目前,黑盒测试是嵌入式软件功能测试中较为常用的一种方法,该方法的基本原理如下:将软件程序视作为无法开启的黑盒子,并在程序接口进行测试,检查程序的功能是否能够正常使用,如果可以使用,则说明软件的功能安全、可靠,反之表明软件的功能存在安全问题。

2.3.2 软件漏洞的安全测试

对于嵌入式软件而言,漏洞是安全测试的重点内容,如果嵌入式软件存在漏洞,那么黑客便可利用这个漏洞对系统进行入侵,从而达到获取数据信息和破坏系统运行的目的。所以,程序人员在对软件漏洞进行安全性测试时,应当站在黑客的角度,这样才能找出软件中存在的各种漏洞。嵌入式软件漏洞的形成原因比较多,因此对漏洞进行安全性测试并没有固定的方法,大量的实践表明,DREAR模型的效果较好。

2.4 安全测试过程

在嵌入式软件安全测试中,找出软件存在的缺陷和漏洞是最终目标,对此可运用C++代码挖掘软件漏洞。挖掘嵌入式软件的漏洞时,静态分析是比较实用的一种方法,虽然该方法在实际应用中存在漏误报的可能性,但却并不影响其应用效果。具体操作过程如下:将待测试的嵌入式软件导入静态分析工具当中,静态分析工具可根据现有的安全规则,对软件中的漏洞进行挖掘,并且还能分析出经漏洞产生的攻击,由此可为漏洞修补提供依据。恶意代码漏洞是威胁嵌入式软件安全的主要漏洞之一,在安全测试时,应当重点对其进行分析。由于受到定义类型的限制,使得field无法受到有效的保护,这样一来很容易遭到恶意代码入侵,同时,field是一个稳定性较低的数据组合,当一个静态域对某个数据组合进行引用时,可能会被恶意代码访问。通过扫描的方式发现的软件漏洞,可从被导出的XML文件中进行查询。由此便可非常清晰地了解到嵌入式软件中存在的漏洞和缺陷类型,并且还能对漏洞进行精确定位。程序人员根据测试结果,可对软件中的漏洞进行修补,这样能够使软件的安全性得到进一步提升。

3 结语

综上所述,嵌入式软件的应用领域不断拓宽,用户对其安全性的要求也随之提高。因此,在嵌入式软件开发设计阶段,程序人员应当从安全性的角度,对嵌入式软件进行测试,从而确保开发出来的软件具有足够高的安全性,这样才能保证嵌入式系统的运行可靠性。

猜你喜欢
测试环境嵌入式软件模拟器
了不起的安检模拟器
划船模拟器
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制
动态飞行模拟器及其发展概述