Freebuf:https://www.freebuf.com/articles/compliance/275273.html
0 前言
随着监管越来越严格,企业对App安全合规的重视,很多乙方安全公司也都分分推出了自己的检测产品,像百度、钱信、通付盾、爱加密等等。App隐私合规产品大概都需要什么样的功能呢?哪些功能是一个使用人最需要的呢?试用了一些产品做了竞品分析工作,从一个需求方来分享下隐私合规产品都需要哪些硬性的功能。
1 产品功能
其实从产品架构上来讲,各家的实现方式都大同小异,各家产品白皮书上也都放了产品架构图,可以自行查看,下边主要一些功能和问题。
1.1 产品对比
用途:同一产品不同版本进行检测结果对比,可以清晰看出版本间的变化。
功能建议:以产品为一个 整体,产品中的不同包体做对比,比较清晰明了。
1.2 静态分析&动态分析
- 静态分析:其实就是XML/DEX/bin反编译,静态解析一些权限、SDK、函数使用等等,图片文字识别等(比如通过登录的页面得知需要获取手机号)。
- 自动化快速动态分析:把包扔进去进行模拟点击等过程抓包分析,优点不需要人工干预,缺点就是部分功能无法触发从而测试不到。
- 人工干预的动态分析:人工点击,可以人工判断一些问题是否合规,触发点可控。
选择建议:主要根据公司业务,如果公司业务的app都很大,建议选择真机测试。如果是业务app都很小可以选择模拟器的方式。
1.3 个人信息收集
1.3.1 实现方法
- 用户输入内容的页面分析:其实就是比如我app嵌了三个页面,通过对页面内容进行分析,从而得出获取的个人信息。优点:可以抓取到一些个人信息收集情况,有些很深层的填写页面可以抓取到。缺点:误报率高,文本识别不智能、页面可能有不用的情况
- 网络数据包分析:通过将设备打标识的信息与抓取网络数据包的内容作对比,从而判断获取信息情况。
- hook底层方法:hook底层方法可以解决网络监控中无法识别加密数据,但是函数执行并不代表收集上传,所以还是不太准确的。
1.3.2 收集内容明细
- 获取频率
- 触发方式/上传或存储地址
- 静默个人信息获取情况:这块必然是未来检查的重点,部分产品已实现检测功能;
- 是否显示出境情况
- 是否区分第三方及应用自身
选择建议:规范其实对获取频率是有要求的,建议选择有此功能的,此外,有些产品只列出了上传的数据,而忽略了一些本地存储或获取(可能加密上传)的内容,可以仔细检查功能。
1.3.3 信息泄露问题
- 明文存储
- 明文传输
功能建议:这个检测是应该的,是不是还可以做下接口的冗余数据检测???这个也很用必要。
1.4 第三方SDK检测
- SDK名称
- SDK版本:目前没看到能有SDK版本的产品,感觉有版本在合规测试里还是很重要的,同一产品不同版本手机个人信息和权限的情况还是会有差别的。
- SDK描述:对于SDK有个大致的功能描述,如推送、统计等等,可以让合规人员对此SDK有些大致了解。
- SDK收集的数量:SDK收集的数量和SDK识别率挂钩,如何更多更全面的收集第三方SDK入库也十分重要。
- SDK隐私政策:有些产品还把第三方SDK的隐私政策放上去了,感觉这个做法好温馨,可以减少合规人员的重复劳动力。
问题:SDK嵌套问题很多。例如第三方SDK A中用用了第三方SDK B,最后的结果会把A B都列出来,这里需要人工去和开发沟通做删减的办法解决。
1.5 权限检测
权限申请
权限使用
一揽子授权
权限敏感程度
是否区分第三方及应用自身:如果应用自身获取了权限,第三方SDK也偷偷使用这种情况不及时发现并披露,可能会存在很大风险,这个功能很有用。
静默权限调用情况
1.6 隐私政策检测
- 文本分析:基于nlp,对比上述检测出来的个人信息及权限去做比对。
- 对标条款:《APP违法违规收集使用个人信息自评估指南》、《信息安全技术 个人信息安全规范》、164号文……:其实并不是越多越好,这块其实针对中小型企业可用,大厂一般都有很多的专业人员,哪项条款符合哪项不符合还是人来判断更准确。
- 人工检测
- 自定义检测
1.6 报告导出
- word
好看就完事了,要是支持自定义删减导出就更好了。
1.7 基于规范的检测
这里就不说了,就是勾勾选选截个图,没有任何含金量,谁都能根据规范梳理出来。
2 后台及权限管理
2.1 权限划分
- 基于角色划分
- 基于业务划分
很多公司存在不同业务线,合规、法务、业务角色均不同,通过角色和业务划分,可以解决权限划分问题。
2.2 后台其他功能
- App检测统计
- 高频问题统计
- 基于同一产品的统计
这些可以帮助合规人员快速规则汇总问题,方便针对性的培训或检查业务提包流程规范等等。
3 运维部署及接口支持
3.1 运维部署
- 本地部署:本地部署可以把数据留存本地,风险小。但是现在此类产品升级迭代块,升级维护需要远程或者公司人员做。
- 在线使用:数据存在云端,风险大一些。
3.2 接口支持
现在很多公司有自己的测试产品,如果能够提供接口支持,可以更方便的接入现有平台做二次开发,更加贴合公司需求。但目前来看,稍有产品可以支持。