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. Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
2. Region Proposal 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】 Faster R-CNN:https://arxiv.org/abs/1506.01497
Sechunter移动应用隐私合规检测详解的更多相关文章
- Android App隐私合规检测辅助工具(Camille)
Camille Android App隐私合规检测辅助工具,项目仓库:https://github.com/zhengjim/camille 简介 现如今APP隐私合规十分重要,各监管部门不断开展AP ...
- 阿里云安骑士-Centos7系统基线合规检测-修复记录
执行命令 sysctl -w net.ipv4.conf.all.send_redirects=0sysctl -w net.ipv4.conf.default.send_redirects=0sys ...
- APP漏洞扫描器之本地拒绝服务检测详解
APP漏洞扫描器之本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全面.本文将讲一下应用漏洞 ...
- Java版人脸检测详解下篇:编码
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- JavaScript数据类型检测详解
//JS该如何检测数据的类型呢? //使用关键字: typeof //输出结果依次为:'number','string','boolean'. console.log(typeof 17); cons ...
- Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 浏览器F12 waterfall性能检测详解详解
Queueing 是排队的意思 Stalled 是阻塞 请求访问该URL的主机是有并发和连接数限制的,必须要等之前的执行才能执行之后的,这段时间的耗时 DNS Lookup 是指域名解析所耗时间 I ...
- GRC: 个人信息保护法, 个人隐私, 企业风险合规治理
声明 个人原创, 转载需注明来源 https://www.cnblogs.com/milton/p/15885344.html 个人信息保护的历史和现状 个人信息保护的立法可追溯至德国黑森州1970年 ...
- Linux机器24项安全合规设置
工作的一些内容,这是中国移动集团当前linux机器安全合规标准,找了点时间将其归类,并查了一些资料,每项配置是什么意思,不仅要知其然,还要知其所以然.好记性不如烂笔头. 1. 检查FTP配置-限制用 ...
- vue批量验证提交表单的数据是否合规
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- QT(1)- QString
QT(1)- QString 1 简介 在Qt中表示字符串的类是QString类,它存储字符串是采用的Unicode码,编码方式是使用UTF-16来进行编码的,也就是一个字符(两个字节),一个中文汉字 ...
- 分享一次公司晋级考试的SQL题目,非常有趣的案例(postgresql 标量子查询 where lie 谓词过滤条件)
同事今天晋级高级工程师考试,发来一道公司出题目让我帮忙进行优化,其中场景二的案例非常有意思. 题目内容如下: 原始SQL: scott=> explain analyze scott-> ...
- win11中无法识别STM32 BOOTLOADER的解决方法
如图,按照PYBoard的官方手册说可以直接右键选择自动更新驱动即可.但是我在WIN11上并没有成功. 主要是原因是,DFU模式下的STM设备驱动程序没有自动安装成功. 解决方法是手动安装一下驱动: ...
- Spring Cloud Seata 系列:Seata-Server (1.7.1)安装与配置(集成 Nacos)
目录 一.简介 术语 事务模式 XA 模式 AT 模式 TCC 模式 Sage 模式 说明 二.Seata Server 存储模式 1.file 模式 ①修改application.xml ②启动Se ...
- Net 高级调试之九:SOSEX 扩展命令介绍
一.介绍 今天是<Net 高级调试>的第九篇文章.这篇文章设计的内容挺多的,比如:扩展的断点支持,如何查找元数据,栈回溯,对象检查,死锁检测等等,内容挺多的.功能特别强大,使用特别方便,但 ...
- 29. 干货系列从零用Rust编写正反向代理,异步回调(async trait)的使用
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- Promise规范与原理解析
摘要 Promise对象用于清晰的处理异步任务的完成,返回最终的结果值,本次分享主要介绍Promise的基本属性以及Promise内部的基础实现,能够帮我们更明确使用场景.更快速定位问题. Promi ...
- Vue3 第三章
Vite目录 public 下面的不会被编译 可以存放静态资源 assets 下面可以存放可编译的静态资源 components 下面用来存放我们的组件 App.vue 是全局组件 main ts 全 ...
- OpenSSL 使用AES对文件加解密
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一.AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先 ...
- 使用 PyTorch FSDP 微调 Llama 2 70B
引言 通过本文,你将了解如何使用 PyTorch FSDP 及相关最佳实践微调 Llama 2 70B.在此过程中,我们主要会用到 Hugging Face Transformers.Accelera ...