APP下载

基于移动平台的安全性研究

2018-04-15上海大学计算机工程与科学学院吴东泽

电子世界 2018年9期
关键词:意图应用程序静态

上海大学计算机工程与科学学院 吴东泽

一、移动平台的安全现状

移动设备已经成为执行各种应用程序的开放平台。由于智能手机的快速增长和移动通信技术的迅速推广,越来越多的消费者使用智能手机上网,消费各种服务。移动应用为我们的日常生活带来了极大的便利,通过互联网提供即时的信息资源,支持随时随地的通信,并提供各种各样的功能。移动应用的快速增长对移动互联网和经济的成功起着至关重要的作用。移动应用的安全性需要特别关注。一方面,现今的APP为了用户满意度、用户体验不断优化应用,开发出各种新颖的功能,一次又一次地突破技术壁垒。另一方面,用户在享受着这些移动应用带来的贴心服务的同时,不免由衷地担心,在这样一个信息化的社会,自己是否变得越来越透明,个人信息的安全性能否得到保障。在智能手机行业,搭载Android操作系统的设备处于领先地位。然而,大约97%的移动恶意软件针对的是Android手机。近年来,Android手机的安全事件频频发生,一些严重的攻击事件也发生在苹果手机上。

这些威胁具有很高的相关性,因为今天的智能手机可以被视为移动的个人库存,管理着大量的个人信息。以此为基础,加上移动设备的在线特性,使得智能手机成为攻击者的重要目标。例如,间谍应用程序可以收集用户的位置或窃取个人信息,并将其出售给市场营销人员。即使是知名的应用程序,也可能利用它们获取“敏感”资源来处理各种研究工作中的个人信息。在其他情况下,移动应用程序可能是越权的,这意味着它请求的权限比实际需要的要多。因此,这些应用程序可能会被恶意应用程序请求并提供对其他私有信息的访问。一些事实表明,在移动应用商店方面存在安全分析机制并不能保证安全性(例如:缺乏恶意操作)和终端用户个人数据的隐私。为了识别移动应用程序中可能存在的错误配置和越权,研究人员关注的是不同的方法。

二、移动应用程序的“恶意”

以Android平台为例,Android系统的广泛流行伴随着针对这些系统的恶意软件数量的增加。这很大程度上是由于Android框架的开放性,使得在任何Android设备上运行的第三方应用程序的加入更加方便。进程间通信是Android框架最显著的特性之一,因为它允许跨进程边界重用组件。该机制被用作网关访问Android框架工作中的不同敏感服务。在Android平台中,这个通信系统通常是由一个被称为Intent的延迟运行绑定消息对象驱动的。Android为安装在其上的应用程序提供了原始和直观的架构。开发人员可以提供他们的初始策略来限制应用程序的不同组件的访问。然而,Android框架并不强制执行任何安全策略以确保应用程序的可靠性。一旦应用程序被安装,系统资源被允许访问,那么任何被安装的应用程序就会产生恶意,系统不会分析动态行为以确保应用程序和系统的完整性。此外,Android还采用了“全或否”的权限模型。这意味着,为了成功地安装应用程序,用户必须接受所有的权限,否则安装过程将被终止。随着Android软件开发和维护的不断增多,以及恶意软件自身的抗检测能力不断增强,当前主流的静态Android恶意软件检测技术面临一些问题。比如,传统的签名检测技术在检测代码混淆或重打包的恶意软件方面效果不佳。[1]

三、移动应用安全性检测方法

目前对恶意软件检测的研究可以分为静态分析和动态分析两种方法。静态分析的目的是在不执行程序的情况下发现应用程序的恶意特性或恶意代码段,分析源代码或应用程序的二进制代码,以识别可能的数据泄漏源和数据泄漏。而动态分析则专注于收集应用程序的行为数据,以便在应用程序运行时发现恶意软件,如扫描第三方应用程序,比如权限管理器,可以扫描所有已安装的应用程序,并生成一个报告,通知用户使用请求权限。静态分析可以找到高准确度和高效率的已知恶意软件。但它是用伪装技术和加密算法来解决的,并且在运行时无法发现入侵。它对所有恶意功能都可以实现全面的检测。静态分析虽然覆盖面广,能够实现一定程度的自动化,但还是存在误报问题。[2]相反,动态分析可以区分实时攻击。但这种方法往往消耗大量的操作资源,效率低,检测精度高。目前,通过结合使用两种方法的优点来检测移动恶意软件是一种好的解决方案。鉴于动态加载和反射机制被广泛使用的现状,为了充分发挥静态分析工具在 Android 隐私泄露检测中的作用,就必须采取措施解决静态污点分析工具处理 Android 动态加载和反射机制的缺陷。[3]

在文献中,移动恶意软件的研究仍处于起步阶段,即使恶意软件的作者将他们的注意力转移到智能手机上。现有的解决方案中,很少能有效地检测到移动恶意软件。一些恶意的移动应用程序在被使用一段时间后,会突然对使用者的移动设备进行攻击,这一威胁对移动应用安全的研究提出了挑战。

使用静态分析来检测Android应用程序的隐私泄露的最先进的方法主要是检测内部组件敏感数据泄漏。利用静态分析方法,通过跟踪敏感源和接收器之间的污染来检测组件的截获漏洞。如使用程序间控制流图(CFG)搜索和静态taint检查在Android应用程序中检测可利用的数据路径;在Android应用程序的单个组件中执行了taint分析,使精度更高;不仅关注组件内部的泄漏,还考虑了基于组件间通信(ICC)的隐私泄漏,包括应用程序间通信(IAC)泄漏。

Android的静态分析是很困难的。尽管Android应用程序主要是用Java编程的,但Java提供的的现成静态分析工具并不适用于Android应用程序。这些工具主要有三个原因:

第一个原因是,正如前面提到的,Android应用程序是由组件构成的。组件之间的通信涉及两个主要的工件:意图过滤器和意图。一个意图过滤器附加到一个组件和“过滤器”意图可以到达组件。意图用于启动一个新的组件,首先动态地创建一个Intent实例,然后通过调用一个特定的方法(例如startActivity, startService),将先前创建的意图作为参数。意图通过指定新组件来显式地使用。一个组件的启动是由Android系统执行的,它在运行时解决了意图和意图过滤器之间的匹配。这个由Android系统完成的动态解决方案在Android应用程序的控制流中引入了不连续性。这种特性使得静态分析具有挑战性,它需要预先处理代码来解决组件之间的链接。

第二个原因与Android应用程序的以用户为中心的特性有关,用户可以通过触摸屏进行大量交互。用户输入的管理主要是通过处理特定的回调方法(如用户单击按钮时调用的onClick方法)来完成的。静态分析需要一个精确的模型来刺激用户的行为。

第三个也是最后一个原因与组件的生命周期管理有关。在传统的java程序中没有主方法。相反,Android系统通过调用回调方法(如onStart、onResume或onCreate)在组件的生命周期状态之间切换。但是,这些生命周期方法在代码中没有直接连接。建模Android系统允许将回调方法连接到代码的其余部分。

上述挑战将不可避免地导致控制流图中的一些不连续。为了克服这些问题,需要对ICC和IAC链路进行更精确的检测。这种方法是通用的,可以用于任何数据流分析。

而动态分析使用动态跟踪来发现隐私泄露。利用Android的虚拟化执行环境,在运行时监控Android应用程序,跟踪应用程序如何泄露隐私信息。动态观察Android组件与底层Linux系统之间的交互,以重构更高级别的行为。当前针对Android应用程序的动态测试方法主要以事件为驱动,遍历程序图形用户界面Graph User Interface(GUI)元素来发现程序的漏洞或者隐私泄露等敏感行为。[4]

动态方法必须在运行时向应用程序发送输入数据以触发代码执行。输入数据可能是不完整的,因此不能执行代码的所有部分。此外,如果在运行时遇到精确的条件(如数据),则可能只执行一部分代码。静态分析则会避免这些缺点。但与此同时,静态分析的缺点是,它可能会产生一个过度检测,因为它分析了所有代码,甚至是一个永远不会被执行的代码。

四、结论

随着安全检测方法的日益成熟,移动应用程序的恶意攻击手段也在不断更新。仅局限于单一的、固定的检测方法将无法应对,必须视实际情况,将静态代码分析技术与动态分析技术有机地结合起来。除了有效的检测手段。对于各类移动应用的发布平台,也要加强移动程序的监管,避免其流入市场。从用户的角度,也应当及时删除不用的个人敏感信息,在正规的移动应用商店获取应用,设置较强的密码等方法来保护个人隐私。

[1]宁卓,邵达成,陈勇,孙知信.基于签名与数据流模式挖掘的Android恶意软件检测系统[J].计算机科学,2017,44(S2):317-321.

[2]陈璐,马媛媛,石聪聪,李尼格,李伟伟.Android应用安全缺陷的静态分析技术研究[J].计算机工程与应用,2018,54(04):117-121.

[3]乐洪舟,张玉清,王文杰,刘奇旭.Android动态加载与反射机制的静态污点分析研究[J].计算机研究与发展,2017,54(02):313-327.

[4]汤杨,曾凡平,王健康,黄心依.基于静态分析的Android GUI遍历方法[J].计算机应用,2016,36(10):2811-2815.

猜你喜欢

意图应用程序静态
原始意图、对抗主义和非解释主义
陆游诗写意图(国画)
最新进展!中老铁路开始静态验收
制定法解释与立法意图的反事实检验
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
具7μA静态电流的2A、70V SEPIC/升压型DC/DC转换器
燕山秋意图
50t转炉静态控制模型开发及生产实践
三星电子将开设应用程序下载商店