640?wx_fmt=gif

随着 Android 在全球范围内的普及,越来越多的开发者投身于 Android 开发行列,且带来了丰富多彩的应用程序。不过,在日常使用过程中,我们发现现在的应用程序运行需要获取越来越多的用户权限,与之而来的是否将会是用户隐私的泄露?Android 设备的安全性又该如何保障?

640?wx_fmt=jpeg

作者 | Ahad Sheriff

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

 

640?wx_fmt=png

移动设备的安全很重要

 

在过去十年中,移动设备的技术突飞猛进,如今人手一台强大的计算设备。这些设备全天候联网,提供了方便消费者日常生活的服务。虽然移动设备为我们的生活带来了很大的便利性,然而这些联网的设备也会不断收集我们的使用、位置、通信等数据。移动电话已逐步成为我们日常生活中不可或缺的一部分,随之而来的后果是它们会记录有关我们的所有数据——而不仅仅是小部分的数据。

虽然这些数据可以为我们带来智能服务,但是通常用户不清楚它们究竟收集了多少以及哪些类型的信息。万一这些个人数据落入坏人之手呢?我们的身份和隐私都将被剥夺。无论是作为一种普遍的意识,还是为了进一步改良改进技术开发,用户和研究人员必须清楚地了解这些设备收集了哪些数据。

Android等移动设备上的操作系统实现了权限,只会将敏感数据授权给明确提出请求的应用程序。然而,应用程序开发人员往往会请求过多的危险权限,这有可能危及用户的隐私权。每隔几个月,我们就会听到有关恶意软件的新闻,这些软件能够渗透Google Play商店的防范,并感染数百万毫不知情的用户。即使是所谓的反恶意软件应用程序,也没有提供任何保护来抵御这些不显眼的威胁。

为了解决这个问题,我们设计了一个模型,根据危险的权限范围为应用程序分配风险评分——从良好到有害。为了测试我们的模型,我们开发了一个工具PermissionHunter来提取和分析与不同类别的一组真实应用程序相关联的危险权限,并最终确定此类权限的风险。虽然大多数用户通常为了方便起见都会接受应用程序请求的权限,但我们的研究和开发将帮助用户意识到应用程序的风险。

 

640?wx_fmt=png

安卓应用如何访问个人数据?

 

当应用程序试图访问受保护的资源(如个人信息或传感器数据)时,操作系统会在运行时检查发出请求的应用程序是否在安装期间被授予了这种权限。只有用户信任的应用程序才能访问敏感权限,而这些敏感权限受到了Android权限系统的保护,权限系统会根据保护级别将权限划分为组。这些组的定义如下:

  • Normal:使用时不会构成严重风险的应用程序级权限。

  • Dangerous:可能泄漏敏感数据的权限,或暴露危险的系统资源的权限。用户必须在安装时确认这类的权限。

  • Signature:只有使用相同私钥签名的应用程序才可以使用的权限。

  • Signature-or-system:只有在系统映像中,使用相同证书签名的应用程序才可以使用的权限。

这些权限也可以按照用户验证和授权的时间来分类:

  • 安装时:用户在安装应用程序之前授予的权限。

  • 使用时间:用户在使用应用程序时授予的权限。

顾名思义,危险的权限对用户的威胁最大。你可以点击这里查看危险的Android权限列表(https://developer.android.com/guide/topics/permissions/overview#permission-groups)。

 

640?wx_fmt=png

恶意获取特权

 

虽然从理论的角度来说,这种权限审批系统听起来很安全,但研究表明,现实中只有42%的用户知道他们的应用需要哪些权限,只有30%知道他们的应用可以使用这些权限执行哪些操作。很明显,普通移动用户并不知道他们的应用程序能够做什么。因此,有害的应用程序可以利用用户不重视应用程序权限的这种心理,请求危险的系统资源,并进一步获取收集个人数据的权限,而不会被检测到。

 

640?wx_fmt=png

开发人员喜欢权限

 

Android权限模型最危险的一个问题在于,对于开发人员来说,权限多多益善,他们为应用程序分配的权限往往往往超过了实际需求。开发人员可以在需要的时候,给应用程序添加权限,却很少将请求的权限限制在完成功能所必须的最小特权范围内。在用户不知情的情况下,这种做法显然会将用户置于风险之中。例如,对于根据当前位置推荐餐馆的应用程序来说,需要访问GPS数据很自然,而单独的开发人员计算器应用程序请求相同的权限,就不太正常了。事实上,上述清单中包含的此类权限可能会因为额外的权限而危害到用户的隐私。

 

640?wx_fmt=png

制定风险评分模型

 

为了根据潜在的威胁严重程度对应用程序进行分类,我们必须根据请求危险权限的数量以及允许的情况,生成一个确定安卓应用程序潜在威胁的公式。为此,首先我们必须确定哪些权限适合特定的应用程序。当然,不同类型的应用程序需要不同的权限集来完成其预期的任务。最后,我们决定观察以下类型的Android应用:

  • 社交媒体(例如Twitter、Facebook、Instagram、Skype)

  • 工具程序(例如MyFitnessPal、内存清理器、无线电扫描仪、QR条码扫描器)

  • 游戏(例如部落战争、飞行终结:粉碎小鸟、World of Candy)

  • 金融(例如Robinhood、LafAmBank、Santander)

  • 提高效率(例如Pandora、Spotify、Firefox)

下一步是为特定应用程序类别范围内的每个危险权限分配权重。更进一步,对于某个类别下特定应用程序中找到的每一种危险权限,我们都根据其风险级别给出了权重值。

  • 绿色(权重为1):特定类别中的应用程序应该会请求的的危险权限。

  • 黄色(权重为3):如果开发人员请求这种危险权限,则表示很可疑。

  • 红色(权重为5):危险权限,绝对不应该请求这类的权限。

然后,必须根据每个应用程序类别的上述权重,对危险权限进行分类。遗憾的是,目前没有客观的方法来衡量危险权限的严重性,因此我们必须主观地分析每个应用程序类别中每个权限的常见情况。

640?wx_fmt=png

危险权限的类型以及每个观察类别的风险评分

 

640?wx_fmt=png

计算应用程序的风险评分

 

根据上面显示的权重和危险权限分类,我们可以计算每个应用程序的风险评分。你可以通过这些风险评分判断哪个应用程序的下载最可疑,以及哪个应用程序类别往往会请求额外的权限。

数学因数:

  • 风险评分(RS):类别与每种危险权限的权重总和。如果想计算风险评分,那么可以使用这个公式。

  • N:危险权限的总数。

  • 危险等级:最终结果,根据请求的危险权限,判断是否可以信任下载的应用程序。

如果想计算危险等级,那么可以使用下面的公式:

  • 危险等级= RS / N

 

640?wx_fmt=png

测试真实的安卓应用

 

为了测试应用程序的评分系统,我们选择了30个不同类别的应用程序来运行我们的工具PermissionHunter。我们所选的应用有些知名的发布商,有些则来自小公司,或未知和可疑的发布商。我们的目的是扩大范围,以确保我们的评分的准确性。例如,像Skype这样的大型消息应用程序应该具有相对低风险的分数,它不应该有非常不必要的权限,而且还应该有良好的密钥证书。另一方面,一些来自亚洲名不经传的开发商的恶作剧电话应用获得很高的危险评分也不足为奇,因为它们可能会请求访问电话薄信息、内存或拨打电话的权限。

 

640?wx_fmt=png

结果

 

640?wx_fmt=png

每个应用类别的平均风险评分

根据我们的测试结果,公用事业、金融和提高效率方面的应用程序的平均风险评分都比较高。总的来说,有些平均分数并不完全符合我们的预期,但大多数异常都有一定的理由。更重要的是,我们的工具PermissionHunter的结果似乎与我们人眼的测试一致——可疑的应用程序在风险评分中得分都很高,而值得信赖的大型开发商的应用程序则得分较低。虽然更广泛的应用类别可能有助于提高我们的准确性,但目前的结果与我们的预期比较一致。

 

640?wx_fmt=png

总结

 

最后,预防Android设备上恶意软件的最后一道防线只能落在用户肩上。首先,用户应该从应用商店下载应用程序,而不是通过网上的链接或其他第三方应用程序商店下载应用程序。其次,用户始终应该检查应用程序提供的基本信息,以确保其基本功能。这可能包括阅读评论(特别是负面评论,因为这些评论特别有说服力),并通过查看权限来降低应用程序获取额外特权的可能性。为用户提供有关隐私和个人示例的更多信息,可以帮助用户选择请求更少、更相关权限的应用程序,还可以降低下载恶意安卓应用程序的风险。

原文:https://medium.com/@ahadsheriff/android-security-is-broken-heres-how-we-can-fix-it-8424514c4d5f

作者:Ahad Sheriff,创始人@https://12for12.org 与 https://ahadsheriff.com

本文为 CSDN 翻译,转载请注明来源出处。

 为什么说Python入门很简单,但是在你这很难?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

【END】

640?wx_fmt=jpeg

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

640?wx_fmt=jpeg

 热 文 推 荐 

开源需自立!Android、GitHub、Apache 全线告急!

☞任正非回应美国禁令推迟90天实施;小米无惧安卓系统禁用;苹果5G芯片有望2025年面世 | 极客头条

程序员过关斩将:小小的分页引发的加班血案

☞揭秘清华 AI 学堂班:姚期智担任首席教授,2019 年首批招收 30 人

程序员 520 脱单指南!

《使女的故事》大火,AI是背后最大推手?

☞十面九问的逆天异步神器-celery,你了解多少?

黑客亲述: "倾家荡产,是你们的事! "

Docker 系列学习文章 | 什么是容器云?

☞大神!这段代码让程序员躺赚200W,源码简单,你怎么看?

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐