资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
安卓应用程序中的目标分裂安卓应用程序中的目标分裂 摘要 安卓应用声明安卓运行平台的目标版本。当有更新的安卓版本在设备上运行时应用程序会议兼容模式执行尝试模仿之前的版本。此设计具有严重的安全问题。过时安卓版本的应用程序对于安卓平_全性的改变是无效的。我们称这种情况为目标分裂的问题。 我们在20_年5月至2021年12月分析了一个数据集的1232696个免费的安卓应用程序研究显示目标分裂问题是整个应用程序生态系统最值得关注的并且这几年一直是这样。总计当前有93%的应用程序版本老于平台版本平均过时686天;79%的应用程序上传到应用程序商城时就已经是过时于平台版本。最终我们调查了七个安全相关的更改在指定已过期的应用程序中停用安卓平台结果显示并不能起到尝试提高安卓应用程序安全性的作用。 1. 引言 安卓已经成为全球最流行的智能手机平台拥有超过10亿台源设备。安卓面临两大安全挑战:交付安全代码给用户、设备中的碎片和应用程序中的碎片。对设备碎片的关注是众所周至的。谷歌不控制分发安卓设备或安卓软件更新。谷歌依靠其他企业的网络提供最新的安卓软件给用户以新设备的形式进行软件升级。由于分布式的进程大量的安卓设备都在运行老于最新安卓版本的程序。临界的安全补丁不能达到数以万计的安卓用户延长安全漏洞的生命周期与设备的碎片化相比较程序的碎片化却很少收到类似的安全后果的关注。 安卓通过安卓API暴露了许多必要的库功能给应用程序。安卓平台的新版本可以介绍对现有的library特征所做的改变。例如:安卓4.4改变了Alarmmanager.set的批量报警行为设置为相同的时间。这种变化有助于提高电池寿命牺牲不精确的报警。行为变化就会引起一个像当前应用程序的一个问题当要更新到一个新的安卓版本时设备会突然中断。 谷歌分配给每个安卓平台版本一个整数称作一个API等级。保持一定程度的兼容性防止应用程序戏剧性的改变他们的没有警告提示的行为每个应用程序都有一个目标API级别。 在API级别较高的设备上运行的应用程序他们的目标API级别在兼容模式下执行尝试与目标API匹配设备的水平尽可能的接近。例如设置他们应用程序的目标API级别18(安卓4.3)将使用不相匹配的报警行为即便是运行在最新的安卓设备上。安卓平台的变化可以包括重要的新安全功能要么解决已知问题的安卓API或者提供额外的保护防止攻击。任何这些功能兼容性模式的禁用将不适合过时的安卓API等级。这个设计意味着即使运行一个最新的设备针对过时API级别的应用程序也将无法方位最新的安全特性。谷歌在谷歌商店中不发布应用程序的目标API水平所以没有简单的方法让用户知道应用程序所对应的API是否已经过时。相反用户完全时在被应用程序的开发者所摆布。我们称这个问题为应用碎片过时于目标分裂的问题。 大家最熟悉的目标分裂问题的结果是关于一个远程执行代码的漏洞安卓网页。API级别17天际新的行为来解决这个漏洞但是这种变化知识应用于应用程序的API级别为17或者更高的目标。该漏洞被披露在安卓平台后应用程序仍然是脆弱的当运行在新的平台时依旧是过时的API级别。几个研究这个披露的报告显示了API等级小于等于14的应用程序所占的百分比 。但这种脆弱性只是一个例子目标分裂问题是的安卓应用程序不安全、没有去研究自己的权专属标碎片。一个比较完整的目标分裂问题的分析是了解安卓生态系统的安全性。 据我们所知这篇报告是第一个多方面的认识到目标分裂的安全性的问题。在本文中我们从谷歌应用商城中收集了五个数据集的免费安卓应用信息近四年的数据。总的来说这些数据集包括1232696个应用程序我们测量的目标分裂问题的趋势使用从谷歌Play商店获得的元数据。最后我们研究的安全性影响的目标分裂问题的几个具体的漏洞。本研究主要研究问题及结果如下: 目标分裂在安卓应用环境中的状态是什么样的?我们检查了在2021年12月内从谷歌应用商店收集的60086个免费的应用数据集发现有93%的应用定位了过时的API级别。我们定义一个“过时”度量目标API级别为686天。 是开发人员选择定位过期的安卓版本还是开发者放弃应用程序而导致的分裂化?为了解决未维护的应用我们定义了一个“过时的过时”度量它从应用上传到应用商店之日起测量过期时间结果显示目标分段不仅仅是由停滞的应用导致的。我们发现2021年12月收集的应用程序的平均过时时长为536天。 在最受欢迎的应用程序中目标分裂是个问题么?我们研究发现在很受欢迎的应用程序中也存在目标分裂的问题。我们发现2021年12月收集的88%的应用程序安装超过一百万次这个应用程序是使用过时的API等级。这些应用程序平均过时607天平均过时的过时493天只是稍微低于全部人口。 目标分裂问题是否会随着时间的推移而变得不那么严重了呢?我们将20_年12月的数据集的目标分裂与20_年五月至2021年7月期间从谷歌应用商店收集的其他四个数据集进行比较这些数据集包含1232696个应用我们发现除了越来越多的除了越来越多的尾巴的极端超时的应用程序四个最近收集的数据集中的过时分布是非常相似的这表明目标分裂问题的严重性在几年没有显着改变。 今天目标分裂的具体安全影响是什么?我们通过检查安卓平台中的7个安全相关变化来扩展对目标分裂问题的讨论并提供了目标分裂对安卓整体系统安全性的广泛影响的第一次定量分析。 2.背景每一个安卓应用程序都包装清单文件。清单文件则是包含关于应用程序的_ML文档例如应用构件的清单、请求权限以及系统事件应用程序的响应。清单包含与本研究相关的两个属性:一个最低限度API 级别最小Sdk版本以及一个目标API 级别的目标Sdk版本。最低限度API 级别的含义是十分直截了当的。一个应用程序是无法被安装在一个低于最低限度API 级别的安卓设备上的。这样的设计确保应用程序不被安装在缺乏基本功能的设备上。 清单也同样包括最高限度API级别但自从安卓2.0.1开始最高限度API水平不再用来做别的除了在谷歌应用商店中做过滤搜索。 一个应用程序的目标API 级别则是用来维护促进兼容新的安卓平台。如果设备的API级别高于一个应用设备的目标API级别设备将启用兼容性功能尽最大可能匹配目标API的特性。一套兼容性功能在每个API级别都可以在安卓的文档中找到。要注意的是应用程序可以在比目标API级别低的设备上安全安装。开发人员可以定位最新的API级别并不会使其应用程序与旧版安卓设备不相容。 如果一个应用程序为声明目标API级别或者如果目标API级别是低于最低限度API级别的目标API级别则被定为最低限API级别。对于本论文其余的部分我们区别于在清单文件中的原始级别的目标API级别与用这个规则计算的目标级别实际由安卓操作系统的目标API级别。目前大约有百分之8的应用程序未声明一个有效的原始目标API级别。 目标Sdk版本和最小Sdk版本属性整数值被称为为“API级别”“API级别”对应不同的安卓版本代码。对于本文的其余部分当讨论其他的API版本我们使用API级别值(列如, 17, 18, 19)而不是版本代码(例如, 4.2, 4.3, 4.4)。最近的API级别与安卓版本代码对应如表I所示。 API 等级 版本号 版本名称 发布日期 14 4.04.0.2 Ice Cream Sandwich 20_年10月 15 4.0.34.0.420_年12月 16 4.14.1.2 Jelly Bean 20_年7月 17 4.24.2.220_年11月 18 4.34.3.12021年7月 19 4.44.4.4 KitKat 2021年11月 20 4.4W4.4W.22021年6月 21 5.05.0.2 Lollipop 2021年11月 22 5.15.1.12021年5月 23 6.06.0.1 Marshmallow 2021年10月 表I:安卓版本简史 A安全问题 从安卓文档中可以看出矛头指向落伍的API级别存在安全隐患这一点并不明显。在文档页面上目标Sdk版本属性谷歌建议开发人员应该“增加目标Sdk版本属性的价值去匹配最新的API级别”但是这里没有提到目标落伍API级别的安全后果。在“安全贴士”第9页没有提及目标API级别。可以假设目标落伍的API级别是最小的或不存在的安全后果。 然而在最新的安卓版本中有重要的安全改动不会用于目标落伍的API级别应用程序。例如API级别17和19两者皆包含在广泛使用中的防止代码注入漏洞的改变。其他几个API级别改变流行特征具有更安全的默认行为提供一层额外的保护。表II列出了为了主要安全可以通过定位停用的安卓平台的改变。这些改变的细节和他们修复的漏洞在第五节中讨论。如果大量的应用程序目标过期API级别那么这些更改无论多么用心良苦将使应用程序被置于不必要的风险。 API 平台更改 16 17 17 19 19 21 21 默认情况下从JavaScript访问文件网址是禁用的 默认情况下内容管理器不再受外部应用程序的影响 未注释的应用程序模式是不能从JavaScript代码调用的 isValidFragment以防止Fragment Hijacking JavaScript URLs在一个分开的网络视图环境中执行 Context.bindService不再接受隐藏目的 网络视图默认阻止混合内容 表II:已选择与安卓相关的平台更改将更改为Android平台。目标API级别低于所列级别的应用程序无法受益于这些更改提供的任何安全保护。 3方法 我们的研究分析了从20_年5月到2021年1月期间从谷歌应用商店收集的1,232,696个免费应用的数据集。要收集这些应用我们开发了一个系统来抓取谷歌应用商店来识别新应用从谷歌应用中抓取元数据 存储和下载实际的应用程序文件。 该系统在五个短暂的时间窗口中操作自然地将我们的数据集分成对应于这些时间窗口的五个较小的数据集(数据集ABCD和E以时间逆序)。表III描述这些 数据集并列出收集每个数据集时最新的API级别。 A.收集应用程序 我们的系统会首先抓取谷歌应用商店以便下载应用程序。 如果应用具有唯一的应用ID我们认为该应用是唯一的。 要抓取谷歌应用商店我们使用以下四种技术:(1)针对热门应用和收藏抓取谷歌应用指定的类别(2)抓取随机知名的开发者页面以查找新应用(3)在谷歌上搜索 使用已知应用程式说明中的字词播放商店(4)从已检索网页的网址撷取所有应用程序编号。 谷歌会在商店中发布应用程式的中继资料。我们会撷取并收集每个已检索应用程式的中继资料包括最新版本 该应用程序已上传到应用商店和已安装应用程序的设备数量。 要下载应用程序我们使用类似于ViennotGarcia和Nieh 描述的方法。 为了尝试有效地收集尽可能多的一组应用程序我们只下载从未见过的应用程序ID。 对于除了数据集A之外的每个数据集我们尝试下载每个在抓取期间标识的应用程序ID。 由于时间限制(和技术挑战)数据集A只是可用应用程序的一个子集。 我们在第VI-B节讨论这种收集方法的效果。 数据集 应用程序数量 检索日期 最新 API A 60,086 December, 2021 23 B 219,115 June, 2021 19 C 165,489 January, 2021 19 D 645,862 July, 2021 17 E 142,144 May, 20_ 15 表III:本研究中使用的五个数据集的概述以及每个数据集收集时的最新API级别。 B.分析 谷歌应用商店发布每个应用程式的最低API层级但不会发布目标API层级。 我们使用apk工具 一个静态
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号