2024年4月30日发(作者:)

一种针对AOSP公开签名漏洞的快速检测方法

高迪;陈伟;吴震雄

【摘 要】随着Andorid手机越来越流行,Android系统的安全问题也越来越受到

重视。对于Android系统,隐私泄露是一种重要的安全问题。文中发现一种潜在的

获取手机中隐私信息的攻击方法。该方法针对Android应用程序自签名的机制,利

用AOSP( Android Open Source Project)公开签名漏洞,获取预装软件权限,窃取

手机的隐私信息。针对此漏洞,文中提出了一种快速检测方法,可以同时逆向多个应

用程序,并检查签名信息,快速检测漏洞。实验结果表明,在市场上较为流行的

Android ROM中,几款重要的系列均存在AOSP漏洞,如CM、MIUI等。文中提

出的方法,检测一个ROM仅需9~10分钟,可以快速有效地检测出ROM是否存在

漏洞,并且通过有效的方法,证明漏洞可以被直接利用。%With the growing

popularity of smartphones in Android,the issues on Android system

security attracts more and more atten-tion. For Android system,privacy

leakage is an important security problem. In this paper,find a potential

attacking method to get privacy information from smartphones. This

attack utilizes the self-signed mechanism for Android application,takes

advantage of public AOSP ( Android Open Source Project) signature

vulnerability,gets permissions of pre-installed software and steals the users’

private informa-tion. Against this vulnerability,propose a fast detection

method,which can reverse multiple applications at the same time,and

check the signature information. The vulnerability can be detected quickly.

The results find that the popular Android ROM in the market,a few im-

portant series have AOSP vulnerability,such as CM,MIUI,etc. The method

proposed in this paper only needs 9~10 minutes to detect a ROM,which

can quickly and efficiently detect the ROM. And the holes can be used

directly through the effective method.

【期刊名称】《计算机技术与发展》

【年(卷),期】2015(000)009

【总页数】5页(P149-153)

【关键词】安卓固件;AOSP签名;隐私泄露;快速检测

【作 者】高迪;陈伟;吴震雄

【作者单位】南京邮电大学 计算机学院,江苏 南京 210023;南京邮电大学 计算机

学院,江苏 南京 210023;南京邮电大学 计算机学院,江苏 南京 210023

【正文语种】中 文

【中图分类】TP309

在过去的几年时间里,智能手机的销量呈爆发式增长。在众多流行的手机操作系统

中,Android系统以其开放性的优势,占据了巨大的市场份额。Android系统作

为一个开放平台,众多手机制造商可以免费对其进行扩展和修改,以区别自己和竞

争对手的产品。但是由于没有统一的安全标准,许多定制的Android系统会出现

安全漏洞,预装的应用程序蕴含着安全风险[1]。隐私泄露问题正是一种重要的

Android安全问题,很多应用程序内置的广告库在程序运行时,会暗自上传用户

的隐私信息,诸如通讯录、短信息、位置信息等等[2]。文献[3]发现Android系统

内置组件content provider默认被手机中所有正在运行的应用程序调用,这将暴

露应用程序内的隐私数据类型,从而可能会产生一些安全隐患,例如阻止所有传入

的电话或短信。为了给用户提供更好的使用体验,许多ROM开发者会对官方

ROM进行修改,添加自己的元素,然后放在网上供用户下载使用。但是这也会产

生隐私泄露的风险,恶意软件制作者会将恶意软件直接打包进ROM中,当用户下

载并使用了含有恶意软件的ROM,用户的合法权益就会受到侵害[4]。

AOSP(Android Open Source Project)是由谷歌发起的Android开放源代码项目,

此项目致力于Android的维护和更进一步的发展。许多ROM制作者使用AOSP

公开的数字证书对ROM中的预装软件进行签名,无意间增加系统隐私泄露的安全

风险[5]。所有安装到Android系统中的应用程序都必须拥有一个数字证书,此证

书用于标识应用程序的作者和应用程序之间的信任关系。Android系统不会安装

一个没有数字证书的应用程序,如果一个权限的保护级别为signature,只有当应

用程序所用数字签名与声明此权限的应用程序所用数字签名相同时,Android系

统才会授权。如果一个权限的保护级别为signatureOrSystem,Android系统会

将该权限授予具有相同数字签名的应用程序或Android包类。而如果两个应用程

序共享UID相同,并拥有相同的签名,它们的权限和数据就会共享。

Android的开放性让很多开发者投身到第三方ROM的开发中,相比Google提

供的标准Android ROM,以及摩托罗拉、HTC、三星这些手机厂商为用户提供改

良版的Android ROM,许多第三方ROM开发团队也会为用户提供独具特色的

Android ROM,第三方ROM在ROM市场中占有很大的比重。但是,第三方

ROM在安全性上,存在许多问题,其中就包括AOSP漏洞。国外最知名的第三方

Android ROM编译团队是Cyanogen,它们提供的CyanogenMod支持数十款

Android设备。MIUI是小米科技运营的项目,这是一个基于CyanogenMod进

行二次修改的衍生项目,是目前国内最大的第三方Android ROM社区。实验发

现,它们发布的ROM,很多都存在AOSP漏洞。而目前,用户在下载使用前,缺

乏有效的检测手段。为此文中设计了一款快速检测软件VolumeTest,通过编写脚

本,自动逆向Apk并比较签名信息,可以快速有效地检测ROM存在的AOSP漏

洞。

文中从ROM市场中随机抽取了150个ROM,针对Android系统中数字签名机

制,对其预装的应用程序进行分析,发现其中97个ROM的预装软件使用AOSP

公开的数字证书签名,存在签名漏洞问题。同时利用此漏洞编写演示程序,在三星

Galaxy 3手机上可以成功获取相关权限,从而窃取手机中隐私内容,如通讯录、

通话记录等。

在Android安全问题中,应用程序安全是最重要的一部分。为了保护应用程序和

数据安全,Android系统在设计上结合系统层安全机制和组件间通信机制确定安

全框架[6]。但是Enck等对1 100个Android应用程序进行反编译分析,发现不

仅Android应用程序会存在危险行为,而且Android系统也会存在漏洞[7]。蒋

旭宪等所创建的Android Malware Genome Project,收集了超过1 200个恶意软

件样例[8],对其进行系统的分析,归纳其特征,并根据恶意软件样例和特征,提出

一种可扩展和准确的0-day Android恶意软件检测方法[9]。目前,已经发现了超

过25个0-day的Android恶意软件家族。窃取用户手机中的隐私信息,是恶意

软件的恶意行为之一。谷歌的Android操作系统提供了一种基于权限的限制应用

程序访问用户私人数据的安全模型,每个应用程序需要在一个清单里静态地声明所

需的隐私数据和权限。然而,用户尚不清楚一旦应用程序被安装,隐私数据将如何

被使用。为了解决这一问题,Clint[10]等提出了一个静态分析系统。该系统可以

自动发现Android应用中潜在的隐私信息泄露问题,隐私信息包括电话信息、

GPS定位、无线数据等。

用签名来保证手机软件安全是解决移动终端应用程序安全问题的办法之一。例如

Symbian软件,签名过的软件都视为是安全的,可以进行任何权限的操作,而未

经签名的软件则视为是不安全的,它的操作就会被限制[11]。安装Android应用

程序也需要签名,但Android系统采用的是自签名的方式,只是为了标识开发者

的身份,防止相同包名的应用程序混淆。

近年来,对Android系统签名机制安全的研究,也有较大进展。文献[12]通过静

态分析Android系统源代码以及动态监控应用程序安装、执行过程中的签名验证

流程,对Android系统的代码签名验证机制进行深入的剖析,发现Android系统

仅在应用程序安装时进行完整的代码签名验证,在后续的程序执行过程中只对程序

包进行简单的时间戳及路径验证[13]。该安全隐患使得攻击代码可以绕过签名验证

机制,成功实施攻击。

文中针对Android应用程序自签名的机制,提出一种窃取手机中隐私信息的方法,

利用Android手机中常见的签名漏洞,获取预装软件的权限,窃取手机中的隐私

信息。

3.1 AOSP公开签名漏洞

在Android系统中,应用程序签名对于保护数据安全和隐私是非常重要的。

Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字

证书的私钥则保存在程序开发者的手中。Android系统利用数字证书标识应用程

序的作者,并在应用程序之间建立信任关系[14]。注意,如果两个应用程序具有相

同的包名和相同的签名,由于应用程序更新机制,它们是可以互相替换的。另外,

如果两个应用程序使用相同的数字证书签名并在文件中声

明相同“SharedUserID”,它们将共享相同的权限集[15]。而且当拥有相同的uid

时,它们将有权限访问对方的数据。因此,如果两个应用程序具有相同的数字证书,

但其中一个是恶意软件,这意味着恶意软件已经渗透到系统中[16]。

AOSP在“build/target/product/security/”目录下提供了4组签名密钥对[17]。

Platform密钥对系统的核心部分签名;Shared密钥对home和contacts部分签

名;Media密钥对media和download框架部分签名;Test密钥则对其他APK

签名;表1展示了签名的详细信息。因为这4组密钥对都是由Android官方发布

的,所以它们的描述是一样的。这些签名密钥对原本是提供给开发人员在测试版的

Android ROM上使用的。因为所有人都可以从AOSP处获得这些密钥对,所以

开发人员不应该使用这些公开的密钥对发布版Android ROM中的预装软件进行

签名。因此,一个拥有“SharedUserID”属性并使用AOSP密钥对签名的应用程

序是非常危险的。

3.2 Apk签名漏洞快速检测方法

目前,还没有提出一种方法来检测AOSP漏洞,下面将详细阐述文中提出的方法

原理。

检测漏洞方法主要有2个步骤:第一步是逆向Apk,查看

文件;第二步是查看Apk的签名信息。目前,逆向Apk普遍使用到的方法是利用

ApkIDE软件,查看签名信息则普遍使用的是Apk签名检测软件,如

App_Signatures。这类软件均可以一键操作,但是只能同时对单个Apk检测,而

且是分开操作,耗时耗力。因此,文中提出一种快速的检测方法,基本思想是利用

apktool命令逆向Apk,利用keytool命令查看签名信息,通过编写脚本寻找

AOSP漏洞,实现自动分析。

首先,解压ROM zip文件,提取所有包含文件的Apk。

使用apktool命令反编译ROM中的Apk,查看Apk的

文件中是否声明“SharedUserID”属性。如果声明,则利用keytool命令检测该

Apk的签名信息是否与AOSP公开签名信息相同。如果签名也相同,那么该Apk

存在AOSP公开签名漏洞,Apk所在的ROM也存在签名漏洞。

AOSP公开签名漏洞检测方法流程如图1所示。

其次,由于需要测试的样本较多,手动测试不方便,因此使用python语言,设计

一款快速检测软件VolumeTest,可以对需要测试的Apk进行批量检测。将

ROM中的所有Apk复制到目标文件夹中,运行VolumeTest,VolumeTest扫描

目标文件夹,对文件夹中的Apk依次进行检测,即可得到测试结果,每个Apk的

测试结果均保存在“”中,0表示安全,1表示有隐私泄露风险,-1表

示错误,并统计存在漏洞的Apk数量。VolumeTest软件检测单个Apk仅需要7

s,检测一个ROM,平均也只需要9~10 min,效率较高。

4.1 ROM漏洞检测

从Cyanogenmod以及ROM之家等网站上,随机下载了150个热门ROM,表

2为这150个ROM的信息。

其中,比较流行的ROM类型包括Android原生、CM、MIUI V5、Mokee、

TouchWiz、百度云、腾讯TITA等。使用VolumeTest对这150个ROM进行检

测,发现这150个ROM中,在文件中声明

“SharedUserID”属性的Apk均存在。此外,其中97个ROM中的Apk使用

AOSP公开密钥对签名。这意味着恶意软件作者可以使用相同的AOSP公开密钥

对签名他们的恶意软件,并声明相同的“SharedUserID”属性,恶意软件就可以

获得额外的权限,继而可以修改其他应用程序的数据。

检测发现,CM系列、MIUI V5系列、Mokee系列、百度云系列都存在此漏洞。

存在漏洞的ROM中,,

和ads均使用默

认AOSP media密钥签名,它们共享一个uid,即“”;

ts,

ts,ation和

ctionary均使用默认AOSP shared密钥签名,它

们共享一个uid,即“”。因此,如果恶意软件使用默认

AOSP密钥(media或shared)签名并声明共同共享uid(“”或

“”),它就可以访问所有的数据并获取权限,例如

READ_CONTACTS,WRITE_CONTACTS,WRITE_SETTINGS和ACCESS_DRM等

非常敏感的权限。

Android的系统签名信息存储在“/system/framework/framework-

/META-INF/”。使用“openssl”库的pkcs7功能,可以从

“”文件中提取系统签名信息。系统签名通常用来实现权限控制。如果

一个应用程序拥有与系统相同的签名,它就可以使用系统级权限。通过分析150

个ROM,发现97个ROM使用默认AOSP platform密钥签名,如果恶意软件制

作者也使用相同的默认AOSP platform密钥对签名他们的恶意软件,并声明与系

统共享uid,即“”,恶意软件就会拥有系统级权限,从而可

以静默安装新的应用程序和修改其他应用程序。

实验从已经检测出存在漏洞的ROM中,选取5个Samsung Galaxy S3的ROM,

依次刷入设备中,通过下面的实验来验证VolumeTest准确性。

4.2 通讯录信息窃取

设计一个Apk—ContactsForWu,通过公开签名漏洞,获取手机中的通讯录隐私

信息,并将通讯录写入到SD卡中的txt文件中。这里仅赋予ContactsForWu拥

有使SD卡获得写权限

name="_EXTERNAL_STORAGE">,并声明

“SharedUserID”属性。通过

APKsign工具,使用默认AOSP shared密钥对ContactsForWu进行签名,然后

将ContactsForWu装入手机中。

在通讯录中编辑2个联系人信息,启动ContactsForWu程序,ContactsForWu

会将通讯录写入到SD卡中“/Android/”文件中。从目录中

打开该txt文件,查看结果,图2显示该方法可以成功获取到通讯录信息。

4.3 通话记录窃取

采用同样的方法,设计一个Apk—CallLogForWu,获取手机中通话记录隐私信息,

并将通话记录写入SD卡中的txt文件中。图3(a)显示的是手机中的通话记录。启

动CallLogForWu程序,CallLogForWu会将通话记录写入SD卡中

“/Android/”文件中,打开文件查看结果,如图3(b)。结果表明,该方

法可以成功获取到通话记录。

4.4 位置信息窃取

实验结果显示许多ROM中ts均有获取手机地理

位置信息的权限,

android:name="_FINE_LOCATION"/>,

permission

android:name="_COARSE_LOCATION"/>,因此

设计一个Apk—GpsForWu,获取手机的位置信息,并将位置信息写入到SD卡

中的txt文件中。图4显示窃取的手机当前位置的经纬度坐标。经查,经纬度坐标

与手机实际位置稍有偏差,偏差在1公里左右。因为手机当时没有打开GPS,只

是利用基站定位,出现的偏差在正常的误差范围之内。

上面的实验证明,利用VolumeTest软件检测出存在漏洞的ROM,确实存在隐私

泄露的风险。

根据AOSP公开签名漏洞,文中提出了一种基于Android手机预装软件隐私窃取

的方法,设计了快速检测软件VolumeTest。主要从预装软件的角度,研究可能存

在的隐私泄露问题。对150个Android ROM以及预装软件进行分析,发现97

个(65%)ROM存在AOSP公开签名漏洞,并通过实验证明,可以通过该漏洞获取

预装软件的权限,从而达到窃取隐私的目的。今后需要加强对这类签名漏洞的重视,

进一步研究相应的防范方法。

【相关文献】

[1] Wu L,Grace M,Zhou Y,et impact of vendor customizations on Android

security[C]//Proceedings of the 2013 ACM SIGSAC conference on computer &

communications security.[s.l.]:ACM,2013:623-634.

[2] Grace M C,Zhou W,Jiang X,et exposure analysis of mobile in-app

advertisements[C]//Proceedings of the fifth ACM conference on security and privacy in

wireless and mobile networks.[s.l.]:ACM,2012:101-112.

[3] Zhou Y,Jiang ing passive content leaks and pollution in Android

applications[C]//Proceedings of the 20th annual symposium on network and distributed

system security.[s.l.]:[s.n.],2013.

[4] Zhou W,Zhang X, Jiang X. AppInk:watermarking Android apps for repackaging

deterrence[C]//Proceedings of the 8th ACM SIGSAC symposium on information,computer

and communications security.[s.l.]:ACM,2013:1-12.

[5] Zheng M,Sun M,Lui ay:a security evaluation system for customized Android

firmwares[C]//Proceedings of the 9th ACM symposium on information,computer and

communications security.[s.l.]:ACM,2014:471-482.

[6] Enck W,Ongtang M,McDaniel tandingAndroid security[J].IEEE Security and

Privacy,2009,7(1):50-57.

[7] Enck W,Octeau D,McDaniel P,et al.A study of Android application security[C]//Proc of

USENIX security symposium.[s.l.]:[s.n.],2011.

[8] Zhou Y,Jiang ting Android malware:characterization and evolution[C]//Proc of

IEEE symposium on security and privacy.[s.l.]:IEEE,2012:95-109.

[9] Grace M,Zhou Y,Zhang Q,et nker:scalable and accurate zero-day Android

malware detection[C]//Proceedings of the 10th international conference on mobile

systems,applications,and services.[s.l.]:ACM,2012:281-294.

[10] Gibler C,Crussell J,Erickson J,et dLeaks:automatically detecting potential

privacy leaks in Android applications on a large scale[M]//Trust and trustworthy

:Springer,2012:291-307.

[11] Nauman M,Khan S,Zhang Xinwen,et kernel-level integrity

measurement:enabling remote attestation for the Android platform[C]//Proceedings of

the 3rd international conference on trust and trustworthy computing.[s.l.]:[s.n.],2010:1-15.

[12] 雷灵光,张中文,王跃武,等.Android系统代码签名验证机制的实现及安全性分析[J].信息网络安

全,2012(8):61-63.

[13] 沈才樑,唐科萍,俞立峰,等.Android权限提升漏洞攻击的检测[J].电信科学,2012,28(5):115-119.

[14] 吴文焕.Android应用程序数字签名机制研究[J].软件,2014(2):109-110.

[15] 戴 威,郑 滔.基于Android权限机制的动态隐私保护模型[J].计算机应用研究,2012,29(9):3478-

3482.

[16] 冯 博,戴 航,慕德俊.Android恶意软件检测方法研究[J].计算机技术与发展,2014,24(2):149-

152.

[17] 孙 奕.Android安全保护机制及解密方法研究[J].信息网络安全,2013(1):71-74.