软件绿色联盟自2021年初,加强了对APP安全隐私方面的检测,旨在帮助开发者更好地发现APP存在的隐私问题,强化开发者保护用户隐私的意识。一年来,已累计检测了上千款APP,推动六百多款APP完成了整改。
为助力开发者发现并解决问题,近期我们将一年来测试中发现的典型问题进行总结,策划了APP隐私问题专题,包含APP超范围收集个人信息、违规使用个人信息、不当索取权限行为、诱导用户下载APP四方面,主要从问题表现、高频场景及解决方案等角度进行解析,欢迎大家持续关注。
本期我们将基于《软件绿色联盟应用体验标准5.0-安全标准》(以下简称绿标5.0安全标准)以及《T/TAF 078.1-2020 APP用户权益保护测评规范-超范围收集个人信息》要求,结合国内主流应用超范围收集个人信息方面的问题进行总结说明。
超范围收集个人信息违规高频表现
1、APP或内嵌三方SDK收集软件安装列表信息,未在隐私声明中告知用户
1)应用为保证特定功能的正常运行需要获取系统安装的软件列表(调用getInstalledPackages等接口),但由于开发者隐私安全意识不足等原因,未按标准要求在隐私声明中说明其获取系统安装软件列表的行为,导致应用出现超范围收集个人信息的行为。
2)应用在调用三方SDK的场景中,未全面核实三方SDK是否存在获取软件安装列表的行为,如调用三方SDK(友盟、穿山甲、个推等SDK)以实现分析、广告、推送等功能时,没有在隐私声明中说明该SDK获取系统软件安装列表,导致应用被判定超范围收集个人信息。
获取软件列表的高频场景:
(1)应用内文章、图片等内容需要分享至QQ、微博、微信等第三方渠道时,需要判定是否安装对应APP,此时需获取应用安装的软件列表;
(2)应用内涉及到广告推荐下载APP时,需要判定是否已经安装所推荐的应用而获取系统安装软件列表;
(3)游戏等竞技类应用,需要获取应用安装列表信息用来判定是否安装了作弊软件;
(4)华为HMS发送操作系统或应用程序更新和安装通知时需要获取应用安装的软件列表。
解决方案:
应用基于功能必须获取系统安装的软件列表时,开发者需在隐私政策中进行说明;
内嵌的三方SDK存在获取系统安装的软件列表时,开发者需核实内嵌SDK该行为是否必要,必要则需在隐私政策中告知用户,否则开发者应避开使用此类SDK或与SDK厂商协商,移除获取软件安装列表的行为。
2、APP或内嵌三方SDK获取设备MAC地址,未在隐私声明中告知用户
(1)购物、理财等场景下,应用出于安全风控的目的,通过调用getMacAddress接口等方式随意获取设备MAC地址信息;
(2)阅读、新闻推送等场景下,应用出于数据分析、问题追踪和广告投放等目的,内嵌如快手、数美、腾讯Bugly等三方SDK,随意获取设备的MAC地址。
解决方案:
绿标5.0安全标准中明确指出:应用禁止使用IMEI、MAC地址等物理识别码作为唯一设备标识符,避免长期对用户跟踪的行为。禁止非系统应用访问硬件标识符,将对应用数据统计、广告推荐、用户画像等业务场景造成影响,可替代的方案如下:
OAID(Open Anonymous Device Identifier):匿名设备标识符,开放匿名ID可以连接所有应用数据的标识符,移动智能终端系统首次启动后立即生成,可用于广告业务;
VAID(Vender Anonymous Device Identifier):开发者匿名设备标识符,用于开放给开发者的设备标识符,可在应用安装时产生,可用于同一开发者不同应用之间的推荐;
AAID(Application Anonymous Device Identifier):应用匿名设备标识符,第三方应用获取的匿名设备标识,可在应用安装时产生,可用于用户统计等。
3、APP或内嵌三方SDK获取GPS定位信息,未在隐私声明中告知用户
应用或者三方SDK通过调用requestLocationUpdates、getLongitude、getAccuracy等接口获取GPS定位信息,但未在隐私声明中告知用户收集该数据的场景和目的。
获取GPS定位信息高频场景:
(1)应用必要业务场景需要获取GPS信息,比如导航、地图等场景;
(2)广告投放类SDK(如广点通、快手广告、穿山甲等SDK)分析、衡量广告和相关服务的有效性并进行用户画像和偏好推荐等;
(3)消息推送类SDK(如个推SDK)可能会根据不同位置进行差异化服务推送而获取GPS定位信息。
解决方案:
绿标5.0安全标准中明确指出:严格控制应用申请位置权限,除导航、运动、网络约车类应用可申请后台持续获取位置,其他类型应用如无合理使用场景不应申请位置权限。《T/TAF 077.2-2020 APP收集使用个人信息最小必要评估规范-位置信息》中第6章节给出了个人位置信息数据使用规则,对“使用场景、适用范围分类、是否需要精准位置,前台调用频次、后台调用频次”做出了具体的要求,需开发者遵循。如果确认需要获取GPS定位信息,开发者需在隐私政策中声明清晰并保证数据分析的去标识化,同时应避免对用户的长期跟踪;其他需要使用位置信息的场景可以使用粗略位置(对应android.permission.ACCESS_COARSE_LOCATION权限)代替;
如果内嵌三方SDK非必要业务场景涉及到收集GPS信息,开发者可将android.permission.ACCESS_FINE_LOCATION从AndroidManifest.xml文件中移除,SDK将获取不到GPS定位信息。