Securing Android: A Survey, Taxonomy, and Challenges --论文笔记

来源:互联网 发布:ubuntu mysql 安装 编辑:程序博客网 时间:2024/05/19 17:04

题目:Securing Android: A Survey, Taxonomy, and Challenges
作者:SUFATRIO,DARELL J.J.TAN,TONG-WEI CHUA and VRIZLYNN L.L. THING
单位:Institute for Infocomm Research,Singapore
出版:ACM Computing Surveys,Vol.47,No.4
问题:Android 智能手机的日益流行也吸引了黑客,导致 Android 恶意软件应用的大量增加.本文选取了09-14年特别是在高端安全会议或期刊出现的论文,依据安卓app的配置阶段,提出了一种分类学,用来分析拥有相同目标和方法的方案,找出这些方案的主要区别,同时还描述了列举方案的缺陷和目前面临的挑战。
方案:依据Android app的五个阶段将选取的论文进行分类,分别是:开发阶段,应用商店上架阶段,安装阶段,运行阶段和对用户设备进行修改的阶段。在每个分类的叶节点指出相关现存工作,仍旧存在的挑战和有发展希望的调查方向。同一个分类树节点下的所有方案处理同一种问题,遇到的挑战也是相同的。
实现:
首先,提出了安卓现在存在的10个问题:
W1:①存在很多的安卓市场,但是很少有app审查机制
②对于app发行者几乎没有背景审查
③用户可以不通过app市场来安装app,利用从相连的电脑上的adb工具。增加了恶意软件的入口
W2:
①用户必须给予app要求的所有授权,否则安装程序不继续进行
②用户可能不知道app要求的一系列的权限可能带来的后果,只是简单的同意权限请求。
③app开发者意图夸大他们所需权限的作用。
④安卓权限没有进行细粒度管理。
⑤缺少运行时权限撤回和审查工具。
W3:安卓app很容易进行逆向编码,安卓app能够被重新打包,包括用于加入恶意软件。
W4:缺少对类似广告和分析库等包含在app内的第三方库的隔离机制。不能阻止第三方库滥用app获得授权。另一方面,被感染的app可能会篡改第三方库,来实行类似弹出ad播放或点击的恶意行为。
W5:缺少可信的运行时的用于一下目的的ICC的控制:
①防止appA从appB中获取公开接口,A已经在安装阶段获得了所需的权限。可能导致数据泄露和困惑代理问题。
②阻止app拦截intent广播和传输。app可能会暗地里拦截包含敏感信息的系统事件,如来电或短信。
③隔离app,防止塔门通过ICC和其他途径进行通信。
W6:app开发者可能对安卓ICC的某些方面不太熟悉,导致app隐私接口和数据的无意泄露。
W7:app可能通过JNI来激活本地代码。可能会导致低层次语言上的内存崩溃问题。和W4相似,本地代码可能会被恶意软件利用来躲避安卓层面的分析和检测手段。
W8:一个安卓设备有可以被用来作为独立设备号的标示物,如IMEI,硬件序列号或者安卓系统ID。由于安卓系统易于发生个人信息泄露,如果设备ID也泄露了,那么外部人士很容易追踪到该用户。
W9:Linux层的安全漏洞,如Linux内核和本地库
W10:设备制造商的预安装软件。
针对对不同问题的组合,提出了下图的分类:
这里写图片描述
从《Android 安全研究进展》摘出的笔记:
1、component:组件
①activity:用户界面。 应用程序与用户进行人机交互的可视化用户界面
②service:后台进程。
③content provider:内容提供器。 SQL-数据库,用于为应用程序提供数据,同时为应用程序中的数
据共享提供支持
④broadcast receivers:广播接收器。 接收广播消息的邮箱

2、Intent 包含目标组件地址和数据的消息对象
Android API 定义了接收 Intent 和通过其中的信息启动 Activity(startActivity(Intent))、启动 Service(startService(Intent))和广播消息(sendBroadcast(Intent))的方法。
在 Android 术语中,这种组件间通信的过程称为“动作(action)”.亦即,一个Intent 对象定义执行一个“动作”的意图(intent),这就是“Intent”名称的缘由.

3、ICC 组件间通信 inter-component communication
Android 在内核层实现了基于 Binder(OpenBinder[66]的精简版本 )的轻量级进程间通信 (inter-process communication,简称 IPC),这是应用组件之间进行通信的主要 IPC 机制,在 Android 的术语中称为组件间通信

4、Android的安全机制
(1)Linux安全机制:
①POSIX(portable operating system interface of unix)用户
每个包(.apk)文件安装时,安卓会赋予该文件唯一的linux用户ID,不同的包代码不能运行于同一进程,相当于系统为每个应用建立了一个沙盒。
若两个应用程序共享权限,则必须共享共同的ID,通过sharedUserID功能实现。
②文件访问控制
每个文件绑定UID、GID(用户组ID)和rwx权限,用于进行自主访问控制(discretionary access control,DAC),安卓系统文件的拥有者是“系统”用户或者“根”用户。所有的用户和程序数据存储在数据分区,与系统分区隔离。当安卓系统处于“安全模式”时,数据分区的数据不会加载,便与系统进行有效的恢复管理。此外,系统镜像设置为只读。
(2)Android本地库及运行环境安全
①内存管理单元(memory management unit,MMU)
硬件设备,为进程分配不同的地址空间(虚拟内存),隔离进程。
②强制类型安全(type safety)
类型安全,强制变量在赋值时必须符合其声明的类型,防止变量被错误或不恰当地使用。类型转化错误或缺少类型安全边界检查,是产生缓冲区溢出攻击的主要原因.
③移动设备安全
AAA(认证authentication,授权authorization,记账accounting),认证和授权通过SIM卡及其协议完成。
(3)Android特定安全机制
①权限机制
Android的权限管理遵循“最小特权原则“, 所有的 Android 应用程序都被赋予了最小权限.一个 Android应用程序如果没有声明任何权限,就没有任何特权。若想要访问其他文件、数据和资源就必须在AndroidManifest.xml文件中进行声明。
Android系统中的权限分为:
a.Android手机所有者权限
b.Android ROOT权限。最高权限,可以对系统中的任何文件、数据、资源进行任意操作。
c.Android 应用程序权限。在AndroidManifest文件中由程序开发者声明,在程序安装时由用户授权。
有四种不同的权限保护级别(protection level)
1.normal。申请即可用,不需用户授权
2.dangerous。安装时需要用户确认才能使用
3.signature。仅当申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。
4.signatureOrSystem。 仅当申请该权限的应用程序位于相同的 Android 系统镜像中,或申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限.

阅读全文
0 0
原创粉丝点击