CamsShaft/SELinux-Permissive-Only-CVE-2025-21479
GitHub: CamsShaft/SELinux-Permissive-Only-CVE-2025-21479
针对 CVE-2025-21479(Adreno KGSL 漏洞)的 SELinux permissive 利用工具,无需 adb 即可在 Termux 中从普通用户域稳定触发,适用于三星 Snapdragon 等设备的安全研究。
Stars: 0 | Forks: 1
# Cheese 的 SELinux Permissive 版本(又名 CVE-2025-21479)
## 这是 Cheese 漏洞(又名 CVE-2025-21479)的 SELinux permissive 版本,目前仅限于此。该漏洞影响了诸多设备的 adreno kgsl,包括 Samsung snapdragon 设备。
### 部分代码回收自以下仓库。我想感谢 zhuowei 最初启动了概念验证(PoC),并感谢 sarabpal-dev 维护了一个完善且活跃的仓库。
[https://github.com/zhuowei/cheese](url)
[https://github.com/sarabpal-dev/cheese-cake](url)
### 我决定将此作为一个小挑战来接手,因为我以前从未接触过这么复杂的事情,所以这是一次很好的学习经历——尽管它还未彻底完成。我最初想做的是看看是否可以在 termux 环境中,直接从一个完全不受信任的域完成整条利用链。到目前为止,我已经在不使用 adb 的情况下实现了 SELinux permissive,将代码缩减到了原始大小的四分之一左右,运行非常稳定,从头到尾通常只需不到一分钟。测试环境是我的 Samsung SM-S901W S22 Snapdragon(bootloader 已锁定)。我只是还没有深入研究获取 root primitive 的方法,我不确定在没有 adb 的情况下是否可行,但我仍会尝试。我希望这能启发大家去尝试那些通常被认为不可能的事情,也许有人会有可行的想法。欢迎提出 issue,我乐于接受任何有帮助的贡献。
# **教程**
这个 exploit 非常简单,为了让它能在你的设备上运行,你几乎不需要修改太多代码。你需要做的就是:
- git clone 该仓库并 cd 进入该目录
- 从你的*确切*固件中提取 boot.img
- 使用 unpack_bootimg(termux 中已内置)从中提取出你的 kernel
- 编译 extract-kallsyms.c 二进制文件并在你的 kernel 上运行它
- 拿到你的 kallsyms.txt,并将其直接放置在你将要执行 exploit 的路径下
- 使用 `cc -o gpu_sam gpu_sam.c -ldl` 进行编译
- 它在运行时会动态遍历你的 kallsyms.txt 以查找所有必要的偏移量(offset)
- 根据你的设备,你唯一需要更改的是 kernel 基址扫描的以下值:`const uint64_t candidates[] = { 0xC0000000, 0xE0000000 };` 和 `for (uint64_t addr = 0xa8000000; addr < 0xa8500000; addr += 0x8000) {`
- 如果一切顺利,你应该能从一个普通的 termux shell 中获得稳定的 SELinux permissive 状态
### 注意事项
**SMMU fault 或 kernel panic 的风险始终存在,但这在我的手机(kernel 版本 5.10.168)上运行得非常好,极少发生崩溃。你可能需要多运行几次,甚至需要重启以重置 GPU 状态。我尽可能让这个工具变得易于使用。下面的视频只是一个快速演示,我已经是 permissive 状态了。尽情享受吧**
https://github.com/user-attachments/assets/63d0dfa7-1390-41ce-96da-9c34d8a220ec
标签:Adreno GPU, Android, DSL, SELinux, Web报告查看器, 内核漏洞, 安全渗透, 客户端加密, 提权, 目录枚举, 移动安全