一种测试可信环境下API安全性的方法、装置及存储介质与流程

文档序号:14742880发布日期:2018-06-19 22:55阅读:195来源:国知局
一种测试可信环境下API安全性的方法、装置及存储介质与流程

本发明涉及模糊测试领域,尤其涉及一种测试可信环境下API安全性的方法、装置及存储介质。



背景技术:

模糊测试(Fuzzing Test)是一种自动或半自动化地提供非预期的输入,并通过监视异常结果来发现实际的软件实现的漏洞。模糊测试的概念最早是由University ofWisconsin Madison的Professor Barton Miller和他的学生提出的,他在高级操作系统课程上,实现了一个简单原始的模糊器(fuzzer)来测试UNIX系统的健壮性。2006年开始,模糊测试技术在软件检测领域得到了长足的发展,2007年,team509安全团队的wushi通过模糊测试技术发现了QQ的一个溢出漏洞,wushi本着“负责任的漏洞披露过程”将漏洞细节告知了腾讯安全团队。为此,腾讯还专门发布了一个安全公告。2008年Godefroid等人,利用Fuzzing工具SAGE发现大型Windows应用程序中二十多个未知漏洞。近几年一些开源的模糊器和模糊测试框架渐渐走向成熟,例如American fuzzy lop,Peach,Sulley等,在发现软件漏洞这一领域,均取得了不俗的成果。模糊测试显然已经成为发现软件漏洞的重要手段与测试方式之一,然而实时高效准确地监控异常的监控模块一直是实现模糊测试工具的难点。

可信执行环境TEE(Trusted Execution Environment)是一个与移动智能终端设备上富执行环境REE(Rich Execution Environment)并存的操作系统,它提供了一个与Rich OS(通常是Android)隔离的运行环境,为移动支付、数字版权保护、身份验证和敏感信息存储等保驾护航。在具有TEE的移动设备上,一个应用程序,是由在REE(比如Android)端的CA(Client Application)和TEE中的TA(Trusted Application)两部分共同组成的。TEE的隔离设置是保障应用安全的重中之重,典型的TEE框架如图1所示。然而当TEE系统被攻破时,其提供的一切安全服务不再有任何可信度,应用的安全更无从谈起,所以TEE自身的安全性就显得尤为重要。近几年随着TEE技术的快速发展与实际应用(指纹解锁、手机转账等),针对TEE报出的漏洞也是层出不穷,例如QSEE的提权漏洞(CVE-2015-6639),可以利用该漏洞来提取密钥等重要敏感信息。2017年8月17日,iOS的Secure Enclave(Apple的TEE系统)固件的密钥被公布。

在基于TEE安全技术的移动智能设备飞速增长的今天,TEE潜在的安全隐患不容忽视,因此对TEE Internal API开展行之有效的模糊测试刻不容缓。

应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。



技术实现要素:

本发明实施例提供一种测试可信环境下API安全性的方法、装置及存储介质,以实现对TEE Internal API开展行之有效的模糊测试,并能实时监控并记录异常的产生,以及自动生成详细的测试报告及原始记录,以备后续的漏洞分析与渗透测试。

为了达到上述目的,本发明实施例提供一种测试可信环境下API安全性的方法,包括:根据被检测TEE的API文档,生成相关的模糊测试数据;编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下;运行所述模糊测试工具,将所述被检测TEE的API的相关的模糊测试数据不断地送入到所述模糊测试工具的测试例中,运行结束后生成所述被检测TEE的API的模糊测试报告。

为了达到上述目的,本发明实施例还提供一种测试可信环境下API安全性的装置,包括:模糊测试数据生成模块,用于根据被检测TEE的API文档,生成相关的模糊测试数据;模糊测试工具编译模块,编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下;模糊测试报告生成模块,用于运行所述模糊测试工具,将所述被检测TEE的API的相关的模糊测试数据不断地送入到所述模糊测试工具的测试例中,运行结束后生成所述被检测TEE的API的模糊测试报告。

为了达到上述目的,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述测试可信环境下API安全性的方法的步骤。

本发明实施例所揭示的测试可信环境下API安全性的方法、装置及存储介质,能高效地对TEE Internal API的安全性进行全方位的评估,该测试工具不仅可以实时准确地捕捉异常的产生,更具有高度自动化、运行灵活、易于移植等特点。此外,自动输出的测试报告不仅有直观的检测结果,同时也包括了产生异常的API名称、测试项数和关键步骤比对次数,更包含了导致异常的模糊测试数据,出错的详细代码行数,便于TEE厂商进行错误重现,定位代码实现问题。此外,该工具松耦合的软件架构可快速高效地添加新的测试例或修改现有测试例,以便对TEE进行后续的软件渗透测试等。

参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为TEE框架示意图;

图2为本发明实施例的测试可信环境下API安全性的方法的处理流程图;

图3为图2所示实施例的步骤S102的处理流程图;

图4为本发明实施例的编译模糊测试工具的CA的Android.mk的示例代码;

图5为本发明实施例的编译模糊测试工具的TA的Makefile的示例代码;

图6为本发明实施例的生成的模糊测试报告的示例;

图7为本发明实施例的测试可信环境下API安全性的装置的结构示意图;

图8为本发明实施例的模糊测试工具编译模块102的结构示意图;

图9为本发明实施例的模糊测试报告生成模块103的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

在本发明中,需要理解的是:

TEE,Trusted Execution Environment,可信执行环境;

CA,Client Application,客户端应用;

TA,Trusted Application,可信端应用;

API,Application Programming Interface,应用程序编程接口;

SDK,Software Development Kit,软件开发工具包,为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合;

NDK,Native Development Kit,是一套允许使用原生代码语言(例如C和C++)实现部分应用的工具集;

测试例,一个测试例由一个CA和一个或多个TA共同组成。

TEE精巧的框架设计,应用最小权限原则,实行严格的权限管理,尽量降低了CA、TA的权限,有效地降低了攻击面,这就使得程序运行时TEE internal API的安全性显得尤为重要。本发明主要通过应用模糊测试技术解决了针对TEE Internal API的安全性评估的问题,此外该方案能准确监控异常、生成详细的测试报告以及原始记录,可以轻易复现异常,通过分析测试结果也可以对TEE进行后续的测试。

图2为本发明实施例的测试可信环境下API安全性的方法的处理流程图。如图2所示,包括:

步骤S101,根据被检测TEE的API文档,生成相关的模糊测试数据;

步骤S102,编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下;

步骤S103,运行所述模糊测试工具,将所述被检测TEE的API的相关的模糊测试数据不断地送入到所述模糊测试工具的测试例中,运行结束后生成所述被检测TEE的API的模糊测试报告。

具体实施时,在步骤S101中,所述根据被检测TEE的API文档,生成相关的模糊测试数据,包括:审阅被检测TEE的API文档,根据相应的参数、功能等具体实现,生成相关的模糊测试数据;所述模糊测试数据包括边界值、特殊值、随机的非法数据。以下举例说明:

TEE_Result TA_EXPORT TA_OpenSessionEntryPoint(

uint32_t paramTypes,

[inout]TEE_Param params[4],

[out][ctx]void**sessionContext)

这个函数的功能是CA与TA建立session(会话)连接的接口函数。在获知这个API的参数的限制条件以及API功能后,以生成模糊测试数据。比如参数paramTypes,根据文档,取值只可能是{0,1,2,3,5,6,7},那么所有不是以上值的输入都是可能的模糊数据。

并且,在有多个参数作为输入时,模糊数据的各种排列组合也是必不可少的。测试例应考虑API的具体功能,对其可能导致异常的关键操作进行重点关注,对所有的API进行模糊测试(Fuzz)、滥用(Abuse)测试、内存压力(Memory Test)测试等。

比如函数function(int a,int b,int c)有三个需要传入的参数,分别是a,b,c。假设根据文档的要求,三个参数均是大于0小于100的整数。

那么a,b,c可能的模糊测试数据就可以是{0,1000,-2,1.5};

模糊测试数据的排列组合指的是:

b、c参数满足正常要求,a参数使用模糊测试数据,即:

Function(0,1,1)、Function(1000,1,1)、Function(-2,1,1)、Function(1.5,1,1);

c参数满足正常要求,a、b参数使用模糊测试数据,即:

Function(0,0,1)、Function(0,1000,1)、Function(0,-2,1)、Function(0,1.5,1)、Function(1000,0,1)、Function(1000,1000,1)、……;

直到遍历完所有的可能组成。

本发明实施例所提及的API测试工具,除了模糊测试以外,同时也包含对API的滥用测试(在测试例的编写中,对某些API进行不该有的调用,判断TEE是否会出现异常情况)、内存压力测试(通过不断调用特定的消耗内存API,不断分配内存地址,判断TEE是否会出现异常情况)。

具体实施时,在步骤S102中,所述编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下,如图3所示,其具体包括以下步骤:

步骤S1021,通过NDK编译所述模糊测试工具中的所有CA;

步骤S1022,通过SDK编译所述模糊测试工具中的所有TA;

步骤S1023,编译成功后,通过安卓调试桥工具的adb push语句将编译好的CA和TA导入到测试设备的指定路径下。

在本发明实施例中,编译指的是,将程序从源代码状态编译成可运行的二进制文件。这一步是将整个API模糊测试工具编译,这个工具由整体逻辑架构、测试例、监控模块、调度模块等组成的,将它们整体编译为一个可运行在指定目标设备上的程序。

使用模糊测试工具的第一步是移植到装载TEE的目标设备上,移植需要被检测TEE的SDK。通过NDK(Native Development Kit)编译模糊测试工具的CA,Android.mk的示例代码如图4所示。同样,使用SDK编译模糊测试工具的TA部分(如图5所示),编译时注意使用UUID作为每个TA的唯一标识,在图5中的示例中UUID是存在ta.cfg文件中。CA发出的指令包含UUID,通过UUID就可以寻找到相应的TA,UUID类似于每个TA的名称,每个TA有自己唯一的名字。

成功编译后通过安卓调试桥工具(Android Debug Bridge,ADB)工具的adb push语句将编译好的CA、TA导入到目标测试设备中的指定路径下。

具体实施时,在步骤S103中,使用ADB工具进入目标测试设备的shell,并执行该模糊测试工具。在模糊测试启动后,模糊测试工具中的调度模块将自动地将测试数据不断传入到相关的测试例中。CA将模糊测试数据不断地排列组合,并申请调用相应API,TA通过接口接收该调用命令,通过TEE Internal API接口具体执行。

在整个测试过程中,模糊测试工具中的监控模块可以实时地监控该模糊测试工具的运行状态,并在故障、崩溃或异常情况时对所有运行数据进行记录,并在运行完成后对记录的所有信息进行分类汇总、输出,并生成可读的EXCEL文件,整个运行过程高度自动化,API模糊测试报告示例见图6所示。

输出的模糊测试报告可以清晰地反映出各API的测试情况,结合详细原始记录数据能高效地重现异常。在得到模糊测试报告后,还根据所述模糊测试报告以及原始记录编写相应的CA和TA形成新的测试例,并添加到所述模糊测试工具中,进行后续的渗透测试,以便确定其API潜在漏洞的可利用性。其中,原始记录指的是详细的工具运行的日志,包含工具运行输出的所有信息。

本发明还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述的测试可信环境下API安全性的方法的步骤。

应用本发明的检测方案能高效地对TEE Internal API的安全性进行全方位的评估,该测试工具不仅可以实时准确地捕捉异常的产生,更具有高度自动化、运行灵活、易于移植等特点。此外,自动输出的测试报告不仅有直观的检测结果,同时也包括了产生异常的API名称、测试项数和关键步骤比对次数,更包含了导致异常的模糊测试数据,出错的详细代码行数,便于TEE厂商进行错误重现,定位代码实现问题。此外该工具松耦合的软件架构可快速高效地添加新的测试例或修改现有测试例,以便对TEE进行后续的软件渗透测试等。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

在介绍了本发明示例性实施方式的方法之后,接下来,参考图7对本发明示例性实施方式的测试可信环境下API安全性的装置进行介绍。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”和“单元”,可以是实现预定功能的软件和/或硬件。尽管以下实施例所描述的模块较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图7为本发明实施例的测试可信环境下API安全性的装置的结构示意图。如图7所示,其包括:

模糊测试数据生成模块101,用于根据被检测TEE的API文档,生成相关的模糊测试数据;

模糊测试工具编译模块102,编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下;

模糊测试报告生成模块103,用于运行所述模糊测试工具,将所述被检测TEE的API的相关的模糊测试数据不断地送入到所述模糊测试工具的测试例中,运行结束后生成所述被检测TEE的API的模糊测试报告。

在一实施例中,所述模糊测试数据生成模块101根据被检测TEE的API文档,生成相关的模糊测试数据,具体包括:

阅读并查看被检测TEE的API文档的参数和功能,生成相关的模糊测试数据;所述模糊测试数据包括边界值、特殊值、随机的非法数据。

在一实施例中,所述模糊测试工具编译模块102用于编译模糊测试工具,并将所述模糊测试工具导入到测试设备的指定路径下,如图8所示,其具体包括:

CA编译单元1021,用于通过NDK编译所述模糊测试工具中的所有CA;

TA编译单元1022,用于通过SDK编译所述模糊测试工具中的所有TA;

路径导入单元1023,用于在编译成功后,通过安卓调试桥工具的adb push语句将编译好的CA和TA导入到测试设备的指定路径下。

在一实施例中,所述模糊测试报告生成模块103用于运行所述模糊测试工具,将所述被检测TEE的API的相关的模糊测试数据不断地送入到所述模糊测试工具的测试例中,运行结束后生成所述被检测TEE的API的模糊测试报告,如图9所示,其具体包括:

调度单元1031,用于将所述被检测TEE的API的相关的模糊测试数据送入到所述模糊测试工具的测试例中,所述CA将所述模糊测试数据不断地排列组合,并申请调用相应的API,所述TA接收所述CA发出的调用命令,调用对应的API执行;

监控单元1032,用于实时监控所述模糊测试工具的运行状态,在故障、崩溃或异常情况时对所有运行数据进行记录,并在运行完成后对记录的所有信息进行分类汇总、输出,生成所述被检测TEE的API的模糊测试报告,所述模糊测试报告为EXCEL文件。

此外,尽管在上文详细描述中提及了测试可信环境下API安全性的装置的若干单元,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。同样,上文描述的一个单元的特征和功能也可以进一步划分为由多个单元来具体化。

本发明实施例所揭示的测试可信环境下API安全性的方法、装置及存储介质,能高效地对TEE Internal API的安全性进行全方位的评估,该测试工具不仅可以实时准确地捕捉异常的产生,更具有高度自动化、运行灵活、易于移植等特点。此外,自动输出的测试报告不仅有直观的检测结果,同时也包括了产生异常的API名称、测试项数和关键步骤比对次数,更包含了导致异常的模糊测试数据,出错的详细代码行数,便于TEE厂商进行错误重现,定位代码实现问题。此外,该工具松耦合的软件架构可快速高效地添加新的测试例或修改现有测试例,以便对TEE进行后续的软件渗透测试等。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1