Android 8.0及以上版本的权限策略更新有哪些好处?

3

Android在8.0版本中略微改变了其权限策略:

在Android 8.0(API级别26)之前,如果应用程序在运行时请求权限并且授予了该权限,则系统还会错误地授予应用程序属于同一权限组并在清单中注册的其余权限。

对于针对Android 8.0的应用程序,此行为已得到纠正。应用程序仅被授予显式请求的权限。但是,一旦用户向应用程序授予权限,该权限组中所有后续的权限请求都将自动授予。

例如,假设一个应用程序在其清单中列出了READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。该应用程序请求READ_EXTERNAL_STORAGE并且用户授予它。如果应用程序针对API级别25或更低级别,则系统同时授予WRITE_EXTERNAL_STORAGE,因为它属于相同的STORAGE权限组并且也在清单中注册。如果应用程序针对Android 8.0(API级别26),则系统仅在该时间授予READ_EXTERNAL_STORAGE;但是,如果应用程序稍后请求WRITE_EXTERNAL_STORAGE,则系统将立即授予该特权而无需提示用户。

这种改变的好处是什么?它似乎实现了相同的目的。先前的方法有什么问题,新方法是如何解决的?

1个回答

4

新方法修复了之前的方法可能出现的哪些问题?

你看,之前有一个bug...

引用研究论文,强调已添加:

首先,攻击者创建一个应用程序,并在其清单文件中包含一个自定义权限声明,保护级别为“normal”或“signature”,并将此自定义权限设置为系统权限组的一部分(例如存储、相机等)。然后,他们更新此自定义权限的定义,使保护级别更改为“dangerous”,然后继续向相应的应用市场推送应用程序更新...预期的是,由于自定义权限的级别为“dangerous”,用户将在运行时被提示决定是否授予或拒绝此权限。然而,恶意应用程序自动获得了该权限。此外,由于运行时权限模型按组授予危险权限,因此该应用程序还会自动获取原始权限所属的系统权限组的所有其他请求的危险权限。可以遵循相同的过程来攻击任何系统权限组;因此,攻击者可以同时静默获取所有系统权限。在Android清单中请求危险权限对攻击者没有问题,因为自Android 6.0以来,应用程序的权限要求不直接呈现给用户。因此,用户将完全不知道已向应用程序授予了所有这些系统权限。
据我所知,这个Android 8.0的变化是针对这个漏洞采取的缓解策略之一。这只能稍微帮助一下,因此我认为还进行了其他更改。然而,考虑到论文中提出的漏洞的性质和Android 8.0的性质,我不得不认为两者至少有些相关。

我仍然不完全理解Android在该政策变更中所做的改进。根据安全性考虑,自动立即授予危险权限[Android 6.0]或在需要时自动授予[Android 8.0]对我来说并没有任何改进。迟早你也会获得第二个权限,例如WRITE_EXTERNAL_STORAGE,并且在这两种情况下都会悄悄地进行。在我看来,这是一个奇怪的补丁。文章非常有信息量,链接很好。但我不明白这种变化在阻止任何攻击方面有何用处。 - Antonino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接