HUAWEI DevEco Testing注入攻|击测试:以攻为守,守护OpenHarmon
HUAWEI DevEco Testing注入攻\击测试:以攻为守,守护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测试任务。
使用DevEco Testing注入攻|击测试服务的测试过程也非常简单,演示如下:
测试过程演示
关键步骤如下:
1. 梳理接收外部数据输入的业务和接口(一般遵循新增/修改、对外开放暴露、权限低、距离攻|击入口近的原则,制定风险优先级)。
2. 分析被测接口或者业务是如何被外部调用的(无需关注业务或者接口是如何实现的,只关注如何被调用即可)。
3. 连接设备,创建任务并执行。
4. 查看异常日志。
5. 根据异常分析是否存在漏\洞。
6. 修复完漏\洞后,重新测试验证。
测试小贴士:
根据Fuzz测试原理,测试执行时间越长,覆盖的分支越多,测试深度就越深。但产品测试,不可能无限期测试,需要平衡测试时长与效果。根据华为内部测试经验,满足以下两个条件可结束测试:
1. 达到基本稳定:不生成新的Bug。
2. 达到测试充分:满足时间或者次数要求。
具体的测试执行策略,开发者需根据自身业务情况确定。
四、结束语
目前许多开发者在产品设计和实现阶段忽视了安全问题,以至于上线后风险难以评估和把控。DevEco Testing提倡将安全测试左移,及时暴露出系统及设备漏\洞,通过提供专业、易用、开放的测试服务,帮助OpenHarmony生态伙伴提前规避潜在风险。对本期内容感兴趣的小伙伴,点击公众号“阅读原文”填写《DevEco Testing测试服务试用申请》,即可申请试用DevEco Testing注入攻|击测试服务。
更多安全测试解决方案即将上线,敬请期待!