51Testing软件测试论坛

标题: 如何使用OpenHarmony操作系统进行注入攻击测试? [打印本页]

作者: 草帽路飞UU    时间: 2022-10-17 15:44
标题: 如何使用OpenHarmony操作系统进行注入攻击测试?
本帖最后由 草帽路飞UU 于 2022-10-17 15:46 编辑

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测试会涉及到以下接口:

[attach]143903[/attach]
图1 Fuzz测试涉及的接口

(1)应用层:上层应用对外暴露的组件,可能接受外部Intent输入。

  (2)系统服务:大量系统服务开放接口被上层应用调用,承担着系统的核心功能。


  (3)网络服务:Socket通信是设备对外传送数据的主要方式,是常见的远程攻击面。


  (4)内核驱动:通过ioctl(input/output control)系统调用向上层提供读写/控制设备的能力。


  针对以上接口,Fuzz测试能发现大多数常见的安全问题:空指针、数组越界、缓冲区溢出、整数溢出、格式串漏洞、资源分配、有效性检查缺少和内存泄漏等。相较于上线后发现漏洞紧急修复,通过Fuzz



测试将常见的安全问题暴露在上线前是企业更优的选择。


  2.Fuzz测试执行过程及分类


  Fuzz测试效果备受业内认可,其执行过程并不复杂,通常分为以下步骤:

  (1)选择高风险模块作为测试目标。


  (2)基于种子数据,通过自动或是半自动的方式生成大量测试数据。


  (3)将生成的数据作为输入,发送给被测试的系统执行。


  (4)检测被测系统的状态(断言、异常、进程crash、错误、逻辑错误、重启、能否响应、响应是否正确、系统是否稳定等)。


  (5)根据每次数据执行的结果,反向指导数据的变异,以生成更有效的数据、覆盖更多分支。


  (6)根据被测系统的异常状态,判断是否存在潜在的安全漏洞。


[attach]143904[/attach]

图2 Fuzz测试执行过程

根据测试过程中使用的不同关键技术,Fuzz测试可以分为白盒Fuzz、黑盒Fuzz、灰盒Fuzz三类:


[attach]143905[/attach]


其中,黑盒Fuzz测试效率最高,无需考虑内部逻辑结构,仅着眼于程序外部结构,即可快速验证大量潜在的安全威胁。

  对于测试人员来说,黑盒Fuzz测试虽然简单易执行,但想要根据业务流程设计出系统、完备的测试解决方案,往往需要投入巨大成本,对于大多数企业来说这是难以负担的。为帮助生态合作伙伴解决这些



难点,DevEco Testing推出了注入攻击测试服务。


  三、DevEco Testing注入攻击测试


  DevEco Testing注入攻击测试,是一种黑盒Fuzz自动化测试服务。在进行注入攻击测试时,将程序看作一个不能打开的黑盒子。在不考虑程序内部结构及特性的情况下,测试人员灵活选择接口进行测


试,以检查程序是否能适当地接收输入数据而产生正确的输出信息。

  当前,注入攻击测试服务主要提供以下能力:


  1.已集成系统服务接口和网络通信接口的Fuzz测试能力,支持一次任务多种接口类型同时测试。


  2.支持系统全量SA接口和Socket端口的全自动化测试,零用例,零学习成本。


  3.可定制攻击强度和攻击权限,平台基于配置自动进行Fuzz测试引擎的无缝切换。


  4.支持测试过程中手机的随时插拔,能够在设备重连后继续执行Fuzz测试任务。


  关键步骤如下:


  梳理接收外部数据输入的业务和接口(一般遵循新增/修改、对外开放暴露、权限低、距离攻击入口近的原则,制定风险优先级)。


  分析被测接口或者业务是如何被外部调用的(无需关注业务或者接口是如何实现的,只关注如何被调用即可)。


  连接设备,创建任务并执行。


  查看异常日志。


  根据异常分析是否存在漏洞。


  修复完漏洞后,重新测试验证。


  测试小贴士:


  根据Fuzz测试原理,测试执行时间越长,覆盖的分支越多,测试深度就越深。但产品测试,不可能无限期测试,需要平衡测试时长与效果。根据华为内部测试经验,满足以下两个条件可结束测试:


  达到基本稳定:不生成新的Bug。


  达到测试充分:满足时间或者次数要求。


  具体的测试执行策略,开发者需根据自身业务情况确定。















欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2