Sechunter 移动应用隐私合规检测详解
摘要:本文简要介绍 Sechunter 移动应用隐私合规检测的方法步骤,以及目标检测技术在其中的应用。
本文分享自华为云社区《移动应用隐私合规检测简介及目标检测技术的应用》,作者:wolfrevo 。
概述:
受益于移动设备的广泛普及,移动应用近年来得到了蓬勃发展。基于移动设备集成的各类传感器,众多功能丰富的移动应用被开发出来,聚集了大量高价值用户隐私数据,包括用户身份信息、地理位置信息、账户资料信息等。用户在享受移动应用带来便利的同时,其隐私安全也受到了重大威胁。在这样的背景下,移动应用隐私合规检测应运而生。本文简要介绍 Sechunter 移动应用隐私合规检测的方法步骤,以及目标检测技术在其中的应用。
1、移动应用隐私合规检测背景简介
移动应用的隐私合规检测,从技术形态上可以分为静态检测方案与动态检测方案。以下分别作简要介绍。
1.1 静态检测
静态检测方案通过对移动应用的安装包进行反编译,进而通过静态数据流、控制流分析等技术,检测移动应用中可能存在的隐私泄露问题。在该领域中,常用到以下工具:
Apktool [1]: 反编译安卓 Apk,可以反编译资源,并在进行修改之后重新打包 Apk
dex2jar[2]: 将 Apk 反编译成 Java 源码(classes.dex 转化成 jar 文件)
Soot [3]:Soot 最初是 Java 优化框架,发展至今已广泛应用于分析优化和可视化 Java 和 Android 应用程序。
Flowdroid [4]: 基于 IFDS 算法实现的针对 Android 的静态污点分析框架
利用上述工具,开发者可以制定相应的规范检测项,从而检测到应用中存在的隐私泄露隐患。
1.2 动态检测
动态检测方案通过运行待检测应用于真实手机或者模拟器沙箱,通过监控移动应用对系统内敏感资源的访问,结合移动应用的隐私政策声明分析,检测移动应用是否包含隐私违规行为。应用运行则可以由人工进行或者 UI 自动化。
1.2.1 敏感行为监测
运行时敏感行监测实时监控应用对用户隐私敏感数据的访问。在实现上分为两种:一种是直接在源码中添加监控代码。如在 AOSP 代码中的 getLastLocation 中直接添加代码,记录 API 访问行为。另一种则是通过 hook 方案,不直接修改源码,而是在系统运行 APP 时添加逻辑钩子,在 APP 调用特定敏感 API 时,先跳转至 hook 函数,最后再返回调用原敏感 API。其中,hook 函数负责记录应用的 API 访问行为。
1.2.2 UI 自动化
移动应用自动化即通过程序控制移动应用 UI 交互。该领域典型的工具有:monkey [5],进行 UI 界面随机点击以及系统级事件。第三方 UI 自动化工具:uiautomator2[6]和 AndroidViewClient [7],基于系统工具 uiautomator 实现,能够实现基本的自动化 UI 测试功能编程。
2、目标检测技术在隐私合规检测领域的应用
深度学习中的目标检测,主要用于在视图中检测出物体的类别和位置,如下图所示。目前业界主要有 YOLO [7],SSD [8]和 RCNN [9]三类深度学习算法。
以 Faster RCNN 为例,该算法是 RCNN 算法的演进。在结构上,Faster RCNN 将特征抽取(feature extraction),proposal 提取,bounding box regression(rect refine),classification 都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。Faster RCNN 主要分为 4 个主要内容:
1. Convlayers。作为一种 CNN 网络目标检测方法,Faster RCNN 首先使用一组基础的 conv+relu+pooling 层提取 image 的 feature maps。该 feature maps 被共享用于后续 RPN 层和全连接层。
2. RegionProposal Networks。RPN 网络用于生成 region proposals。该层通过 softmax 判断 anchors 属于 positive 或者 negative,再利用 bounding box regression 修正 anchors 获得精确的 proposals。
3. Roi Pooling。该层收集输入的 feature maps 和 proposals,综合这些信息后提取 proposal feature maps,送入后续全连接层判定目标类别。
4. Classification。利用 proposal feature maps 计算 proposal 的类别,同时再次 bounding box regression 获得检测框最终的精确位置。
2.1 应用点
在 UI 自动化中,常常存在基于 uiautomator 的工具无法识别的 UI 布局。主要有两种原因导致这种情况:1、UI 内容由整张图片渲染而成;2、UI 控件原因,某些用户编写的 UI 控件没有支持无障碍服务,导致 uiautomator 无法获取 UI 布局。此时,使用 UI 图片目标识别,可以判断可点击的有效区域。
如上图所示,在 Sechunter 的 UI 自动化中,我们需要获取应用的隐私声明文件链接,以及相应的“同意”、“不同意”的位置。在 uiautomator 无法获得 UI 布局的情况下,可以进行目标识别,通过图像获得可点击位置,从而推进 UI 自动化测试的继续执行。
2.2 目标检测技术的应用
在模型训练中,主要困难在于数据集收集。Sechunter 的解决方案是,先通过传统的图片处理方案获取初步的数据集,这里我们使用了图片处理领域的显著区域识别。这个过程的关键是要有一个验证模块,对隐私声明链接而言,即验证该区域点击跳转后内容的确是隐私声明。我们使用了 LDA 主题模型来判断文本内容是否是隐私政策。通过验证的样本都收纳到数据集中,然后用这些标注数据进行第一版的目标识别模型训练。
训练出来的模型只是利用传统图像处理能够识别成功的图片进行学习。对于不成功的图片,我们进一步使用 OCR。OCR 能够识别出图像中的文字内容及其位置。结合第一阶段的目标识别模型进行结果融合,可以得到更为精确的可点击区域结果,并且这个时候的融合方案已经初步可以使用了。随着数据集的积累,目标检测模型的检测结果也变得更精确。最终能够只使用目标识别方案。
3、小结
移动应用隐私合规检测对保护个人信息安全有着重要作用。但目前市场上的工具自动化检测能力普遍都还比较有限。Sechunter 在自动化隐私合规检测领域做了一些积极探索,进行了众多跨领域技术调研,本文介绍的目标识别技术能够帮助自动化工具更快更准地识别 UI 可点击区域。
文末福利:华为云漏洞扫描服务 VSS 基础版限时免费体验>>>
引用:
【1】 Apktool:https://ibotpeaches.github.io/Apktool/
【2】 Dex2jar:https://github.com/pxb1988/dex2jar
【3】 Soot:http://soot-oss.github.io/soot/
【4】 Flowdroid: https://blogs.uni-paderborn.de/sse/tools/flowdroid/
【5】 Monkey:https://developer.android.com/studio/test/monkey?hl=zh-cn
【6】 uiautomator2:https://github.com/openatx/uiautomator2
【7】 AndroidViewClient:https://github.com/dtmilano/AndroidViewClient
【8】 YOLO3:https://github.com/ultralytics/yolov3
【9】 SSD:https://github.com/amdegroot/ssd.pytorch
【10】 FasterR-CNN:https://arxiv.org/abs/1506.01497
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/88b1249dfbb6371b3b0c8223f】。文章转载请联系作者。
评论