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 接口,需要实现 readFromParcel
和 writeToParcel
函数。
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、性能优化、大厂面经,真诚推荐你关注我。
- 公众号:ByteCode
- 哔哩哔哩: space.bilibili.com/498153238
- 掘金: juejin.im/user/259450...
- 博客: hi-dhl.com
- Github: github.com/hi-dhl
最新文章
- 鸿蒙力作:揭晓 ArkTS,如何重塑语法,打造更健壮和可靠的代码
- 华为跟 Android 说再见,解读鸿蒙应用全部虚拟机化
- 鸿蒙:5 分钟秒懂 ArkTs,不能错过的知识点解析
- 学习鸿蒙,解决这几个关键问题
- 国内个人开发者太难了,APP备案保姆级过程
- 鸿蒙,流氓软件的终结者
- 使用 14 年的 API 被下线了
- Android 14 彻底终结大厂流氓应用
- 适配 Android 14,功能和权限的变更,你的应用受影响了吗
- Android 14 新增权限
- Android 13这些权限废弃,你的应用受影响了吗?
- 国外大厂面试题, 7 个 Android Lifecycle 重要的知识点
- Twitter 上有趣的代码
- 谁动了我的内存,揭秘 OOM 崩溃下降 90% 的秘密
- 反射技巧让你的性能提升 N 倍
- 90%人不懂的泛型局限性,泛型擦除,星投影
- 揭秘反射真的很耗时吗,射 10 万次耗时多久
- 影响性能的 Kotlin 代码(一)
- 揭秘 Kotlin 中的 == 和 ===
开源新项目
- 云同步编译工具(SyncKit),本地写代码,远程编译,欢迎前去查看 SyncKit
- KtKit 小巧而实用,用 Kotlin 语言编写的工具库,欢迎前去查看 KtKit
- 最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看 AndroidX-Jetpack-Practice
- LeetCode / 剑指 offer,包含多种解题思路、时间复杂度、空间复杂度分析,在线阅读