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 接口,需要实现 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、性能优化、大厂面经,真诚推荐你关注我。


最新文章


开源新项目

  • 云同步编译工具(SyncKit),本地写代码,远程编译,欢迎前去查看 SyncKit
  • KtKit 小巧而实用,用 Kotlin 语言编写的工具库,欢迎前去查看 KtKit
  • 最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看 AndroidX-Jetpack-Practice
  • LeetCode / 剑指 offer,包含多种解题思路、时间复杂度、空间复杂度分析,在线阅读
相关推荐
Data analyse45633 分钟前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai1 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记2 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁2 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu2 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!2 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格2 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人2 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid2 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet
IT_陈寒3 小时前
Python多进程共享变量这个坑,差点让我加班到凌晨
前端·人工智能·后端