残页的小博客

残页的小博客

马上订阅 残页的小博客 RSS 更新: https://blog.canyie.top/atom.xml

CVE-2024-49721 InputMethodSubtypeArray 反序列化漏洞分析

2025年2月4日 22:00

神马,都 2025 年啦,还有 Parcel Mismatch 漏洞?!?对!你没听错!最经典最被广泛利用的 Parcel Mismatch 漏洞,它又双叒叕来了!怕了吗?!?
去年我和 Cxxsheng 对整个 Parcelable IPC 机制进行了一些研究,并开发了一个扫描器用以扫描相关漏洞。此漏洞就是我们研究过程中发现的漏洞之一。我们于 2024 年 12 月 3 日提交漏洞报告,后被告知与另一份漏洞报告重复。以下记录了我们当时的分析。部分敏感信息已被移除或脱敏以保证安全。

本文包含了一个简单的 PoC。由于大部分用户都已经升级到有 checkKeyIntentParceledCorrectly 额外补丁的版本,参照以前类似漏洞的利用方法直接把本文里的 PoC 代码拿去攻击无法成功,故我们认为大部分用户已经得到保护,披露相关细节是安全的。

我们在此次研究中产出的其他文章(持续更新):

细节

检出 android-12.0.0_r1 分支的源码,查看 InputMethodSubtypeArray.java 这个文件(点击可直接跳转),关注它的序列化和反序列化过程。
反序列化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* Unmarshall an instance of {@link InputMethodSubtypeArray} from a given {@link Parcel}
* object.
*
* @param source A {@link Parcel} object from which {@link InputMethodSubtypeArray} will be
* unmarshalled.
*/
public InputMethodSubtypeArray(final Parcel source) {
mCount = source.readInt();
if (mCount > 0) {
mDecompressedSize = source.readInt();
mCompressedData = source.createByteArray();
}
}

序列化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* Marshall the instance into a given {@link Parcel} object.
*
* <p>This methods may take...

剩余内容已隐藏

查看完整文章以阅读更多