知乎 Android 客户端三方库敏感代码扫描机制 - FindDanger

本文介绍了知乎Android客户端的FindDanger机制,这是一套用于扫描第三方库中敏感代码的工具,旨在保护用户隐私。文章详细阐述了FindDanger的工作原理,包括创建自定义Lint规则的五个步骤,并展示了其在实际操作中的应用和效果。通过FindDanger,团队能有效检测和防止隐私数据泄露,确保应用符合安全标准。
摘要由CSDN通过智能技术生成

背景

知乎非常重视用户隐私数据的保护,安全团队一直在为此提供各种保护机制;另外国内外一些知名的 Android 商店,如 Google Play 等也会针对用户隐私数据进行一系列的上架审核,一旦出问题会被严重警告甚至下架。为全面保护用户的隐私数据,同时避免被商店拒审或下架的风险,Android 移动平台团队建立了一套敏感代码扫描机制,取名为 FindDanger。

FindDanger 简介

在 App 开发过程中,对于自己的代码中涉及用户隐私的部分很容易约束,但对于 App 中引用的第三方库是否会有此类行为就无法知晓了。对于这种情况,FindDanger 机制应运而生,FindDanger 是一套敏感代码扫描机制,主要用于扫描第三方库是否存在获取用户隐私之类的高风险行为。

PS :有兴趣的加入Android工程师交流QQ群:752016839 主要针对Android开发人员提升自己,突破瓶颈,
相信你来学习,会有提升和收获。

机制介绍

整个机制的运行过程如下图所示:

 

image.png

 

由于我们使用 GitLab + Jenkins 进行代码管理和持续集成,所以普通的工程师也可以很快上手,具体的流程如下:
首先,工程师提交检测 jar 包的 merge request 后,会触发 Jenkins 上的扫描任务,扫描结束将报告链接发送给 GitLab 的 merge request 页面,如下图所示:

 

image.png


然后,点击页面中的链接打开报告,如下图所示:

image.png

 

最后,移动平台的工程师对报告进行分析,并给出使用意见。

规则支持

目前 FindDanger 支持下列检测规则,其中危险级别的数值越大越危险:

  • StealAPPListClazz 读取设备已安装的 App 列表 10
  • StealRunningList 读取设备正在运行的 App 列表 10
  • RuntimeCommand 通过 Runtime 接口执行终端命令 10
  • StealAddressList 读取通讯录信息 10
  • StealAccount 读取设备账号信息 9
  • StealBluetoothInfo 读取设备的蓝牙信息 5
  • StealNFCInfo 读取设备的 NFC 信息 5
  • StealSensorInfo 读取设备的传感器信息 5
  • StealTelephonyInfo 读取设备的电话信息 5
  • StealWifiInfo 读取设备的 WIFI 信息 5

FindDanger 原理之自定义 Lint 规则

从生成的报告可以看出,FindDanger 是利用 Android Lint 进行代码扫描的,而这之中最关键的就是如何自定义 Lint 规则以满足我们的需求。
Android Lint 规则会打包到一个 Jar 包中,所以自定义规则主要有五

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值