您好, 访客   登录/注册

嵌入式系统软件安全测试技术研究

来源:用户上传      作者:

  摘 要
  从嵌入式软件安全性测试的必要性和需求特点出发,本文分析了嵌入式软件安全测试的方式方法,并对安全测试关键技术和面临的难点等进行论述。期望通过本文的研究能够对嵌入式系统软件信息安全水平的提升有所帮助。
  关键词
  嵌入式软件;安全测试;测试方法
  中图分类号: TP311.52                   文献标识码: A
  DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 17 . 18
  Abstract
  Based on the demand of embedded software security testing, this paper analyzes the embedded software security testing methods, key technologies and difficulties. It is expected that the research of this paper can be helpful to the improvement of information security of embedded system software.
  Key words
  Embedded software;Security testing;Testing method
  1 嵌入式系统软件的特点及其安全需求
  嵌入式系统从构架上来看一般可以分成3-4个层次:硬件层、硬件接口层(驱动层)、操作系统层(中间层)和应用层。而嵌入式软件在设计之初就要求具备功能稳定、可靠性好、实时性高、系统资源占用少等特点。现阶段,虽然面向物联网应用的嵌入式设备越来越多样化,但其在逻辑架构层次本质上与嵌入式系统架构并无太大区别[1]。
  嵌入式软件的自身特性决定了其独特的安全需求:一是功能稳定、可靠性好,就要求功能安全是嵌入式软件的首要目标,即使在受到攻击的情况下,也有较强的鲁棒性和容灾恢复能力;二是实时性高、系统资源占用少,要求不能部署过于复杂的安防手段;三是专用性强、软件与硬件系统耦合,就要求软件加固或应用升级也须匹配目标设备硬件,开展测试也需要特定的硬件环境。近年来嵌入式产品的应用遍及航天、医疗、智能家居等各个领域,嵌入式安全不仅涉及个人隐私,甚至关乎国计民生,这对嵌入式系统的安全性提出了更高的要求。与之相矛盾的是和嵌入式系统相关的安全事件频频发生,加强嵌入式软件的安全测试十分必要。
  2 嵌入式软件安全测试方法
  在软件的整个生命周期内,软件测试对项目的开发和交付起着非常关键的作用,嵌入式软件安全性测试一般针对安全需求设计,首先开展功能安全验证,然后基于安全参考标准或模型对被测对象进行风险分析,再进行全面的信息安全测试,并验证结果[2]。
  2.1 嵌入式软件功能安全测试
  嵌入式软件的功能安全测试通常可以结合嵌入式软件的通用测试开展,例如在单元测试中校验模块开发是否满足了设计方案中提出的安全要求,在集成测试中设计功能安全测试用例,检验各模块间的接口和通信是否安全[3]。现在越来越多的嵌入式软件会考虑自身安全而增加专业的系统安全防护设计,例如身份认证、加密传输、数据备份与恢复等,相应的也要针对性的设计功能安全测试用例,确保其达到设计要求。
  2.2 嵌入式软件信息安全测试
  嵌入式软件的信息安全测试又称渗透测试,测试人员在进行测试时,应当采用攻击者的视角,去发现软件中存在的各种安全缺陷和漏洞。其一般流程如下:根据安全需求选择安全测试参考标准并确立安全规则,对嵌入式软件环境平台进行安全性分析,对程序开发语言进行安全性分析,对被测软件进行威胁建模,搭建测试平台,按照测试大纲同步进行已知漏洞挖掘和未知漏洞挖掘,对漏洞进行分级并进行验证,提交测试结果和反馈。需要特别注意的是,在嵌入式软件开发过程中被复用的代码或引入的开源项目代码应该得到足够的重视。一些已知漏洞,特别是嵌入式操作系统存在的已知漏洞可能会长期存在,可以采用基于指纹校验的漏洞匹配技术进行已知漏洞的快速查验。
  2.3 嵌入式软件安全测试策略
  嵌入式软件安全测试策略的制定往往与软件选择的开发模式緊密相关。在V模型中,嵌入式软件安全测试包括单元测试、集成测试和系统安全测试。但是这种测试策略忽视了安全测试对需求分析和系统设计的验证,介入周期晚,容易带来额外的风险和开销。基于双V模型(W模型)的嵌入式软件安全测试策略则要求测试的对象不仅仅是程序,需求分析、功能和设计同样需要测试人员尽早介入进行安全验证。但是V模型和双V模型将开发、测试等活动视为串行活动,不支持迭代也存在局限性。近年来兴起了基于模型设计(MBD)的嵌入式产品开发模式,可以在缩短产品开发周期的同时保证嵌入式软件的产品质量。其在软件安全测试流程中增加了模型规范性验证、模型在环测试、软件在环测试和处理器在环测试等[4]。这种测试方法强调了模型的驱动作用,针对某些有良好模型基础的行业(比如汽车电控、航空航天)的嵌入式软件,可以有效提升功能安全的测试效果,但对漏洞挖掘等信息安全测试的支持还不够好。
  3 嵌入式软件安全测试关键技术
  3.1 静态分析技术
  静态分析技术指对嵌入式软件进行静态的代码分析和缺陷检测。在不运行被测程序的方式下,采用词法语法分析、数据流控制流分析、规则检查、字符串匹配和模型化分析等技术对代码进行分析扫描,发现其中的逻辑、语法错误,确认是否存在缺陷[5]。常见的静态检测工具有PC-Lint、QAC/C++、CPPcheck、StackAnalyzer、Splint、Findbugs等。静态分析属于白盒测试,该方法可以发现常见的代码安全缺陷模式,如缓冲区溢出等,但会存在漏报率、误报率较高的局限性。   3.2 动态测试技术
  动态测试技术是指在嵌入式程序运行过程中进行测试分析、数据注入,检查运行结果与预期是否相符合,从而达到寻找程序漏洞的目的。动态测试的核心要求是需要动态执行嵌入式系统程序,因而测试更为全面和贴合实际。测试中可以借助LVC手段构建不同的测试环境,可以利用故障注入技术验证系统的鲁棒性和安全性,但动态测试技术也存在着依赖高素质软件测试人员、测试过程不细化的问题,需要与其他测试技术相结合,才能够有效提升测试效果。
  3.3 模糊测试技术
  对于无法获得源代码的嵌入式软件,选用黑盒模糊测试是最合适也是最有效的手段,该方法不需要被测对象的源代码,可以解决闭源嵌入式设备的漏洞挖掘痛点问题。同时,还可以模拟用户的异常输入或者恶意攻击者的畸形数据,发现更多的攻击面探测,从而展示出真实攻击状态下的漏洞利用情况。但由于模糊测试中畸形数据的产生有很大随机性,所以对程序的路径覆盖度不高,并且难以对测试进度进行量化。因此,在对嵌入式系统软件开展模糊测试时,往往采用基于先验知识的测试用例构造算法提高数据包覆盖效率,并优化监控算法、丰富异常处理策略来提高系统灵活性和自动化程度。
  4 嵌入式软件安全测试面临的挑战
  尽管针对嵌入式软件安全的研究越来越深入,安全测试工具也越来越多,但当前嵌入式软件安全测试仍面临挑战。一是物联网产品层出不穷导致安全测试需求多变。二是嵌入式产品的快速开发应用需求与安全性测试时间经济开销之间存在矛盾。三是存在漏洞的产品仍将长期使用,比如使用VxWorks、Android等早期版本发现问题后无力修补。四是缺乏高效的嵌入式软件安全测试与漏洞检测方法。现有的嵌入式安全测试工具与漏洞挖掘方法,往往专注于细分领域,执行效率不够高效、发现的安全缺陷也不够全面。但这些问题既是挑战,也是机遇,可以为我们未来深入开展嵌入式系统软件安全测试技术研究提供牵引。
  5 总结
  本文首先分析了嵌入式软件安全性测试的必要性和特点,然后重点对嵌入式软件安全测试的方式方法、测试策略和关键技术进行分析阐述,提出了当前嵌入式安全测试面临的几个挑战。期望通过本文的研究能够对嵌入式系统软件信息安全測试工作的开展和提升有所帮助。
  参考文献
  [1]彭安妮,等.物联网操作系统安全研究综述[J].通信学报,2018.39(03):22-34.
  [2]林永峰,陈亮.面向安全性分析的嵌入式软件测试方法研究[J]. 现代电子技术,2016. 39(13):80-83.
  [3]王磊.嵌入式软件进行功能测试的相关技术研究[J].自动化与仪器仪表,2018(4):71-73.
  [4]张亚楠,谢冬红.基于模型设计的嵌入式软件测试技术研究[J]. 电子世界,2018(09):66,68.
  [5]叶亮.基于安全规则的源代码分析方法研究[D].华中科技大学,2013:3.
转载注明来源:https://www.xzbu.com/8/view-15283188.htm