权限组上的 Android 文档指出
如果应用程序请求其清单中列出的危险权限,并且该应用程序已经在同一权限组中具有另一个危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。例如,如果一个应用程序之前请求并被授予READ_CONTACTS权限,然后它请求WRITE_CONTACTS,系统会立即授予该权限。
这不是安全风险吗?读取联系人以便应用程序让我与朋友分享内容比更改现有联系人的风险要小,后者可以被恶意使用,例如,将每个联系人的电子邮件地址更改为类似于原始电子邮件的内容,但实际上会导致攻击者的帐户,这可以继续转发电子邮件交换,双方都不知道。
该文档在下面进一步强调了这一点:
再一次,系统只是告诉用户应用程序需要哪些权限组,而不是个人权限
该PHONE组包括CALL_PHONE并且还READ_CALL_LOG。
同样,应该允许类似 Yelp 的应用程序呼叫商家,或者订购应用程序可以合法地向送货员拨打电话,但这意味着该应用程序还可以静默读取用户的私人通话记录并将其发送到任何广告软件与它捆绑在一起,因为INTERNET是不需要用户同意的正常权限。某些号码的通话记录可用作勒索用户的依据,或者(可能更常见)可以作为非常有价值的信息,让广告商了解用户的人口统计资料和社交网络。
各种报告显示,数量惊人的应用程序带有用户未预料到的数据。那么为什么Android权限如此粗糙?
用户的便利性(即在 Android M 的运行时权限系统中不会过多地打扰用户)似乎是一个薄弱的理由。没有理由阅读通话记录的合法应用不会请求权限,因此以下所有选项只会询问用户一次,但安全性结果不同:
- “这个app可以打电话吗”(个人权限)
- “这个应用程序可以访问电话,重定向拨出电话(!),并阅读您的联系人列表”(当前组权限用准确的措辞,但不必要的可怕,因为大多数应用程序只会拨打电话)
- “允许 [此应用] 拨打和管理电话”(Android M 中组权限的措辞,含糊不清)
CALENDAR 也是如此——创建事件的只写权限相对无害,但读取用户的私人事件则要少得多。等等。
权限不需要更细化是否有充分的理由?