隐私合规代码排查思路

简介: 隐私合规代码排查思路

隐私合规整治不仅仅是排查一次就完,而是要做一个完整的体系来规范后面的编码,避免隐私代码调用又出现而触发合规问题。


一个体系的完善,总体流程为:


  • 发现问题
  • 更改问题
  • 规范问题

1、如何检查 “同意用户隐私” 之前的隐私代码调用?


通过 as 去手动 Find in Fies ?那你怎么知道这个代码是在什么时机调用的呢?所以,静态检查隐私代码调用是不合适的。 有没有一种能在运行的时候知道是哪些类调用了隐私 API 呢?有,我们的基础团队写了一篇《Android APP运行时行为监控技术方案》的调研,采用 Frida 来 hook java 的代码,但 Frida 用起来真的太麻烦了,要搭建各种环境,搭建过程可以参考《APP逆向神器之Frida【Android初级篇】》,就不能来点直接 hook 的吗?有,《epic》:


Epic 是一个在虚拟机层面、以 Java Method 为粒度的 运行时 AOP Hook 框架。简单来说,Epic 就是 ART 上的 Dexposed(支持 Android 5.0 ~ 11)。它可以拦截本进程内部几乎任意的 Java 方法调用,可用于实现 AOP 编程、运行时插桩、性能分析、安全审计等。

使用起来也非常简单: 提前设置需要 hook 哪个 java 方,比如,我要 hook TelephonyManager 的 getDeviceId 方法:


Class clazz=null;
try {
    clazz = Class.forName("android.telephony.TelephonyManager");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
DexposedBridge.findAndHookMethod(clazz, "getDeviceId", new XC_MethodHook() {
    @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
        super.beforeHookedMethod(param);
        Log.i(TAG, "beforeHookedMethod: this:" + param.thisObject, new RuntimeException("stack"));
    }
    @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
        super.afterHookedMethod(param);
        Log.i("Case3", "afterHookedMethod getDeviceId");
    }
});
复制代码


在代码中如果有地方调用 TelephonyManager.getDeviceId 的,都会被 epic 的 beforeHookedMethod 给拦截到,我们只需要在 beforeHookedMethod 打印出堆栈即可看到是谁调用的,打印堆栈也很简单,我们就让他抛出一个异常即可看到,实验结果如图:


image.png

但有那么多隐私的 api 接口调用,如果未来又有新增的 api 变为隐私了,总不能每个都去写一遍 findAndHookMethod 吧,没问题,将隐私 Api 配置化即可。


在主工程的 assets 目录下放置一份 privacy.json 的配置文件,格式如下:


image.png

在初始化中我们去读取该配置转成 json 文件解析出 className 和 method 进行 hook,示例如下:


image.png

2、如何全局检查隐私调用的代码?


1、解压 apk 取出所有 dex,将 dex 反汇编成 smail 文件,根据规则扫描 smail 文件中的方法是否有调用隐私相关的 API,代表作有网易云的 《Android 隐私合规静态检查

2、自定义 gradle transfrom 处理 class 文件和 jar 文件,然后通过 ASM 的 ClassVisitor 获取当前类下所有的方法,并检查该方法是否是有调用隐私相关的 API,visitMethod 可以查看《Mamba


3、基于 lint 去做一套隐私合规检查,《 Lint-隐私检测利器 》中的作者基于 ClassScanner 去做了一套 lint 检查,该方案的好处是可以配合 CI 构建去规范检查


3、如何更改隐私调用的代码?


手动改?很麻烦,模块太多,这个地方可以采用 ASM 方案,将调用隐私的代码全部收拢为自己写的类,可以看阿宝哥的thread_hook_plugin 这个项目:


image.png

替换方法的方案有很多,如 booster 的 booster-transform-thread


4、如何规范隐私调用


这个地方就需要大力发展我们的 lint 检查工具了,将隐私 api 这块能力再丰富一下,但我看现有的很多 lint 工具还是有弊端,每一项规范都需要去写 UastScanner 类,其实很多检查项他们都是相同的代码,只是检查的方法和类不同而已,这块完全可以做成 lint 配置化,读取配置文件来实现,圆圆大佬有出一款基于配置检查的 AndroidLint 工具,我们可以只需要将隐私 api 配置到 custom_lint_config.json 文件中即可


参考文档:


目录
相关文章
|
2月前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
113 1
|
5月前
|
存储 安全 网络安全
智能家居安全漏洞:风险与防护
【8月更文挑战第13天】 随着智能家居设备的普及,它们在提升我们生活便利性的同时,也带来了不容忽视的安全隐患。本文将探讨智能家居系统中常见的安全漏洞,分析其背后的原因,并提出有效的防护措施。通过本文,读者将了解如何保护自己的数字生活不受侵犯,同时激发对技术安全性的深入思考。
78 1
|
6月前
|
SQL 监控 安全
网络安全中的安全漏洞管理与修复:技术深度剖析
【7月更文挑战第8天】安全漏洞的管理与修复是网络安全工作的重要组成部分。通过定期的安全审计、更新与补丁管理、漏洞扫描与评估、及时修复及持续监控与响应等措施,可以有效提升网络系统的安全性。然而,网络安全是一项长期而艰巨的任务,需要不断关注最新的安全动态和技术发展,持续优化安全策略和管理流程,以应对日益复杂的网络安全挑战。
|
5月前
|
存储 监控 安全
网络安全漏洞与防护策略
【8月更文挑战第16天】在数字化时代,网络安全问题日益突出。本文将探讨网络安全漏洞的类型、成因和影响,以及如何通过加密技术和提升安全意识来防范这些漏洞。我们将分析不同类型的网络攻击,如恶意软件、钓鱼攻击和DDoS攻击,并讨论如何利用加密技术保护数据传输和存储的安全。此外,我们还将强调培养良好的网络安全习惯和提高员工安全意识的重要性。最后,我们将提出一些实用的网络安全策略,以帮助企业和个人更好地保护自己免受网络威胁。
67 2
|
6月前
|
SQL 云安全 安全
当前网络安全问题日益凸显,有哪些常见的网站攻击及对应的防御策略
随着互联网技术的飞速发展,我们的生活越来越离不开网络。然而,网络的普及也伴随着网络安全问题的日益凸显。网站攻击事件频发,不仅威胁到个人隐私,还可能导致企业经济损失和社会稳定问题。因此,了解常见的网站攻击方式及相应的防御策略,对于维护网络安全具有重要意义。
|
5月前
|
存储 安全 网络安全
网络安全与信息安全:保护数据的关键策略
【8月更文挑战第31天】在数字时代,网络安全和信息安全成为维护个人隐私和企业资产的前线。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供实用的代码示例来加强理解。我们将从基础概念出发,逐步引导读者了解如何识别和防范网络威胁,同时强调培养良好的安全习惯的必要性。通过本文,你将获得保护数据不受威胁的实用知识和技能。
|
5月前
|
存储 监控 安全
智能家居安全漏洞分析与防护策略
随着物联网技术的快速发展,智能家居系统已成为现代生活的一个趋势。然而,随之而来的安全问题也日益突出。本文将深入探讨智能家居系统中存在的安全漏洞,并针对性地提出一系列有效的防护措施。通过实际案例分析,旨在提升用户的安全防护意识,确保智能家居环境的安全性和可靠性。
68 0
|
5月前
|
SQL 人工智能 安全
网络安全漏洞与防御策略
在数字化时代,网络安全成为维护信息安全的关键防线。本文将探讨网络安全中常见的漏洞类型、加密技术的应用以及提升安全意识的重要性。通过分析具体案例,我们将了解如何识别和防御网络威胁,并强调个人与企业在构建网络安全体系中的作用。
|
7月前
|
SQL 安全 算法
网络安全漏洞与防御策略:保护信息安全的前沿技术
【6月更文挑战第26天】在数字化时代,网络安全成为维护个人隐私和组织资产的关键防线。本文深入探讨了网络安全中常见的漏洞类型、加密技术的进展以及提升安全意识的重要性。通过分析最新的防御机制和安全实践,旨在为读者提供一套全面的网络安全知识框架,强调预防措施的必要性并促进一个更加安全的网络环境。
61 3
|
7月前
|
SQL 安全 网络安全
网络安全与信息安全:从漏洞防护到加密技术的深度解析
本篇文章将深入探讨网络安全与信息安全的核心领域,重点关注网络安全漏洞的识别与防护、先进的加密技术以及提升安全意识的策略。通过详细分析各个方面的知识和实际应用,我们旨在帮助读者更好地理解并应对日益复杂的网络威胁。
823 0