为什么 Android 权限是分组授予的?

信息安全 移动的 安卓 数据泄露
2021-09-08 09:54:27

权限组上的 Android 文档指出

如果应用程序请求其清单中列出的危险权限,并且该应用程序已经在同一权限组中具有另一个危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。例如,如果一个应用程序之前请求并被授予READ_CONTACTS权限,然后它请求WRITE_CONTACTS,系统会立即授予该权限。

这不是安全风险吗?读取联系人以便应用程序让我与朋友分享内容比更改现有联系人的风险要小,后者可以被恶意使用,例如,将每个联系人的电子邮件地址更改为类似于原始电子邮件的内容,但实际上会导致攻击者的帐户,这可以继续转发电子邮件交换,双方都不知道。

该文档在下面进一步强调了这一点:

再一次,系统只是告诉用户应用程序需要哪些权限组,而不是个人权限

PHONE组包括CALL_PHONE并且还READ_CALL_LOG

同样,应该允许类似 Yelp 的应用程序呼叫商家,或者订购应用程序可以合法地向送货员拨打电话,但这意味着该应用程序还可以静默读取用户的私人通话记录并将其发送到任何广告软件与它捆绑在一起,因为INTERNET不需要用户同意的正常权限。某些号码的通话记录可用作勒索用户的依据,或者(可能更常见)可以作为非常有价值的信息,让广告商了解用户的人口统计资料和社交网络。

各种报告显示,数量惊人的应用程序带有用户未预料到的数据。那么为什么Android权限如此粗糙?

用户的便利性(即在 Android M 的运行时权限系统中不会过多地打扰用户)似乎是一个薄弱的理由。没有理由阅读通话记录的合法应用不会请求权限,因此以下所有选项只会询问用户一次,但安全性结果不同:

  1. “这个app可以打电话吗”(个人权限)
  2. “这个应用程序可以访问电话,重定向拨出电话(!),并阅读您的联系人列表”(当前组权限用准确的措辞,但不必要的可怕,因为大多数应用程序只会拨打电话)
  3. “允许 [此应用] 拨打和管理电话”(Android M 中组权限的措辞,含糊不清)

CALENDAR 也是如此——创建事件的只写权限相对无害,但读取用户的私人事件则要少得多。等等。

权限不需要更细化是否有充分的理由?

1个回答

他们不想吓唬用户使用应用程序——如果应用程序需要使用电话功能,它可能需要更多权限才能正常使用(从应用程序获取过多权限请求会影响用户)。所以为了补偿-他们将权限分组

这也会影响操作系统的可用性 - 权限请求越少,整体用户体验越好:如果您查看developer.android.com中关于提供权限解释的内容:

请记住,您不想用解释压倒用户;如果您提供太多解释,用户可能会发现应用程序令人沮丧并将其删除。

换句话说:他们不想用权限请求压倒用户 - 它还影响操作系统向用户解释权限风险的能力:“访问联系人”而不是读/写联系人和获取帐户。不是每个用户都会了解什么是 SIP - 但每个人都知道什么是电话呼叫。