信息安全
作者:熊俊漉
京东科技移动平台团队原创,转载请获得授权
一、隐私合规检测系统的产生背景
随着科技互联网与社会各领域的深度融合,移动互联网产业正呈现垂直化、专业化和平台化趋势,对社会经济发展的基础性作用日益突显。移动应用(APP)的种类和数量也呈现爆发式增长,并且越来越多地渗透到人们生活、工作的各个方面,正逐渐成为用户个人信息数据的主要入口和核心载体。
近年来,由于侵害用户权益的事件层出不穷,个人信息安全和用户权益保护态势愈加严峻,受到国家和社会公众的高度关注。各大互联网企业在面临国家监管和社会监督的双重压力下,需要进一步推进和完善自身移动应用在个人信息保护方面的工作,但在缺乏有效手段和工具的情况下无法具体开展。
二、行业隐私合规检测常见问题
在上述背景下,针对移动应用APP隐私合规检测问题,企业和个人主要面临以下痛点:
第一,移动应用APP在发布前的产研阶段,由于不了解相关隐私合规的风险点,非常容易在无意识无感知的情况下,设计开发存在隐私合规问题的功能或流程。在应用发布前无法通过有效方式和机制对相关问题进行检测排查;对某些特定场景的隐私侵权行为,也无手段进行有效甄别和准确判断,促使APP应用埋下隐私合规隐患。第二,目前行业内企业检测APP的主要措施是通过阅读源码的方式将有关API标记为敏感,虽然这种方式能够起到一定作用,但由于大多依赖于人工、研发人员或分析师手动对敏感内容进行标记,这就需要大量的人工干预,并且可能存在无法全面覆盖的情况。因此这种方式从效率,成本,风险性考虑显然是不合理的。
第三,在排查过程中,潜在的风险不仅仅存在于研发人员编写的APP程序代码中,也可能来自于多个方面。例如:除源程序之外的第三方SDK引用,多方协同开发的业务应用,基于开源的第三方程序等等。这些外部程序均有可能存在对个人信息过度获取、泄露、滥用等安全问题。另外,由于引用第三方SDK、外部程序的安全审查过程缺乏,安全意识薄弱,这就容易导致最终的APP应用存在未知的风险漏洞。
第四,大部分APP在手机上对于用户隐私的定义主要集中在操作系统预定义的敏感API上,比如设备标识符、电话号码、IMEI、MAC、GPS位置信息、通讯录、短信、浏览器信息等,这些操作系统敏感API主要采取了权限控制的手段进行保护,除此之外依然存在用户隐私和敏感数据被侵犯的场景没有被覆盖。例如,当用户在使用APP期间,部分界面会要求用户输入个人信息,这些信息包括登录凭证、财务信息、医疗信息、行程信息等敏感数据。因此这些在APP使用期间需要用户动态操作并输入的隐私数据也应该采取有效措施进行保护,但是对于这种情况行业内也没有完善的机制进行检测。
三、隐私合规检测系统的设计思路
为解决上述痛点,本文提出并设计了一种APP隐私合规风险检测系统,能够将移动应用个人信息安全问题进行多方位的全面检测,对应用APP中收集个人信息行为是否违法违规进行认定,并形成专业且易理解的检测报告,为移动应用运营者提供专业的合规、安全整改依据。主要构建思路分为以下四部分:京东科技隐私合规检测系统的引擎能力需要同时支持静态扫描和动态扫描两种检测方式,其中静态扫描通过解压和反编译工具获取Android应用程序包中的相关文件内容,从而进一步与隐私合规知识库进行规则匹配,得出静态分析结果。动态扫描则是通过在定制的客户端程序下运行应用APP,并对运行过程中的APP状态进行数据采集和扫描分析,挖掘可能存在的漏洞隐患,同时借助云端控制技术实现相关操作功能。操作平台需要向用户提供待检测应用的上传及扫描入口,对扫描引擎输出的检测结果进行多维度多类别统计分析及管理,并形成专业性的检测报告,为APP运营团队自查自纠提供指引。为支持企业内部各团队及成员以不同角色在不同场景下协同使用,需要建设团队及应用的协同管理机制,不仅利于各团队内部对自身app产品的历史检测情况进行统计分析,也便于信息安全和法律合规部门快速了解各APP应用的风险等级,降低监管难度,为推动隐私整改工作提供有效手段。
四、隐私合规检测系统的架构设计与核心能力
京东科技隐私合规检测系统的能力图谱如下所示,主要包括:APK/SDK静态扫描,APK动态扫描,隐私政策检测,自查合规评估,检测报告,应用协同,系统功能,外部系统服务等。(1)APK/SDK静态扫描:静态扫描对Android应用程序APK包文件进行解压和反编译,获取APP基础信息、权限调用及源码程序等重要数据。基于隐私合规信息库进行规则匹配,分析是否存在隐私合规风险点,主要功能包括:分析APK基础信息,签名及加密数据解析,权限调用信息统计,权限申请及使用分析,权限调用源码定位,SDK使用统计,权限敏感调用匹配,before模式检测,自启动模式检测,静态检测结果对比等。(2)APK动态扫描:动态扫描主要用于对应用程序在运行时状态下的行为进行实时监控及动态检测,分为流量检测和场景检测两个部分。其中APP流量检测是针对APP在运行期间的网络流量内容进行捕获拦截,分析风险点及敏感词,功能包括:网络流量包过滤分析、系统/人工风险项定位标注、消息体数据敏感词定位、境外IP传输检测等。场景检测是针对特定流量及场景进行截图,并对特定权限函数调用栈链路进行捕获分析。(3)隐私政策检测:对APP内的隐私政策文件进行内容扫描,检测是否存在符合监管标准的相关声明信息,主要包括:系统权限使用声明、三方SDK集成声明、个人信息使用声明等。(4)自查合规:在对应用APP检测前,隐私合规检测系统也向APP管理团队提供了自查预检入口,收集整理重点排查的检测项与检测点,方便团队提前发现风险点,先行修改,一方面提升检测排查过程中的整改效率,另一方面也能提高产研侧在隐私合规及信息安全方面的设计与研发意识。主要包括:隐私合规检测项知识库、检测项及检测点管理发布平台、自查任务监察子系统等。(5)检测报告:静态扫描、动态扫描、隐私政策检测结束后,需要将分析数据进行统计归类,标注出调用权限风险等级与具体风险点,并形成直观量化的报表以供APP运营团队自查整改,同时根据检测结果给出专业性整改意见。对于单个APP的多次检测结果也会进行统一管理,形成历史检测记录,针对屡次出现风险标注的功能或模块,进行重点排查,提升整改效率。(6)应用协同:由于企业内部存在多个移动应用产品,每个产品都拥有自己的产研团队,在检测期间往往需要团队内部多人协同参与整改,这就需要建立完善的协同管理机制,以支持不同团队在系统内部对不同APP的检测需求。隐私合规检测系统为每一类APP产品建立独立的检测空间,空间内部设立管理员与成员角色,并赋予各自权限。(7)系统功能:系统基础功能模块,提供基础服务能力,主要包括邮件服务、定时任务、UAS权限系统、bPaaS鉴权服务等。(8)外部系统服务:主要向外部应用构建平台输出应用检测能力,完善构建流程。(1)Web Front-End:系统web前端部分,主要由Chrome(浏览器单页应用)、Webpack(工程构建工具)、Page Module(页面模块)、FE Common(公共服务)组成。(2)BFF:中间层服务,主要包括:middleware(中间件管理)、sub-server(系统子服务)、API封装规则、UMAP网关服务、bPaaS鉴权服务组成。(3)Node Server:应用服务部分,主要由Business(业务能力层)、Data Tier(数据固化层)、Infrastructure(基础层)组成。从系统网络拓扑可以看到,核心节点主要为Frontend、BFF、Node Server、Detect Engine。其中Frontend作为用户使用检测能力的入口,主要负责检测文件上传,检测结果呈现,检测报告生成及检测记录管理等工作;BFF主要负责统一API封装,权限控制管理及外部系统对接等任务。Node server主要负责系统应用层功能的实现。Detect Engine主要负责基础检测能力的实现。(1)APK/SDK文件检测流程:将待检测apk/sdk文件进行上传操作,并选择需要执行的扫描类型,其中静态扫描主要包括基础信息扫描、before模式检测、reboot模式检测、静态结果对比四个部分,检测结束后将对检测结果进行统计分析并呈现检测数据。动态扫描类型包括流量检测、场景检测,在创建动态检测任务后,检测页面将与云端设备进行联接,用户可直接在检测页面上进行操作,客户端将会实时采集检测数据并进行统计分析,分析数据主要包括系统识别风险项、人工标注风险项、场景截图、函数调用栈等。最终将静态和动态扫描结果进行汇总,并生成检测报告。(2)隐私政策检测流程:上传隐私政策文件和SDK声明附件,并选择已完成的APK检测任务,检测过程分为MANIFEST文件分析、SDK数据分析、个人信息分析三个部分,最终将会得到三类检测结果,分别为系统权限使用声明、三方SDK集成声明、个人信息使用声明,并生成检测报告。
(1)对上传至扫描引擎的apk包文件进行解压操作,获取META-INF、res、AndroidManifest.xml、classes.dex、resource.arsc等核心文件/目录。(2)读取AndroidManifest文件,提取该xml文件中的相关数据,包括application、uses-permission、manifest、activity、service、provider等所有参数。根据参数的特性,对权限进行分析判断,将权限的安全等级划分为:high_risk(高敏权限)、medium_risk(中敏权限)、normal(普通权限)、not_for_use_by_third_party(不适用权限)、unknown(自定义权限)五类。(3)二进制文件分析阶段,对resources.arsc二进制文件进行分析处理,包括res、assets目录下的资源文件,lib下的.so文件等。(4)证书分析阶段,查找证书文件或密钥文件并返回,包括cer、pem、crt、pub、key、pfx、p12等证书文件,以及jks、bks等密钥库文件。获取证书文件信息并对其分析,包括debug签名、SHA1哈希不安全签名、正常签名等。(5)通过jadx工具将APK反编译为JAVA代码,dex反编译为smali代码,并在反编译后的源码和调用API情景下分别进行代码分析。(6)跟踪器检测。通过baksmali工具从所有DEX文件中获取Java类列表,根据得到的Java类列表检测嵌入在其中的跟踪器,并返回跟踪器列表。(7)通过匹配列表和源码分析结果,在基于遍历规则的情况下,执行静态分析规则匹配任务,产生最终的匹配结果。其中用于匹配的规则类型分为正则表达式规则和字符串规则。(8)最后将规则匹配后的结果进行统计分析,整合分析数据并入库。(1)采用Xposed中zygote加载器(android孵化器)在应用的执行进程中注入jar包程序,动态劫持APP运行状态,获取被测应用调用函数,并通过设置中间代理获取网络流量数据。
(2)安装定制化客户端检测应用程序,对运行中的APP进行截图操作,并负责接收加载器所劫持到的APP动态扫描数据,包括被检测应用程序方法调用,敏感api调用,函数调用栈等,并对数据统计分析,将分析后的结果传输至扫描引擎。(3)自动化动态检测流程:配置手机hook环境,并通过文件传输或网络下载方式,将待检测apk包文件安装至移动终端检测设备中,并通过指令参数启动运行。根据参数的不同执行不同自动化场景模拟操作,将不同模拟场景的检测数据发送至扫描引擎。(4)将移动终端检测设备接入云控平台进行统一资源管理,扫描引擎可直接与云控平台进行通信,用户可通过检测系统提供的前端界面完成手机设备资源调用和操作。(1)Web前端采用Vue技术栈搭建,基于vue-cli构建前端基础骨架,配置开发、测试、生产等相关调试环境。依据产品形态及业务需求拆解功能模块、路由配置及基础组件。针对不同服务环境进行接口配置,并从功能维度对axios接口进行模块化、规范化调用。使用vuex管理应用级状态数据,并对一些常用的Utils工具包进行封装调优。(2)Node应用服务器主要负责系统用户、权限、数据层面的计算、管理及存储工作。采用koa搭建基础服务框架,应用http协议与Web前端和扫描引擎进行网络通信,通过利用Nginx+mysql组合完成请求转发及数据操作。另外也接入JSF、JMQ、UAS、OSS等基础服务作为能力的补充。(3)BFF中间层服务同样采用node+koa技术栈搭建,主要负责提供统一标准化对外API接口,并集中管理系统中使用到的第三方SDK及中间件服务。本文分析了隐私合规检测系统的产生背景和当前行业内移动应用隐私合规检测对于企业和个人所面临的问题,并提出了京东科技隐私合规检测系统建设的基本思路和总体架构。同时,介绍了系统核心检测流程的操作过程以及部分核心模块的实现原理,详细阐述了系统为APP运营团队及法务合规部门在推动移动应用整改方面带来的意义与价值,隐私合规研发团队后续也将持续推动系统向前发展,为用户的隐私安全带来切实保障。