后期-APP信息保护合规审核

背景

从2019年开始工信部发文强调个人隐私安全开始,网安部审核并通报了一批批的APP。

597直聘有被通报过,限期15个工作日内整改完毕。

以下是应用宝上的隐私不通过的截图:

安卓/应用宝个人信息审核不过1

安卓/应用宝个人信息审核不过2

安卓/应用宝个人信息审核不过3

597直聘某个版本在应用宝上没通过的在线报告

APP信息保护合规审核

安卓/App信息保护合规审核

原则:收集个人信息要公开透明的原则
协议–权限–行为–保障

用户信息收集、使用规则拨测

  • “收集、使用个人信息”的公示情况:(单独成文、显著标示、主动授权、易读性)
  • “收集、使用个人信息”的目的方式内容的明示情况:(完整度、合理性、霸王条款、超范围约定)
  • 功能与声明的“收集、使用个人信息”内容是否一致:(明示程度、超范围收集动作)
  • “个人信息安全保护措施和能力”(数据加密、访问控制、恶意代码规范)

应用敏感权限过度申请拨测

  • APP所使用的SDK目标API级别(一揽子强制授权、规避安全机制)
  • APP所申请敏感权限授权方式及对应功能(敏感权限过度申请、个人信息违规收集)
  • 用户申诉渠道和反馈机制:(投诉渠道、申诉结果)
  • 用户权利保障机制:(个性化推荐退订、用户信息查询删除、账户注销、授权撤回)

APP侵权行为

APP侵权行为

APP信息保护合规审核判定规则细读

一、以下行为可被认定为“未公开收集使用规则”

  1. 在App中没有隐私政策,或者隐私政策中没有收集使用个人信息规则;
  2. 在App首次运行时未通过弹窗等明显方式提示用户阅读隐私政策等收集使用规则;
  3. 隐私政策等收集使用规则难以访问,如进入App主界面后,需多于4次点击等操作才能访问到
    APP提供的隐私政策应方便用户查找、阅读
    以下认定为违规:
    1. 应用内未提供隐私政策,通过官网、客服咨询才能查看到隐私政策
    2. 隐私政策访问路径设置过深,多余4次点击操作访问到

      例:

      通过,“我的–设置–关于我们–协议条款–隐私政策”

      不通过,“我的–设置–关于我们–帮助–协议条款–隐私政策”

    3. 仅首次运行时,通过弹窗的方式提供了隐私政策,进入应用后无法再次查看
    4. 注册登录后在应用内找不到隐私政策
  4. 隐私政策等收集使用规则难以阅读,如文字过小过密、颜色过淡、模糊不清,或未提供简体中文版等。

PS. 隐私政策中应包含哪些内容

  1. 个人信息控制着的基本信息:主体信息(全称)、联系方式。
  2. 各业务功能收集个人信息的目录、方式、范围。
  3. 是否涉及个人信息数据出境、个人信息存储期限、超期处理方式。
  4. 对外共享、转让、公开披露个人信息的目的、方式、范围。
  5. 查询、更正、删除个人信息、撤回授权信息、注销账号的方式等。
  6. 个人信息的安全保障能力。【个人信息传输过程中要加密处理】
  7. 提供个人信息后可能存在的安全风险,及不提供个人信息可能产生的影响。
  8. 处理个人信息主体询问、投诉的渠道和机制,注意承诺期限不应超过15个工作日。

二、以下行为可被认定为“未明示收集使用个人信息的目的、方式和范围”

  1. 未逐一列出App(包括委托的第三方或嵌入的第三方代码、插件)收集使用个人信息的目的、方式、范围等;
    以下认定为违规:

    1. 未完整列出收集个人信息的类型、目的
    2. 未逐一说明申请电话、存储、通讯录、短信、位置、日历、相机、麦克风等权限的目的
    3. 存在第三方SDK收集使用个人信息的行为,但未在隐私政策中明确告知
  2. 收集使用个人信息的目的、方式、范围发生变化时,未以适当方式通知用户,适当方式包括更新隐私政策等收集使用规则并提醒用户阅读等;

  3. 在申请打开可收集个人信息的权限,或申请收集用户身份证号、银行账号、行踪轨迹等个人敏感信息时,未同步告知用户其目的,或者目的不明确、难以理解;
    【主动申请权限、收集个人敏感信息时未同步告知目的:APP主动申请权限、收集个人敏感信息时应同步告知目的、收集使用规则】
    以下认定为违规:

    1. APP在主动申请电话、存储、相机、麦克风、通讯录、短信、日历、位置等敏感权限之前或拒绝之后未明确告知目的
    2. 申请敏感权限时虽同步告知目的,但告知目的不明确
    3. 在收集个人身份证、个人声明信息的界面未同步告知收集该类个人信息的目的、使用规则等

    示例:
    安卓/隐私政策个人信息示例1
    安卓/隐私政策个人信息示例2

  4. 有关收集使用规则的内容晦涩难懂、冗长繁琐,用户难以理解,如使用大量专业术语等。

三、以下行为可被认定为“未经用户同意收集使用个人信息”

  1. 征得用户同意前就开始收集个人信息或打开可收集个人信息的权限

    【反例如:配置第三方SDK不规范,一打开应用第三方SDK就去读取 / 授权请求个人信息 –整改–》把第三方SDK的初始化放到同意隐私政策之后】

    【APP首次启动时,应通过明显方式提醒用户阅读隐私政策,并在授权同意前不应有任何收集个人信息或申请开启权限的行为】
    以下认定为违规:

    1. 在用户授权同意隐私政策前申请开启权限
    2. 用户授权同意隐私政策前,收集用户个人信息
    3. 用户阅读隐私政策的过程中已经开始收集个人信息

    反例:
    安卓/收集个人信息反例1

    安卓/授权同意隐私政策前上传个人信息

  2. 用户明确表示不同意后,仍收集个人信息或打开可收集个人信息的权限,或频繁征求用户同意、干扰用户正常使用
    以下认定为违规:

    1. 启动时,不给权限APP弹窗循环
    2. 运行时APP弹窗循环
    3. 重新运行时频繁申请权限
      反例:
      1. 拒绝权限后再次切回到这个页面的时候还会弹出权限弹窗(再次拒绝,再次切回到这个页面还会弹)
      2. 或者:杀掉进程再次进入还会弹窗的
  3. 实际收集的个人信息或打开的可收集个人信息权限超出用户授权范围

  4. 以默认选择同意隐私政策等非明示方式征求用户同意【可改成不同意隐私政策就退出APP】
    以下认定为违规:

    1. 启动弹窗仅提供了“好的”“我知道”等选项,未提供不同意选项
    2. 注册界面、登录界面等征求同意的环节存在默认同意的行为
      反例:
      安卓/隐私政策反例-默认同意
  5. 未经用户同意更改其设置的可收集个人信息权限状态,如App更新时自动将用户设置的权限恢复到默认状态

  6. 利用用户个人信息和算法定向推送信息,未提供非定向推送信息的选项
    以下认定为违规:

    1. 隐私政策中明确说明存在个性化推送功能,但应用中未提供个性化功能(单独关闭不算,必须是一次性关闭)
      例子:
      安卓/隐私政策-关闭个性化推送
  7. 以欺诈、诱骗等不正当方式误导用户同意收集个人信息或打开可收集个人信息的权限,如故意欺瞒、掩饰收集使用个人信息的真实目的

  8. 未向用户提供撤回同意收集个人信息的途径、方式

  9. 违反其所声明的收集使用规则,收集使用个人信息。

四、以下行为可被认定为“违反必要原则,收集与其提供的服务无关的个人信息”

  1. 收集的个人信息类型或打开的可收集个人信息权限与现有业务功能无关;
    以下认定为违规:
    1. 未提供业务对应的功能,仍申请敏感权限
    2. 未使用权限对应的功能时,提前开启权限
      反例:
      安卓/权限审核-提前申请的反例
  2. 因用户不同意收集非必要个人信息或打开非必要权限,拒绝提供业务功能;
    以下认定为违规:
    1. 启动时,不给权限不让用【指的非必要权限,如:一键登录功能需要imei和MAC地址作为唯一标识符,需要imei号需要申请电话权限。拒绝后如何避免违规行为:不拿imei号,只拿MAC】
    2. 运行时,不给权限不让用
  3. App新增业务功能申请收集的个人信息超出用户原有同意范围,若用户不同意,则拒绝提供原有业务功能,新增业务功能取代原有业务功能的除外;
  4. 收集个人信息的频度等超出业务功能实际需要;
    以下认定为违规:
    1. 隐私政策未告知、也未经用户授权同意
    2. 隐私政策中未说明第三方SDK收集通讯录、短信、通话记录的目的,也未经用户授权同意
    3. 运行过程中,切换功能界面或每点击一次某功能时,频繁上传设备信息、位置信息等
    4. 运行过程中,切换功能界面或每点击一次某功能时,第三方SDK频繁上传设备信息、位置信息等
    5. 静置在某个功能界面,存在按照一定规律频繁收集个人信息的行为
    6. 静默或后台运行时超范围收集
    7. SDK静默后台超频次收集
  5. 仅以改善服务质量、提升用户体验、定向推送信息、研发新产品等为由,强制要求用户同意收集个人信息;
  6. 要求用户一次性同意打开多个可收集个人信息的权限,用户不同意则无法使用。

五、以下行为可被认定为“未经同意向他人提供个人信息”

  1. 既未经用户同意,也未做匿名化处理,App客户端直接向第三方提供个人信息,包括通过客户端嵌入的第三方代码、插件等方式向第三方提供个人信息;
  2. 既未经用户同意,也未做匿名化处理,数据传输至App后台服务器后,向第三方提供其收集的个人信息;【这个一般检测不到,但自身要做好】
  3. App接入第三方应用,未经用户同意,向第三方应用提供个人信息。
    【未经用户授权同意将个人信息共享给第三方SDK、小程序等】
    以下认定为违规:
    1. 隐私政策中未告知用户对外提供、转让个人信息的目的、类型及接收方身份,且数据未经处理即通过客户端或嵌入的SDK等代码、插件将个人信息提供给了第三方
    2. 隐私政策中明确告知第三方SDK收集个人信息的目的和范围,但在用户授权同意隐私政策前将个人信息提供给了第三方
    3. 隐私政策中未告知用户个人信息出境情形,存在将数据传输至境外
    4. 未告知也未经用户同意,将个人信息直接提供给接入的小程序、公众号、服务应用等第三方主体

六、以下行为可被认定为“未按法律规定提供删除或更正个人信息功能”或“未公布投诉、举报方式等信息”

  1. 未提供有效的更正、删除个人信息及注销用户账号功能
    以下认定为违规:
    1. APP未提供注销账号的功能
    2. APP提供的注销功能不可用
  2. 为更正、删除个人信息或注销用户账号设置不必要或不合理条件
    原则:不能提供多余注册时提供的信息,要注销方便便捷
    以下认定为违规:
    1. 注销需核验身份信息,重新提供的个人信息不应多于注册、使用等服务环节收集的个人信息
      注销时,要求用户提供手持身份证正反面照片,更正个人信息时要求提供人脸认证信息等个人敏感信息
    2. 不应要求用户填写精准的历史操作记录作为必要注销条件
    3. 不应仅提示存在积分、参与活动、授权登陆解绑等影响权利行使的问题,而不提供解决具体问题的通道
    4. 设置注销单个账户视同多个产品或服务的应当在注销前向用户进行详细说明
  3. 虽提供了更正、删除个人信息及注销用户账号功能,但未及时响应用户相应操作,需人工处理的,未在承诺时限内(承诺时限不得超过15个工作日,无承诺时限的,以15个工作日为限)完成核查和处理
    【注销账号需人工审核处理】
    以下认定为违规:
    1. 虽提供了更正、删除个人信息及注销用户账号功能,但未及时响应用户响应操作,需人工处理的,未在承诺时限内(承诺时限不超过15个工作日,无承诺时限的,以15个工作日为限)完成稽查和处理
  4. 更正、删除个人信息或注销用户账号等用户操作已执行完毕,但App后台并未完成的
  5. 未建立并公布个人信息安全投诉、举报渠道,或未在承诺时限内(承诺时限不得超过15个工作日,无承诺时限的,以15个工作日为限)受理并处理的。
    以下认定为违规:
    1. 未提供任何投诉、反馈的渠道
    2. 虽提供了相关渠道,但渠道不可用,无人响应、无回复等
    3. 提供的相关渠道未在规定期限内响应用户请求、完成处理、承诺期限超过15个工作日

七、未保障用户个人信息安全及权益

  1. 传输和存储个人敏感信息时未采取加密等安全措施
    以下认定为违规:
    1. 明文传输用户身份证、账号密码等个人敏感信息
  2. 欺骗误导用户下载APP
    以下认定为违规:
    1. 广告页面、开屏广告、主屏等功能页面无APP下载提示
    2. 广告页面、开屏广告、主屏等功能页面以“是否立即开始游戏”、“领取红包”等方式欺骗误导
    3. 用户自动下载非用户所自愿下载APP
    4. 广告页面、开屏广告、主屏等功能页面推广的应用与宣传不符

问答

  1. 频繁弹窗的判定:超过3次(包含3次)就算频繁弹窗
  2. 没有的功能,在隐私政策中不能多写
  3. 首页商品个性化显示,算个性化推送
  4. 短信推送、根据用户浏览习惯推送感兴趣的内容,都算个性化推送
  5. 提供用户信息修改次数可以限制次数,但不能没有这个功能
  6. 接入的广告归类于推广广告,因为不是基于用户喜好的就不是个性化推送
  7. 某一功能需要某一权限,每次用这个功能都弹出授权弹窗,不属于频繁弹窗

5月26日APP开发者个人信息保护培训宣讲会问答汇总

问题:APP运营者可登录厦门市互联网统一备案监管平台(网址:http://ga.xm.gov.cn/wa/login)完成备案 。请问这个备案有教程么?

答:APP备案流程:登录厦门市互联网统一备案监管平台(http://ga.xm.gov.cn/wa/login),入口为“APP备案、等级保护备案、互联网服务商基础数据备案”,可自行下载《系统操作手册》。

问题:有没有整改的时间期限?

答:一般为十五日,具体由开具限期整改的监管部门确定。

问题:个人信息判定参考?

答:参照2020年国家标准化管理委员会发布的国标《信息安全技术-个人信息安全规范》(GB/T35273-2020)予以判断。(参见附录1:个人信息判定及个人敏感信息判定)。

问题:《App违法违规收集使用个人信息行为认定方法》《常见类型移动互联网应用程序必要个人信息范围规定》《 工业和信息化部关于开展纵深推进APP侵害用户权益专项整治行动的通知 》的网页地址。

答:http://www.cac.gov.cn/2019-12/27/c_1578986455686625.htm
http://www.cac.gov.cn/2021-03/22/c_1617990997054277.htm
http://www.gov.cn/zhengce/zhengceku/2020-08/02/content_5531975.htm

问题:请问检测工具有推荐的么?相关合规检测的站点可以推荐下吗?如果第三方SDK 权限本身写的不清楚, 有没有工具可以检测?

答:1、目前合规性检测都是收费的,像公安部第三研究所、杭州安全中心等机构可以做这方面的检测;即使有机构愿意提供免费检测服务,指导整改等服务也是要收费的。2、一般情况下可以通过SDK的隐私政策查看获取的相关权限,暂未发现可以单独这方面分析的工具。

问题:用户一进入APP,不同意隐私政策,是否可以直接退出? 还是要满足其基本功能?比如,房产类App,不同意隐私政策要允许其使用app基本功能吗?

答:用户不同意隐私政策,应用可以直接退出的。

问题:用户可以撤销申请权限这个怎么理解,是需要app直接有这个功能还是安卓系统权限可以开关就可以? 取消权限授权的话,一般怎么操作,是跳转到应用管理那边让用户操作关闭授权吗?

答:撤回同意首先需要在隐私政策中说明操作方式途径,然后在应用中设置可以跳转到管理权限开关的功能。

问题:游戏运营单位对于第三方sdk收集有监管责任吗?如果第三方违规收集运营单位可以要求关闭吗?

答:应用为了实现某功能镶嵌了第三方SDK,所有行为都是以应用的身份进行的。APP使用第三方SDK,但未在隐私协议中对SDK获取的权限、采集的信息进行告知、征求用户同意的,按照“谁获取、谁采集、谁负责”的原则,可认定为违法违规获取、采集。

问题:第三方sdk使用到获取手机信息权限这种情况,代码中是否需要对这个权限进行申明,并在隐私政策说明呢?

答:代码中是否注释在于自身开发要求,但是有第三方SDK收集用户信息行为就必须要在隐私政策中明确告示用户并且在授权同意后方可收集。

问题:广告点击下载有一些是第三方的我们不好控制?

答:自身不好整改广告下载的情况,就取消广告,取消不掉就必须要做到规范,明确下载按钮触发区域、内容上不能欺诈误导、需要有明确关闭按钮、不能自动下载。

问题:个人信息权限收集是每个权限都要弹窗单独确认吗?同一类型的或者有相关联性的权限-比如相机和照片两个是否可以合并在一个弹窗进行确认?

答:原则是只要相关权限申请,就必须有同步告知提醒,相关联的权限是可以放在一起告知的。

问题:提供用户信息修改功能可以限制修改次数吗,还是必须让用户无限制修改?

答:可以设置用户修改次数,但不能有修改障碍,让用户无法操作。

问题:APP内有录屏功能,每次用户调用时,系统都会弹出自带的提示,这个算是频繁获取权限吗? 那个频繁弹窗 这个次数是怎么界定?比如大于几次才是频繁?点了这个不再询问就不会频繁弹窗了,这样可以么?

答:前提用户知道是录屏功能,自己主动调用,系统再弹窗不算频繁;应用自动申请的权限用户拒绝后不能有频繁申请的行为。

问题:如果没有接推送功能,也需要推送权限的开关?

答:没有个性化推送功能不需要提供个性化推送开关,隐私政策中也不要有相关描述。

问题:首页商品个性化显示的话,这种情况算个性化推送一下吗?

答:商品个性化显示也属于个性化推送,也需要有相应的开关。

问题:IM聊天消息算是个性化推送吗?

答:消息推送不算。

问题:app接入广告 算是“个性化推荐” 功能范围吗?

答:要看广告是否是针对用户个性化定制的。

问题:个性化推送是指类似某宝或某浏览器,根据用户浏览习惯进行用户画像,推送用户可能感兴趣的内容吗?

答:是的

问题:一般的短信推送营销信息,算个性化推荐吗?

答:营销短信要看是不是根据用户画像进行个性化推荐的,如果营销短信是普遍的每个人收到的都是一样短信就不算。

问题:根据注册时间,对新用户和老用户,推送不同的消息,这种算个性化推送吗?

答:同理,要看是不是根据用户画像进行个性化推荐的,是否针对个人,针对群体就不算。

问题:用户账号注销后又重新注册的可以限制不让其再次注册吗?可以设置注销后不再接受再次注册吗?

答:可以限制再次注册,设置永久注销,但是需要再注销时提示用户注销后果。

问题:敏感权限的划分,哪些权限申请时需要同步告知用户其目的?

答:电话、通讯录、位置、短信、麦克风、相机、存储、日历、通话记录和传感器等涉及到可收集用户个人信息的权限。

问题:”除了姓名身份证号外,敏感信息申请时的告知,可以以手机系统弹窗为准吗,即手机有系统弹窗的就告知目的并弹窗申请权限,其他的信息收集就不提供弹窗了?

答:权限申请必须要做到同步告知具体目的,手机系统弹窗仅仅是让用户授权同意,而不是告知该权限具体目的。(比如应用申请相机权限,目的用于上传照片更换头像等,手机系统只会提示该应用要申请相机权限用于拍照,并不能让用户知道拍的照片具体目的。)身份证号类在用户填写或者上传图片时,也是需要提示收集的具体用途。

相关链接:

开发者自检

原文

排查弹出隐私条款前是否有上报敏感信息

  1. 安装俩app

    1. 使用 VirtualXposed 在手机上安装一下虚拟系统
    2. 再安装 HookLoginDemo
  2. 安装自己的app

  3. 打开VirtualXposed进行操作并记录日志

    1. “添加应用”》选中HookLoginDemo和自己的app

      安卓/App信息保护合规审核自检1

    2. 打开Xposed的“设置”页面,选择“模块管理”,勾选HookLogin,退出到“设置”页面点“重启”

      安卓/App信息保护合规审核自检2

    3. 退出“设置”页面,向上滑动(应用页面)点击 HookLogin 进行启动,启动完毕退到后台。还是这个 Xposed的应用页面点击自己的app进行启动

      安卓/App信息保护合规审核自检3

    4. 查看日志:“设置”》“模块管理”》左上角按钮,日志

      安卓/App信息保护合规审核自检4

      如果保存到文件,则日志路径/storage/emulated/0/Android/data/de.robv.android.xposed.installer/files/xposed_error_xxx.log

      日志中可以查看有哪些第三方调用了imsi、imei、mac、android_id等这些信息(然后看是延迟初始化还是去除)

“京数安”检测网站

友盟平台

每个账号有一次免费检测机会。有接入APM且DAU>50的则有5次免费检测机会。

手机需要root

  1. 环境:python3、frida、一台已root手机,并在手机上运行frida-server
  2. 步骤:
    1. git clone https://github.com/zhengjim/camille.git
    2. cd camille
    3. pip install -r requirements.txt
    4. python camille.py app包名

问题

小米开放平台(安天)报“未经许可发送个人信息”

联系了安天客服,给到了以下内容:

安卓/安天通报在同意隐私政策前有上报行为

解决:升级友盟一系列SDK版本

友盟升级指导:https://developer.umeng.com/docs/128606/detail/193911

下载地址:

更改后:

  1. 在libUmeng基本库中引入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    api 'com.umeng.umsdk:common:9.4.4'// 必选
    api 'com.umeng.umsdk:asms:1.4.1'// 必选
    api 'com.umeng.umsdk:apm:1.5.2' //应用性能监控 SDK
    api "com.umeng.umsdk:share-core:7.1.7"//分享
    api "com.umeng.umsdk:share-board:7.1.7"//分享面板
    api "com.umeng.umsdk:share-qq:7.1.7"//QQ分享
    api "com.umeng.umsdk:share-wx:7.1.7"//微信分享
    api "com.umeng.umsdk:share-sina:7.1.7"//新浪分享
    //api 'com.tencent.tauth:qqopensdk:3.53.0'//腾讯特有的(友盟这个版本只支持离线jar包)
    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0'//微信分享特有的

    //qq官方sdk依赖库
    api files('libs/open_sdk_3.5.8.3_re272d81_lite.jar')
  2. 代码中,要在QQ登录、QQ分享之前添加授权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //授权存储权限后,还要授权 Tencent.setIsPermissionGranted(true);
    PermissionX.init(LoginActivityV1.this)
    .permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)
    .request((allGranted, grantedList, deniedList) -> {
    if (allGranted && mPresenter != null) {
    if (!isPrivacyChecked()) {
    return;
    }
    Tencent.setIsPermissionGranted(true);
    LoginActivityV1.this.qqLogin();
    }
    });