论文部分内容阅读
第三方库是当前移动终端应用开发过程中广泛使用的一种代码重用方式,可有效缩短应用开发周期并降低开发成本,因此移动终端应用开发者尤其是Android应用开发者经常在其开发过程中使用各类第三方库。第三方库的广泛应用在带来便捷性的同时,也带来了诸多安全问题,由于一个第三方库可能被用于多个Android应用中,一旦第三方库出现安全问题,其带来的影响将远远大于单个恶意应用带来的影响,因此对Android应用第三方库中的安全问题进行分析与研究具有十分重要的意义。 论文针对Android应用中第三方库的安全问题展开研究,从第三方库的权限机制、通信机制和数据共享机制三个方面进行了深入分析,提出了有效的安全性分析方法,成功发现并验证了多个第三方库中的安全缺陷;在此基础上,设计了一种第三方库安全应用框架,以提供数据通信及数据共享环节的安全性保护。论文的主要贡献如下: (1)提出了一种Android应用第三方库权限机制安全性分析方案,检测出多个第三方库中存在权限冗余和宿主应用权限滥用现象,并发现了部分第三方库所用自定义权限中存在保护级别设置不当的问题。论文首先分析了Android应用第三方库在权限使用中存在的安全问题以及现有权限分析方案的不足;针对已有权限映射表不够完善的问题,论文从Android API文档中提取精确的权限使用信息,特别是函数参数值和特殊字段值与权限之间的映射关系,以对现有的权限映射表进行补充完善;之后提出基于Dalvik寄存器的数据流分析技术,获取第三方库代码中特殊函数的函数值和特殊字段值,并基于该技术设计实现了第三方库权限分析方案PermHunter。论文使用PermHunter对多个Android应用第三方库进行了权限分析,分析结果显示,超过一半的第三方库中存在权限冗余和滥用宿主应用权限的问题,部分第三方库在自定义权限的使用中未设置合适的保护级别,可导致敏感数据泄露等后果。 (2)提出了一种Android应用推送服务通信机制安全性测试方案,检测出多个Android应用推送服务未对推送数据进行保护,无法对抗消息窃听、篡改等攻击,提出了一种推送服务安全增强方案提供对推送数据的安全性保护。论文以推送服务为代表,对Android应用第三方库的通信机制进行了安全性分析,发现共享通道设计模式下推送服务在推送数据分发环节可能面临数据窃听、篡改、伪造和重放攻击的威胁;之后,设计攻击测试方案PushAttacker对多个Android应用推送服务进行了攻击测试,测试结果表明,大部分使用共享通道设计模式的推送服务无法对抗上述攻击,为攻击者实施用户数据窃取和钓鱼攻击留下可趁之机。论文继而设计了Android应用推送服务安全增强方案SecPush,通过使用加解密运算、消息认证码和数据库操作提供推送数据的机密性、完整性、不可伪造性和抗重放攻击保护,论文实现了SecPush原型系统并对其进行了有效性和性能测试,实验结果表明,SecPush方案可在带来极小性能损耗的前提下,有效提供推送数据分发环节的安全性保护。 (3)提出了一种针对Settings机制数据共享安全问题的检测方案,检测出大量Android应用及第三方库在数据共享环节中存在的隐私数据和配置数据泄露等安全问题。论文首先分析了Android应用第三方库在使用Android系统提供的Settings机制进行数据共享时存在的安全问题,发现第三方库使用的Settings数据中包含用户隐私信息和关键配置信息等敏感数据,易被攻击者利用窃取隐私数据或干扰目标第三方库运行;论文提出Settings机制数据共享安全问题检测方案SettingsHunter,基于静态污点分析技术检测apk文件中使用的Settings数据,并在分析过程中将第三方库代码从宿主应用代码中分别出来,在提高检测效率的同时,获取已知第三方库和未知第三方库的Settings数据使用信息。论文使用SettingsHunter对上千个样本文件进行了检测,从中发现多个第三方库中存在Settings数据的不安全使用,且Android应用中Settings数据的不安全使用绝大多数来源于其中嵌入的第三方库。 (4)设计了一种Android应用第三方库安全应用框架,为第三方库之间的数据通信及数据共享提供安全性保护。论文首先分析了Android应用第三方库数据通信和数据共享环节中安全问题的产生原因,指出两个环节中由于缺乏操作执行者的身份信息,因此无法对相关操作和数据进行访问控制。在上述分析基础上,论文提出了第三方库安全应用框架LibSec,LibSec方案通过在第三方库使用模式中添加第三方库客户端应用,为数据通信和数据共享环节提供参与者的身份信息,基于参与者身份信息对数据通信功能和共享数据进行访问控制,从而阻止攻击者的攻击企图。此外,LibSec方案在Android系统中添加了数据共享服务和第三方库客户端应用管理服务,为提出的安全机制提供支持。论文介绍了LibSec方案的设计与实现,并对其进行了安全性分析,验证了LibSec方案对第三方库通信环节及数据共享环节的安全保护能力。