APP下载

面向安全性分析的嵌入式软件测试方法浅析

2023-04-29范娜李全洲

信息系统工程 2023年6期
关键词:安全性分析嵌入式软件测试方法

范娜?李全洲

摘要:随着软件开发技术不断发展,不同类型的新兴软件持续增加,特别是嵌入式软件,在各个行业中广泛应用,相关理论研究和实践探索也大量涌现。嵌入式软件在应用过程中一旦失效,便会影响设备运行,甚至威胁行业的财产安全。针对嵌入式软件的安全测试要求进行简要分析,讨论软件测试技术以及面向安全性分析的嵌入式软件测试方法,以供参考。

关键词:嵌入式软件;安全性分析;测试方法

一、前言

目前,嵌入式软件应用相当广泛。在金融系统、信息系统、医疗器械行业乃至国防系统中,安全嵌入式软件均发挥着重要作用。若嵌入式软件在运行过程中出现问题,将直接影响整个系统运行的安全性与稳定性。因此,要提升嵌入式软件安全性,避免其影响整个系统运行安全。

二、嵌入式软件安全性测试要求

在嵌入式软件的安全性测试过程中,主要检查嵌入式软件是否具备安全性、稳定性以及保密性。需要全面检查嵌入式软件,避免嵌入式软件处于危险状态,为后续运行提供保障。为保证系统的安全运行水平,除了制定科学合理的设计方案外,还需要对设计过程进行严格控制,从软件代码、编程风格以及设计规范标准等方面入手,确保系统的质量符合标准,提升系统的整体稳定性、安全性以及可靠性。在检查系统安全性和验证安全性措施过程中,应注意嵌入式软件安全性测试要求。嵌入式软件安全性测试要求,主要有以下几项:

(一)健壮性测试要求

健壮性测试,即对嵌入式软件中各个安全措施全面检查。健壮性测试要求,主要包括以下几点:第一,对关键等级嵌入式软件及嵌入式模块,需要采取针对性安全测试,保证嵌入式软件各个零部件具备安全性。第二,在嵌入式代码检查过程中,从算法模型、数据结构、中断处理和容错能力等方面,对代码进行检查,提升嵌入式代码的安全性。第三,在健壮性测试过程中,应保证在标准安全测试环境下,对嵌入式软件进行安全测试,应重点检测嵌入式软件外部环境,提升安全测试结果的精准性。第四,在进行健壮性测试时,不仅需要测试正常零部件,还需要测试异常硬件。第五,需要对嵌入式软件边界点、边界内以及边界外进行安全性测试。

(二)运行强度测试要求

运行强度测试,主要是在嵌入式软件运行中对异常软件进行安全性测试。其中需要注意的是,仍然需要检查嵌入式软件运行强度,也就是针对性能、降级能力、系统健壮性能力三个方面进行强度测试,还要进行饱和度测试,确保测试准确。

(三)系统余量测试要求

系统余量测试,主要查看嵌入式软件中的余量是否达到系统设计规范标准要求。另外,由于部门系统设计没有明确的规范标准,需要保留20%的系统余量,再按照系统的测试标准进行全面测试。系统余量测试对象主要包括系统、输入输出、储存、功能等方面。

(四)恢复性测试要求

恢复性测试,主要是对嵌入式软件中已经重置功能软件或者已经恢复的功能软件进行测试,检查重置或者恢复的实际情况,确保嵌入式软件的重置和恢复功能保持良好状态。恢复性测试是在系统硬件发生故障后,检查系统是否能够继续运行,并且保证系统不会受到损害。该项测试内容主要包括错误检查、备用硬件启动情况、运行和维护状态等。当系统故障恢复后,第一时间检查并记录系统状态,观察系统是否在无错误状态下执行测试作业[1]。

三、软件测试技术分析

(一)数据交叉测试技术

数据交叉测试技术,在嵌入式软件安全测试中不仅具有重要作用,还是测试的规范标准。在测试过程中,需要先对嵌入式软件后台数据重点测试,再进行交叉运行测试。在信息技术飞速发展的背景下,数据交叉测试技术逐渐完善。目前,数据交叉测试技术已经相当成熟,并且广泛应用在各个行业安全性测试中。数据交叉测试首先是对主机的程序编写进行检测,及时传达测试指令。嵌入式软件利用测试代理,对软件后台数据进行实时监控,监测嵌入式软件是否具备稳定性,一旦监测到后台数据出现漏洞或者其他安全问题,测试代理便会立即启动。通过有针对性地生成问题解决脚本,为技术人员制定修改方案,发挥在检测环节的重要参考作用。

(二)嵌入式软件结构组织化测试

嵌入式软件结构组织化测试,是嵌入式安全性测试技术中的关键部分。测试过程主要包括元素和特定两个结构组织测试部分。元素结构测试,需要针对元素结构运行和研发周期、硬件设备、软件等结构测试技术元件,形成标准的安全性测试环境,并根据嵌入式软件结构组织的运行要求、种类和运行环境等因素,科学合理选择安全性测试形式。嵌入式软件结构组织,可以最大化发挥安全性测试的作用。也就是说,在选择合理的测试软件基础上,结合嵌入式软件结构组织,可以为嵌入式软件结构组织化测试结果的精准性提供一定保障[2]。

(三)安全测试的组织和环境

目前,嵌入式软件类型较多,但是由于软件质量和测试环境存在一定差异,要想选择科学合理的软件,必须將重点放在嵌入式安全测试的组织和环境两个方面,进而提升嵌入式软件的可靠性。技术人员应定期对嵌入式软件进行安全测试,确保安全性检测环境符合规定的标准,再结合嵌入式软件的组织结构以及运行环境等因素,全面提升嵌入式软件运行的可靠性与合理性。正常情况下,嵌入式软件在安全测试主要包括单元测试和集成测试两个环节。其中,单元测试需要通过测试指令软件对嵌入式软件的单元输入数据,才可以顺利完成安全性检测。并且,这项测试还可以对嵌入式软件进行整体检测。集成测试则是通过固定的软件系统,检测嵌入式软件运行速度。嵌入式软件存在缺陷的情况下,无法第一时间对故障反馈,通过集成测试便可以解决这一缺陷。

四、面向安全性分析的嵌入式软件测试方法

(一)嵌入式软件交叉测试平台

目前,嵌入式软件安全测试技术较多,安全测试技术已经应用在各个行业中。嵌入式安全测试过程中应用最多的安全测试方法便是交叉测试技术,并且交叉测试技术已经逐渐成熟。嵌入式交叉测试步骤,主要包括以下几点:第一,在宿主机环境下,需要编写宿主机程序。生成安全测试脚本后,翻译成安全测试指令,传送到安全测试的主机上,采用测试代理的方式将安全测试指令在测试的主机中快速执行。第二,由于安全测试主机具有资源匮乏的特点,安全测试工具主要在测试主机中选择。在安全测试执行过程中,需要对测试数据深入研究与分析,将监测的数据传送到宿主机,由技术人员对测试结果的精准性进行分析,保证测试数据结果的精准性。第三,宿主机接收到安全测试指令后,测试代理遵照安全测试指令,对嵌入式软件进行测试,安全测试完成后,便会自动生成测试数据,先传送到测试代理,再转送宿主机。图1为嵌入式软件交叉测试结构。

(二)软件测试策略

软件测试过程中,利用结构化的组织方法,需要按照规定的软件测试规范标准要求。嵌入式软件安全测试方式,主要分为两种。一方面,无论是哪种嵌入式软件,都会采用元素基本测试法。元素测试方法主要包括嵌入式软件生命周期、硬件设备以及基本技术等。另一方面,嵌入式软件指定的测试方法,主要包括指定嵌入式系统以及指定测试方法。选取安全测试策略时,通过将元素测试方法和指定测试方法充分结合,能够实现嵌入式测试方法和方案的完美契合。

(三)安全测试的组织方式和环境搭建

安全测试组织,是嵌入式软件安全测试中十分常见的使用方法。目前,嵌入式结构组织测试主要通过元素结构和指定结构组织进行测试。元素结构组织,主要是根据嵌入式软件的运行周期、硬件设备以及基本技术和元件等,搭建嵌入式软件测试环境。指定结构组织,主要按照嵌入式软件类型、运行系统和运行环境等,选择指定的测试方法,通过对嵌入式软件结构组织进行测试,将嵌入式软件的价值充分发挥,促使嵌入式测试结果具备正确性。

从安全分析角度来看,嵌入式软件测试过程主要包括以下几点:第一,为保证嵌入式软件测试结构的精准性,技术人员应率先对单元软件进行测试,输入单元测试软件的基本单位,确保基本单位输入正确,再通过嵌入式软件内部逻辑预防策略,避免嵌入式软件安全受到威胁。第二,集成测试阶段,重点查看嵌入式软件安全性,检测平台环境是否存在风险。在集成测试过程中,技术人员需要注意真正模拟目标,避免嵌入式软件出现安全漏洞,将一切可疑的安全漏洞消除,通过渗透活动对软件整体安全性反复验证。第三,嵌入式软件安全测试过程中,由于安全测试技术及安全测试方式相对复杂,技术人员可通过仿真和模拟技术,对目标机运行环境真实模拟。为保证在Android系统下顺利完成安全测试,技术人员需要在PC机安装模拟器,使模拟器与Java程序相互契合,先安装Java环境,再对AndroidSDK解压包和环境变量合理分配。

(四)基于分类的应用软件安全测试

1.软件的功能性安全测试

嵌入式软件功能性安全测试过程中,需要对嵌入式安全需求进行全方面分析。在对嵌入式软件功能性反复验证后,再针对软件功能进行性能设计。为保证嵌入式软件的安全性,应根据安全需求,对应增加系统安全防护方法。例如,分别在权限管理、数据加密以及数据备份与恢复等方面,对应设置系统安全防护方法。另外,正式对嵌入式软件进行测试之前,应对嵌入式软件的方法多次验证,找到最有效的安全测试方法。其中,黑盒测试方法是嵌入式安全测试中常见的验证方法[3]。

2.嵌入式软件的漏洞性安全测试

嵌入式安全测试过程中,需要重点检测安全漏洞。技术人员应站在攻击者的角度,對嵌入式软件漏洞进行检查,尽量找到最多的安全漏洞,其具体安全测试流程如图2所示。图2为漏洞性安全测试基本流程。

由于嵌入式安全漏洞产生的原因不尽相同,解决安全漏洞的方式也是千差万别。可通过DREAR模型对嵌入式安全漏洞风险进行全面检测,并对安全漏洞设置风险等级。安全漏洞的可利用性,是安全漏洞风险检测的关键因素。要先判定安全漏洞可利用性,技术人员明确安全漏洞等级后,再按照漏洞的风险等级设计入侵矩阵以及对应的测试用例,消除嵌入式软件中安全漏洞,避免安全漏洞被放大后对嵌入式软件造成更大危害[4]。

(五)安全测试的执行与分析

1.安全测试前的安全性分析

安全测试前,对程序语言进行安全性测试,并且对Android平台安全机制进行测试,对嵌入式应用软件IReader深入研究与分析。在该嵌入软件结构中,技术人员通过C++编写代码。C++类型的代码可以直接翻译成机器码,再由处理器来执行安全测试。另外,安全测试处于托管的代码状态下,技术人员应将注意力全部集中在本机代码中,因本机代码处于虚拟机范围外,本机代码中的托管风险将一直处于最高点。在嵌入式软件建模和风险分析过程中,应将IReader分为多个文件格式,并且将AndroidShell导入文件格式中,通过FileFuzz对嵌入式软件进行安全测试[5]。

2.安全测试的执行与分析

嵌入式软件的安全漏洞测试过程中,需要对嵌入式软件系统中的不足和缺陷较多的区域进行重点测试,因为攻击者入侵的首要行为,便是在嵌入式软件系统中制造漏洞。技术人员需要根据应用软件以及基本的操作规范,对嵌入式软件系统中的C++代码漏洞进行测试,还需要对整体的Java代码进行漏洞测试。漏洞检测过程中,采用动态分析方法。此方法是目前嵌入式安全测试中使用率最高的测试方法,其漏洞检测效果十分理想。但是该测试方法可能会产生漏报或者误报的问题,尤其是在已经拥有程序代码的测试状态下,仍会发生误报或者漏报的情况。技术人员为改善这一缺陷,将这部分安全漏洞检测,通过静态分析工具以及使用cppcheck的方式,对嵌入式软件中的C++代码进行静态检测。技术人员尚未检测出安全漏洞,仅发现部分不规范编程错误后,将不规范的编程方式导入FindBugs静态分析工具中,由FindBugs按照规定的安全测试规范标准深度挖掘安全漏洞的具体位置。对安全漏洞可能产生的攻击行为全面分析,有助于制定对应的漏洞修补方案。针对嵌入式软件的攻击程度,需要对Maliciouscodevul-nerability深入研究与分析,汇总成一个完整数据表,如表1所示。技术人员将不规范的编程导入FindBugs静态分析工具,继而发现嵌入式软件中的安全漏洞,主要包括Field没有被定义为final类型、Field作为一个不稳定的数组以及Field应该受到保护。技术人员为避免再次出现此类安全漏洞,将所有安全漏洞扫描后,自动生成XML文件。在后续安全测试中,技术人员仅需通过XML文件中便可查询嵌入式安全漏洞,并精准定位到安全漏洞位置,根据安全漏洞的严重程序建立对应的入侵矩阵,有助于嵌入式软件中的安全漏洞验证。表1为恶意代码漏洞。

五、结语

综上所述,随着软件开发技术不断发展,嵌入式软件已应用在各个行业,并且已经成为计算机领域发展的热点。为提升嵌入式软件应用的稳定性,相关部门应定期对嵌入式软件进行安全测试,制定完善的安全测试方案,做好相关编程工作,提升嵌入式软件安全性,促使嵌入式软件在各个行业领域中发挥重要价值。

参考文献

[1]孙洁.基于大数据分析的嵌入式软件测试系统设计[J].自动化与仪器仪表,2023,280(2):209-212+217.

[2]邹小花,王渊.基于DDS的机载嵌入式软件仿真自测试方法[J].计算机仿真,2022,39(10):50-53+172.

[3]刘栋,方丽萍,李国要.基于覆盖率的嵌入式软件测试方法研究[J].电脑与电信,2022,309(10):94-97.

[4]黄铮,周洁,朱学海.一种基于Azure DevOps的面向嵌入式软件的持续集成及自动测试环境[J].工业控制计算机,2022,35(9):17-19+23.

[5]李红卫.基于改进遗传算法的嵌入式软件时序测试数据自动生成方法[J].自动化与仪器仪表,2022,275(9):75-78+83.

猜你喜欢

安全性分析嵌入式软件测试方法
基于泊松对相关的伪随机数发生器的统计测试方法
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
高龄非瓣膜病性房颤患者长期运用华法林抗凝治疗的疗效与安全性分析
系统安全性分析技术在空空导弹中的应用
云环境中数据安全及访问控制模型研究
对改良的三种最小抑菌浓度测试方法的探讨
民用飞机安全性分析研究