对开源分布式操作系统OpenHarmony的注入攻击测试

发表于:2022-10-17 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:OpenHarmony    来源:掘金

  OpenAtom OpenHarmony(以下简称“OpenHarmony”)作为面向全场景的开源分布式操作系统,可广泛应用于智能家居物联网终端、智能穿戴、智慧大屏、汽车智能座舱、音箱等智能终端,为用户提供全场景跨设备的极致体验。这些搭载OpenHarmony的智能终端设备(后文简称:OpenHarmony终端)涉及人们生活的方方面面,成了记录人们日常行为数据和隐私信息的重要载体。不可避免地,这让OpenHarmony终端成了网络黑客的攻击目标,一旦发现设备存在安全漏洞,攻击者就会针对漏洞进行恶意攻击和利用。不仅影响到用户设备、隐私和财产安全,对社会安全更是埋下了潜在隐患。
  为守护OpenHarmony终端安全,HUAWEI DevEco Testing安全测试团队带来了成熟的安全解决方案——注入攻击测试。
  一、HUAWEI DevEco Testing介绍
  HUAWEI DevEco Testing(后文简称:DevEco Testing)是华为为OpenHarmony生态合作伙伴打造的测试服务平台,为伙伴接入提供专业的测试服务,共筑高品质的智能硬件和应用产品。
  为帮助生态合作伙伴守护OpenHarmony终端安全,DevEco Testing团队将华为公司多年的攻防经验实例化,总结出一套丰富、全面的安全测试用例库,形成了标准化的黑盒Fuzz自动化测试服务——注入攻击测试。
  由于DevEco Testing注入攻击测试是一种黑盒Fuzz自动化测试,下面我们就先从Fuzz测试谈起,通过对Fuzz测试的原理和测试执行过程的介绍,让你深入了解DevEco Testing注入攻击测试的背后原理。
  二、Fuzz测试
  面对网络黑客对漏洞的恶意攻击,相较于被动应对外部的暴力破解,安全专家们更乐于主动出击。通过模拟攻击者思维,针对业务系统进行漏洞挖掘,以暴露出业务流程中潜在的安全缺陷。业内进行漏洞挖掘常用的手段包括静态代码扫描、Fuzz测试、渗透测试等,其中Fuzz测试因其效果显著且原理简单,被广泛运用在黑客界、学术界及企业界。例如,Google将Fuzz测试用例作为产品代码交付的标准项,以确保交付组件是稳定、安全和可靠的;微软也在产品全周期中持续进行Fuzz测试,从单元测试系统测试,Fuzz从不停止。
  1.Fuzz测试原理及应用场景
  Fuzz测试是一种通过提供大量非预期的输入(恶意/随机数据),并监测被测系统是否出现异常结果,来发现应用程序中是否存在安全问题的安全测试技术
  通常来说,只要是接受外部数据输入的业务组件/接口,都需要进行Fuzz测试的覆盖。比如,存在外部入口的协议报文、外部文件的解析代码、系统服务接口等,都涉及外部数据输入,被攻击后安全风险非常高。以常见的移动操作系统为例,如图1所示,Fuzz测试会涉及到以下接口:
图1 Fuzz测试涉及的接口
  (1)应用层:上层应用对外暴露的组件,可能接受外部Intent输入。
  (2)系统服务:大量系统服务开放接口被上层应用调用,承担着系统的核心功能。
  (3)网络服务:Socket通信是设备对外传送数据的主要方式,是常见的远程攻击面。
  (4)内核驱动:通过ioctl(input/output control)系统调用向上层提供读写/控制设备的能力。
  针对以上接口,Fuzz测试能发现大多数常见的安全问题:空指针、数组越界、缓冲区溢出、整数溢出、格式串漏洞、资源分配、有效性检查缺少和内存泄漏等。相较于上线后发现漏洞紧急修复,通过Fuzz测试将常见的安全问题暴露在上线前是企业更优的选择。
  2.Fuzz测试执行过程及分类
  Fuzz测试效果备受业内认可,其执行过程并不复杂,通常分为以下步骤:
  (1)选择高风险模块作为测试目标。
  (2)基于种子数据,通过自动或是半自动的方式生成大量测试数据。
  (3)将生成的数据作为输入,发送给被测试的系统执行。
  (4)检测被测系统的状态(断言、异常、进程crash、错误、逻辑错误、重启、能否响应、响应是否正确、系统是否稳定等)。
  (5)根据每次数据执行的结果,反向指导数据的变异,以生成更有效的数据、覆盖更多分支。
  (6)根据被测系统的异常状态,判断是否存在潜在的安全漏洞。
图2 Fuzz测试执行过程
  根据测试过程中使用的不同关键技术,Fuzz测试可以分为白盒Fuzz、黑盒Fuzz、灰盒Fuzz三类:
  其中,黑盒Fuzz测试效率最高,无需考虑内部逻辑结构,仅着眼于程序外部结构,即可快速验证大量潜在的安全威胁。
  对于测试人员来说,黑盒Fuzz测试虽然简单易执行,但想要根据业务流程设计出系统、完备的测试解决方案,往往需要投入巨大成本,对于大多数企业来说这是难以负担的。为帮助生态合作伙伴解决这些难点,DevEco Testing推出了注入攻击测试服务。
  三、DevEco Testing注入攻击测试
  DevEco Testing注入攻击测试,是一种黑盒Fuzz自动化测试服务。在进行注入攻击测试时,将程序看作一个不能打开的黑盒子。在不考虑程序内部结构及特性的情况下,测试人员灵活选择接口进行测试,以检查程序是否能适当地接收输入数据而产生正确的输出信息。
  当前,注入攻击测试服务主要提供以下能力:
  1.已集成系统服务接口和网络通信接口的Fuzz测试能力,支持一次任务多种接口类型同时测试。
  2.支持系统全量SA接口和Socket端口的全自动化测试,零用例,零学习成本。
  3.可定制攻击强度和攻击权限,平台基于配置自动进行Fuzz测试引擎的无缝切换。
  4.支持测试过程中手机的随时插拔,能够在设备重连后继续执行Fuzz测试任务。
  关键步骤如下:
  梳理接收外部数据输入的业务和接口(一般遵循新增/修改、对外开放暴露、权限低、距离攻击入口近的原则,制定风险优先级)。
  分析被测接口或者业务是如何被外部调用的(无需关注业务或者接口是如何实现的,只关注如何被调用即可)。
  连接设备,创建任务并执行。
  查看异常日志。
  根据异常分析是否存在漏洞。
  修复完漏洞后,重新测试验证。
  测试小贴士:
  根据Fuzz测试原理,测试执行时间越长,覆盖的分支越多,测试深度就越深。但产品测试,不可能无限期测试,需要平衡测试时长与效果。根据华为内部测试经验,满足以下两个条件可结束测试:
  达到基本稳定:不生成新的Bug
  达到测试充分:满足时间或者次数要求。
  具体的测试执行策略,开发者需根据自身业务情况确定。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号