Android 新漏洞,可远程控制用户的手机

Android 用户要注意了,最近各个厂商应该会有一个新版本的补丁发布,用于修复一个高严重性漏洞,该漏洞无需额外的执行权限,可允许黑客在 Android 手机上运行恶意代码,操控你的手机。

谷歌于本周一宣布修复 Android 中的 46 个漏洞,其中包括一个导致远程代码执行的严重错误。

该漏洞编号为 CVE-2024-0031,影响 Android 开源项目 (AOSP) 版本 11、12、12L、13 和 14。

该漏洞已作为 Android 2024-02-01 安全补丁级别的一部分得到解决,总共解决了 15 个安全缺陷。

其余 14 个问题均为导致特权提升或信息泄露的高严重性漏洞。其中九个错误影响框架组件,而其余五个则影响 Android 的系统组件。

谷歌在其公告中解释说:"这些问题中最严重的是系统组件中的一个关键安全漏洞,该漏洞可能导致远程代码执行,而无需额外的执行权限。" 因此 Android 用户如果收到了系统补丁更新,尽快安装更新。

到目前为止谷歌尚未公布是否有攻击者利用这个漏洞进行攻击,但这个漏洞我感觉在过不久会被国内某些大厂利用。

还记得去年某大厂利用一个 2014 年公开的 ParceledListSlice 漏洞,绕过系统校验,远程操控用户的手机事件吗,我写过好几篇文章去分析,但是文章已经被删除了,应该说对他们有影响的文章,都已经被删除,在网上基本已经找不到。

该 APP 利用了 Android Parcel 序列化和反序列化不匹配漏洞,绕过系统校验,将普通应用权限 提升到系统权限,收集更多用户的信息,甚至可以随意操控用户的手机,做更多他们想做的事,而且一旦安装,就很难删除

什么是序列化和反序列化不匹配?

在 Android 中通过 Parcelable 序列化对象,而实现 Parcelable 接口,需要实现 readFromParcelwriteToParcel 函数。

typescript 复制代码
public void writeToParcel(Parcel dest, int flags) {
    dest.writeLong(txPower);
}
private void readFromParcel(Parcel in) {
    txPower = in.readInt();
}

对变量 txPower 在写入的时候通过 writeLong 方法写入,但是在读取的时候通过 readInt 方法读取。这就是序列化和反序列化不匹配。

某大厂就是利用该漏洞,绕过系统的 checkIntent 检查,如果想绕过系统检查,需要在 Bundle 中精确布置数据。我们以 CVE-2017-13288 漏洞为例子:

  • 普通 AppB 传递一个 Bundle 对象到 system_server 进程,这个 Bundle 对象中包含的一个恶意键值对 {KEY_INTENT:intent}
  • system_server 进程中进行反序列化,将恶意 KEY_INTENT 的内容读入到 mData 中,此时,恶意 KEY_INTENT 不是一个单独的键值对,因此可以逃避系统的 checkIntent 检查
  • system_server 进程中再次将这个 Bundle 序列化,此时通过 writeLong 方法写入到 Bundle 中,因此为占据 8 个字节
  • 最终会传递到 Settings 系统应用(高权限 system 用户),在反序列化过程中,通过 readInt 方法进行读取,发生了 4 个字节的错位,因此把后面恶意 KEY_INTENT 的 4 字节 length (ByteArray 4 字节对齐)当做 mData

至此,键值对反序列化完成,恶意 KEY_INTENT 作为一个新的键值对就堂而皇之的出现了。这样就可以绕过系统的 checkIntent 检查,为所欲为,比如在 KEY_INTENT 中指定 Settings 中的 com.android.settings.password.ChooseLockPassword 为目标 Activity, 则可以在不需要原锁屏密码的情况下重设锁屏密码。

全文到这里就结束了,感谢你的阅读,欢迎在看、点赞、分享给身边的小伙伴,你的点赞是我持续更新的动力。

鸿蒙还处于初期发展阶段,网上对鸿蒙问题的解答太少了,所以建了一个鸿蒙学习交流群,群里有很多大佬,相比于自己去摸索,通过与大家的沟通交流,效率会提高很多。诚邀各位小伙伴一起来打造一个良好的学习氛围沟通群。我在学习过程中也遇到了不少问题,有兴趣的小伙伴,可以看一下这篇文章,列举了我遇到的鸿蒙安装编译常见问题,以及解决方案。

目前群成员已经超过 200 人,不能扫描加入,喜欢或者正在学习鸿蒙的小伙伴,欢迎私信我,我拉你进群。

2024,加油!

2024,一起见证彼此成长!

同时我在 github 上新建了一个 HarmonyPractice 仓库,这个仓库主要用于演示 ArkTS 语法规则、鸿蒙组件的使用,以及鸿蒙实战项目,欢迎点击 HarmonyPractice 仓库右上角 star 以兹鼓励。

HarmonyPractice:https://github.com/hi-dhl/HarmonyPractice


Hi 大家好,我是 DHL,在美团、快手、小米工作过。公众号:ByteCode ,分享有用的原创文章,涉及鸿蒙、Android、Java、Kotlin、性能优化、大厂面经,真诚推荐你关注我。


最新文章


开源新项目

  • 云同步编译工具(SyncKit),本地写代码,远程编译,欢迎前去查看 SyncKit
  • KtKit 小巧而实用,用 Kotlin 语言编写的工具库,欢迎前去查看 KtKit
  • 最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看 AndroidX-Jetpack-Practice
  • LeetCode / 剑指 offer,包含多种解题思路、时间复杂度、空间复杂度分析,在线阅读
相关推荐
风和先行11 分钟前
adb 命令查看设备存储占用情况
android·adb
qq_3901617716 分钟前
防抖函数--应用场景及示例
前端·javascript
John.liu_Test1 小时前
js下载excel示例demo
前端·javascript·excel
AaVictory.1 小时前
Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
android·java·list
Yaml41 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
PleaSure乐事1 小时前
【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
前端·javascript·react.js·前端框架·webstorm·antdesignpro
哟哟耶耶1 小时前
js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
前端·javascript·json
getaxiosluo1 小时前
react jsx基本语法,脚手架,父子传参,refs等详解
前端·vue.js·react.js·前端框架·hook·jsx
理想不理想v1 小时前
vue种ref跟reactive的区别?
前端·javascript·vue.js·webpack·前端框架·node.js·ecmascript
知孤云出岫1 小时前
web 渗透学习指南——初学者防入狱篇
前端·网络安全·渗透·web