原文链接:https://mp.weixin.qq.com/s/P_EYQxOEupqdU0BJMRqWsw

一、背景

最近,国内网络安全公众号“DarkNavy”昨日发布文章《2022 年度最“不可赦”漏洞》称,有知名互联网厂商持续挖掘新的安卓OEM系统相关漏洞,在其公开发布的 App 中实现对目前市场主流手机系统的漏洞攻击。(疑似PDD)

根据DarkNavy的表述,该互联网厂商使用了多种黑客手段,实现对用户手机的提权、隐私信息收集、应用防卸载、应用长期驻留后台等违法违规行为。
 

比如,该互联网厂商旗下App利用了多个安卓手机厂商 OEM 代码中的反序列化漏洞,实现手机系统提权。完成提权后,该 App 事实上已经完成了反客为主,通过 App 控制了用户的整个手机系统。

在提权控制手机系统之后,该 App 即开启了一系列的违规操作,绕过隐私合规监管,大肆收集用户的隐私信息(包括社交媒体账户资料、位置信息、Wi-Fi 信息、基站信息甚至路由器信息等)。
 

之后,该 App 进一步使用其他黑客技术手段,突破系统沙箱机制、绕开权限系统改写系统关键配置文件为自身保活(注:保持进程持续活跃),修改用户桌面配置隐藏自身或欺骗用户实现防卸载,通过多种操作实现更加隐蔽的长期驻留,甚至还实现了和间谍软件一样的“云控开关”遥控机制,来躲避安全检测。

最终,该互联网厂商通过上述一系列隐蔽的黑客技术手段,在其合法 App 的背后,达到了隐蔽安装提升装机量、非法提升 DAU/MAU、用户无法卸载、攻击竞争对手 App、窃取用户隐私数据、逃避隐私合规监管等各种违规违法目的。
 

二、漏洞分析

2022 年,Google 的 Project Zero 发布了一个在野漏洞利用的分析,警告攻击者已经瞄准各手机厂商的 OEM 代码部分,挖掘出其中的脆弱点和漏洞,组合出了一套完整的提权攻击 Exploit。Project Zero 分析的漏洞利用链包含四个部分,完全由三星代码中的漏洞组成。

第一步,攻击者利用了 漏洞 (CVE-2021-25337),这是一个 system_server 中导出的 semclipboardprovider 所存在的任意文件读写,允许攻击者以 untrusted_app 身份读写 users_system_data_file,也就是一般 system_app 的私有数据文件。
 

第二步,攻击者参考了三星 TTS 漏洞研究成果,利用 TTS 中从自身配置文件加载任意动态链接库的能力,将第一个漏洞转化为了一个 system_app 提权漏洞。

image.png

在获取了 system_app 权限的代码执行能力后,攻击者执行最后两步,向内核进发:

首先,将三星设备中未更新的 Mali GPU 驱动内核信息泄露漏洞 (CVE-2021-25369) ,和三星自己的 kmsg 泄露“特性”组合利用,最终获得内存基址和 addr_limit 地址。

然后,使用 DECON driver 中的 UAF 漏洞 (CVE-2021-25370), 结合堆数据,最终,利用 signalfd 系统调用修改 addr_limit,转化为内核任意地址读写,完成提权。至此,一套完整的提权攻击 Exploit 全部完成(上述攻击所涉及漏洞目前已全部修复)。
 

三星 OEM 漏洞攻击是一个很典型的案例,可以看出,与 AOSP、上游 Kernel 的漏洞挖掘难度相比,手机厂商 OEM 代码部分的漏洞挖掘难度要低很多,且利用通常也相当稳定。于是我们经常可以看到,各种间谍软件的作者会频繁利用手机 OEM 代码漏洞作恶。
 

由于,就有了某知名互联网厂商竟持续挖掘新的安卓 OEM 相关漏洞,在其公开发布的 App 中实现对目前市场主流手机系统的漏洞攻击。
 

该互联网厂商在自家看似无害的 App 里,使用的第一个黑客技术手段,是利用一个近年来看似默默无闻、但实际攻击效果非常好的 Bundle 风水 - Android Parcel 序列化与反序列化不匹配系列漏洞,实现 0day/Nday 攻击,从而绕过系统校验,获取系统级 StartAnyWhere 能力。

image.png

上图即是其漏洞利用链中的核心环节,利用了多个安卓手机厂商 OEM 代码中的反序列化漏洞,完成了第一步黑客攻击:提权。完成了提权,该 App 事实上已经完成了反客为主,通过 App 控制了用户的整个手机系统。
 

众所周知,Android Framework 中一个核心的对象传递机制是 Parcel,希望被通过 Parcel 传递的对象需要定义 readFromParcel 和 writeToParcel 接口函数,并实现 Parcelable 接口。

理论上来讲,匹配序列化和反序列化函数应当是自反等效的,但系统 ROM 的开发者在编程过程中可能会出现不匹配的情况,例如写入的时候使用了 writeLong,读取的时候却使用了 readInt。
 

这类问题在运行过程中一般不会引起注意,也不会导致崩溃或错误,但在攻击者精心布局下,却可最终利用 Settings 和 system_server 进程,将这个微小的错误转化为 StartAnyWhere 提权。
 

Android 近年来累计已修复上百个这类漏洞,并在 Android 13 中对 Parcel 机制做了改革,彻底杜绝了大部分此类攻击面。但对于鸿蒙和绝大部分未升级到 Android 13 的设备和用户来说,他们仍处于危险之中。
 

提权控制手机系统之后,该 App 即开启了一系列的违规操作,绕过隐私合规监管,大肆收集用户的隐私信息(包括社交媒体账户资料、位置信息、Wi-Fi 信息、基站信息甚至路由器信息等):

image.png

之后,该 App 进一步使用的另一个黑客技术手段,是利用手机厂商 OEM 代码中导出的 root-path FileContentProvider, 进行 System App 和敏感系统应用文件读写;进而突破沙箱机制、绕开权限系统改写系统关键配置文件为自身保活,修改用户桌面(Launcher)配置隐藏自身或欺骗用户实现防卸载;

随后,还进一步通过覆盖动态代码文件的方式劫持其他应用注入后门执行代码,进行更加隐蔽的长期驻留;甚至还实现了和间谍软件一样的遥控机制,通过远端“云控开关”控制非法行为的启动与暂停,来躲避检测。

image.png

最终,该互联网厂商通过上述一系列隐蔽的黑客技术手段,在其合法 App 的背后,达到了:

  • 隐蔽安装,提升装机量
  • 伪造提升 DAU/MAU
  • 用户无法卸载
  • 攻击竞争对手 App
  • 窃取用户隐私数据
  • 逃避隐私合规监管

等各种涉嫌违规违法目的。目前,已有大量终端用户在多个社交平台上投诉反馈:该 App 存在莫名安装、泄漏隐私、无法卸载等问题。

 

参考:

[1] https://googleprojectzero.blogspot.com/2022/11/a-very-powerfu...

[2] https://xz.aliyun.com/t/2364


xiangzhihong
5.9k 声望15.3k 粉丝

著有《React Native移动开发实战》1,2,3、《Kotlin入门与实战》《Weex跨平台开发实战》、《Flutter跨平台开发与实战》1,2和《Android应用开发实战》