APP下载

模糊测试技术在可信执行环境安全评测中的应用

2017-12-26詹鹏翼路晔绵詹维骁国炜余泉

移动通信 2017年21期
关键词:测试数据评测漏洞

詹鹏翼,路晔绵,詹维骁,国炜,余泉

(中国信息通信研究院,北京 100191)

模糊测试技术在可信执行环境安全评测中的应用

詹鹏翼,路晔绵,詹维骁,国炜,余泉

(中国信息通信研究院,北京 100191)

随着移动互联网的迅猛发展,TEE在移动终端上的应用也越发广泛,然而各种关于TEE的漏洞层出不穷,为可信应用的安全性埋下了隐患,因此从模糊测试技术的简要原理出发,介绍模糊测试技术应用在TEE安全测评中的可行性思路与实现。在实际的安全评测中,使用模糊测试技术在TEE安全评测中发现了不少潜在的问题,API模糊测试已成为TEE安全测评过程中必不可少的重要组成部分。

模糊测试 可信执行环境 系统安全评测 API安全性

1 引言

模糊(Fuzzing)测试是一种自动或半自动化地提供非预期的输入,并通过监视异常结果来发现实际软件实现漏洞的测试方法。模糊测试的概念最早是由University of Wisconsin Madison的Professor Barton Miller和他的学生提出的,Professor Barton Miller在高级操作系统课程上,实现了一个简单原始的模糊器(Fuzzer)来测试UNIX系统的健壮性[1]。2006年开始,模糊测试技术在软件检测领域得到了长足的发展,2007年,Team509安全团队的wushi通过模糊测试技术发现了QQ的一个溢出漏洞,Wushi本着“负责任的漏洞披露过程”将漏洞细节告知了腾讯安全团队[2]。为此,腾讯还专门发布了一个安全公告。2008年,Godefroid等人利用Fuzzing工具SAGE发现大型Windows应用程序中二十多个未知漏洞[3]。

此后一些开源的模糊器和模糊测试框架渐渐走向成熟,例如American fuzzy lop、Peach及Sulley等,在发现软件漏洞这一领域均取得了不俗的成果,模糊测试显然已经成为发现软件漏洞的重要手段与测试方式之一。

TEE(Trusted Execution Environment,可信执行环境)是一个与移动智能终端设备上REE(Rich Execution Environment,富执行环境)并存的操作系统,它提供了一个与Rich OS(通常是Android)隔离的运行环境,为移动支付、数字版权保护、身份验证和敏感信息存储等保驾护航。然而当TEE系统被攻破时,其提供的一切安全服务不再有任何可信度,所以TEE自身的安全性就显得尤为重要。近几年随着TEE技术的快速发展与实际应用(指纹解锁、手机转账等),针对TEE报出的漏洞也是层出不穷,例如QSEE的提权漏洞(CVE-2015-6639),可以利用该漏洞来提取密钥等重要敏感信息。2017年8月17日,iOS的Secure Enclave[4](Apple的TEE系统)固件的密钥被公布[5],与此同时,曾在San Bernardino枪击案中帮助FBI解锁嫌疑人iPhone 5c的安全公司Cellebrite,也宣称已经成功破解了iPhone 6的Secure Enclave[6]。

由此可见,随着TEE系统在移动终端上越来越广泛的应用,如何保证TEE自身的安全性就显得尤为重要,TEE系统的安全评测工作也随之受到产业需求方以及行业监管方的关注。本文就模糊测试技术进行简要的介绍,并对其在TEE系统安全测评中的应用提供一些可行性的思路和实践经验。

2 模糊器架构

一个完善的模糊测试流程应具备以下几个阶段,如图1所示:

图1 模糊测试的阶段

(1)识别目标

首先要确定模糊测试的对象,尤其是被多个应用程序所共享的第三方库,这类型第三方库的用户群体较大,出现安全问题的风险较高。要对其出现过的漏洞进行一定考察分析,并在模糊测试中重点关注,确定测试对象后再选择与其相匹配的模糊测试技术。

(2)识别输入

可被利用的漏洞很大一部分都是由于特殊的输入导致的,所以任何发往目标程序的输入都是输入向量。

(3)生成模糊测试数据

如何生成的值、如何变异已有的数据或动态生成数据,这些决策取决于目标应用程序及其数据格式。模糊测试的数据不仅仅是相关的边界值、非法值,也同样要包括半随机的生成测试数据,即在重要的参数中大部分生成合法且有效的数据,于此同时,其余部分生成非法或不满足其数据格式的参数数据,进行不断地排列组合。

(4)执行模糊测试数据

自动化地将生成的模糊测试数据发送给目标程序。由于目标程序未必考虑到所有可能的非法数据的过滤,模糊数据可能会导致异常,并触发相关的漏洞。

(5)监视异常

对目标程序故障或异常的监控是模糊器至关重要的一步,不但要监测并记录导致故障或异常出现的模糊测试数据,更要记录下异常出现的上下文信息以及代码报错的详细信息,以便复现这个异常的出现,此外还要能保证其他的测试输入不受引发异常的测试数据的影响,持续地正常运行。所以一个完善的模糊器架构中如图2所示。监控器模块要与其他模块进行解耦合,准确地定位问题的出现并高效地发挥其作用。

图2 模糊器的架构示例

(6)确定可利用性

得到这个结果后,通过对模糊器的输出信息进行分析,以确定导致异常的模糊测试数据。必要的时候开发相关的测试例,对目标程序进行相关的渗透测试,以确定该异常引发的漏洞的可利用性。

3 模糊技术在TEE安全测试实例

本文以OPTEE为安全测试对象,OPTEE是一个开源的基于ARM Trustzone技术的TEE操作系统,其实现严格遵循了GlobalPlatform的TEE System Architecture Specification中的要求。并且OPTEE也在不断地完善、改进中,所以对其安全性的评测有着很重要的价值和意义。OPTEE框架的如图3所示。

在OPTEE的架构中,一个应用程序分为两部分,一部分运行在REE中的CA(Client Application),一部分是在TEE中的TA(Trusted Application)。实际运行时,CA首先调用TEE Client API,该API通过SYSCALL(系统调用),从用户态进入到内核态,根据相应的参数寻找到相对的OPTEE driver,之后通过SMC操作将cortex切换到secure world状态,从而实现了进入OPTEE Trusted OS。OPTEE Trusted OS会接管后续的操作,首先处理相应的传入参数,通过解析UUID,加载或直接使用拥有该UUID的TA,该TA再根据command参数调用TEE internal API实现具体的操作。

OPTEE精巧的框架设计,应用最小权限原则,实行严格的权限管理,尽量降低了CA、TA的权限,有效地降低了攻击面,这就使得程序运行时TEE internal API的安全性显得尤为重要。本文针对自行研发的TEE API模糊测试工具在OPTEE上的移植、评估进行简要的介绍。

(1)识别测试对象

对OPTEE的源代码进行深入分析,在分析过程中发现加密解密模块所用的是LibTomCrypt库,对该库曾出现过的漏洞进行查阅,并对同类的问题进行重点关注,这样便于在编写后续的测试例时进行重点检测。例如LibTomCrypt库中rsa_verify_hash.c文件的‘rsa_verify_hash_ex’函数曾存在过安全漏洞(CVECVE-2016-6129),攻击者可利用其漏洞进行RSA签名伪造等[10]。

(2)生成模糊测试数据

本文针对TEE API模糊测试工具采用预生成样本数据的方式,基于上一步分析出的可能导致异常的数据,同样加入到该模糊测试数据中。且测试工具所涵盖的测试例遍历了所有TEE API所支持的功能,包括Fuzz API(API的模糊测试)、Abuse API(滥用API测试)及Memory test(内存压力测试等)三大类测试。

图3 OPTEE架构示意图

(3)测试工具移植

工具移植的主要思想是自行编写CA和TA,并将其上传到开发板运行。CA调用相关的TA进行测试,首先获取到OPTEE的SDK,通过导入OPTEE的动态库libteec.so与teec_client.h头文件,编译模糊器的CA。本模糊测试工具采用NDK-build(Native Development Kit)的方式来编译,Android.mk代码如图4所示:

图4 编译CA的Android.mk文件示例

通过ADB(Android Debug Bridge)工具的adb push语句,将编译好的CA导入到开发板中。同样,通过使用SDK编译模糊器的TA部分,编译时注意使用UUID作为每个TA的唯一标识,成功编译后通过ADB push命令将TA导入到目标开发板中的指定目录中。

(4)工具运行

使用ADB工具进入开发板的shell,并执行该模糊器。在模糊测试启动后,模糊器将自动地将测试数据不断导入到相关的测试例中。CA将模糊测试数据不断地排列组合,并申请调用相应API,TA端通过接口接收该调用命令,通过TEE Internal API接口执行实现具体操作。

上述过程完成了TEE API接口的模糊测试,在整个测试过程中,监控器模块可以实时地监控该模糊器的运行状态,并在故障、崩溃或异常情况时对所有运行数据进行记录,并在运行完成后对记录的所有信息进行分类汇总、输出,并生成可读的Excel文件。API模糊测试报告示例如图5所示。

最后通过分析引发异常的模糊测试数据,确定相应的API是否有漏洞,编写由该类数据为参数组成的测试例进行反复测试,进而判断该API引发的漏洞是否有被利用的可能性。

4 对数据的分析

通过对输出结果的详细分析,不仅可以分析出API的潜在问题,还可以以此为依据继续编写相应的CA、TA,进行后续的渗透测试,以便确定其漏洞的可利用性。例如,通过对测试结果的观察,发现在某API测试例的多次for循环中,出现了固定循环次数引发崩溃的现象。经过进一步的详细分析,发现是由于不断初始化某句柄,导致内存溢出,进而引发TEE系统崩溃。

5 结束语

图5 API模糊测试报告示例

OPTEE是一个开源的、在不断改进中的TEE操作系统,本文的测试以OP-TEE为例,对模糊技术在TEE安全评测的应用做了简要的介绍。在实验室对市面上其他商用的TEE系统安全测试过程中,同样利用该模糊技术发现了不少的API实现的具体问题,对这些存在风险的API不恰当的使用,可能会造成系统崩溃等异常现象,为可信应用的正常执行带来了隐患,例如指纹识别、手机转账、数字版权保护等应用都有被攻破的可能。在基于TEE安全技术的移动智能设备飞速增长的未来几年里,TEE Internal API潜在的安全隐患不容忽视,因此对TEE系统开展行之有效的安全测试刻不容缓。

在安全测评的实际过程中,利用模糊测试技术,不仅能全面地发现了API的潜在漏洞,也在测试的同时,根据测试的异常数据仔细分析,帮助TEE厂商不断完善其代码的实现,尽可能地将由API引发漏洞的概率降到最低。在整个的TEE安全评测过程中,针对API的模糊测试只是第一步,它为后续测试提供了大量可分析的数据,为后续的TEE已知漏洞检测等打下了基础,所以它也是最至关重要的一部分。

[1] M Sutton, A Greene, P Amini. Fuzzing: Brute Force Vulnerability Discovery[M]. USA: Addison-Wesley Professional, 2007.

[2] lake2[TSRC]. Fuzz漏洞挖掘漫谈[EB/OL]. (2013-11-02)[2017-10-27]. https://security.tencent.com/index.php/blog/msg/28.

[3] QQ安全中心. QQ远程协助堆溢出漏洞处理报告(TX07092701)[EB/OL]. (2007-09-27)[2017-10-27].http://aq.qq.com/v2/notice/content_2.shtml.

[4] CVE. CVE-2015-6639[EB/OL]. (2016-01-01)[2017-10-27]. http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-6639.

[5] Apple Inc. iOS Security[EB/OL]. [2017-10-27]. http://images.apple.com/euro/privacy/d/generic/docs/iOS_Security_Guide.pdf.

[6] Laginimaineb. QSEE privilege escalation vulnerability and exploit[EB/OL]. [2017-10-27]. http://bits-please.blogspot.jp/2016/05/qsee-privilege-escalationvulnerability.html.

[7] Michael Mimoso. Hacker Publishes iOS Secure Enclave Firmware Decryption Key[EB/OL]. (2017-08-16)[2017-10-27]. https://threatpost.com/hacker-publishes-iossecure-enclave-f i rmware-decryption-key/127524/.

[8] GlobalPlatform Device Technology. TEE Internal API Specification Version 1.0. Technical Report GPD_SPE_010, globalplatform.org[R]. 2011.

[9] GlobalPlatform Device Technology. TEE Internal Core API Specif i cation Version 1.1.1 Technical Report GPD_SPE_010, globalplatform.org[R]. 2016.

[10] 国家信息安全漏洞库. Linaro OP-TEE安全漏洞[EB/OL]. (2017-02-15)[2017-10-27]. http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201702-466.

[11] 国炜. 移动终端可信环境技术要求第2部分:可信执行环境[Z]. 2015.

[12] 国炜. 移动终端可信环境技术要求第4部分:安全操作系统[Z]. 2015. ★

Application of Fuzz Test Technology in Security Evaluation on Trusted Execution Environment

ZHAN Pengyi, LU Yemian, ZHAN Weixiao, GUO Wei, YU Quan
(China Academy of Information and Communications Technology, Beijing 100191, China)

With the rapid development of mobile Internet, the Trusted Execution Environment (TEE) has been widely applied in mobile terminal devices. However, security issues of TEE grow continually resulting in the potential risk to the trusted application. Based on the principle of fuzz test, the feasible idea and implementation of fuzz test technology in the TEE security evaluation were introduced. In the actual security test, the use of fuzz test technology fi nds out some potential problems in the TEE security evaluation. API fuzz test becomes the indispensable component in the process of TEE security evaluation.

fuzz test Trusted Execution Environment system security evaluation API security

编 者 按

互联网在信息安全方面始终存在着极大的隐患,特别是在移动终端侧,个人信息泄露等问题频繁发生,对此产业各方都采取了相应的解决措施,其中TEE(可信执行环境)和云安全防护是两项应用较广的技术,因此本期专题将主要展示业界对TEE和云安全防护技术的具体应用、安全评测等方面的研究,期待业界同仁展开更进一步的探讨和解析。

10.3969/j.issn.1006-1010.2017.21.001

TN929.5

A

1006-1010(2017)21-0001-05

詹鹏翼,路晔绵,詹维骁,等. 模糊测试技术在可信执行环境安全评测中的应用[J]. 移动通信, 2017,41(21): 1-5.

2017-10-27

黄耿东 huanggengdong@mbcom.cn

詹鹏翼:工程师,硕士毕业于伦敦国王学院,现任职于中国信息通信研究院泰尔终端实验室,主要研究方向为可信执行环境安全评测、模糊测试。

路晔绵:工程师,博士毕业于中国科学院大学,现任职于中国信息通信研究院泰尔终端实验室,主要研究方向为移动互联网安全、可信执行环境安全。

詹维骁:助理工程师,毕业于北京信息科技大学,现任职于中国信息通信研究院,主要从事移动智能终端安全性检测及相关管理工作。

猜你喜欢

测试数据评测漏洞
漏洞
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
测试数据管理系统设计与实现
攻坡新利器,TOKEN VENTOUS评测
Canyon Ultimate CF SLX 8.0 DI2评测
三明:“两票制”堵住加价漏洞
基于自适应粒子群优化算法的测试数据扩增方法
空间co-location挖掘模式在学生体能测试数据中的应用
高铁急救应补齐三漏洞