farazsth98/poc-CVE-2025-38352

GitHub: farazsth98/poc-CVE-2025-38352

Linux 内核 POSIX CPU 定时器竞态条件漏洞 CVE-2025-38352 的概念验证代码,可稳定触发 struct k_itimer 的 use-after-free。

Stars: 94 | Forks: 9

# 漏洞利用详情 该仓库仅包含触发漏洞的概念验证代码。 我后来为此漏洞编写了完整的利用程序。您可以在下方链接中找到详细信息。 https://github.com/farazsth98/chronomaly # 分析博客文章 - 第一部分 - https://faith2dxy.xyz/2025-12-22/cve_2025_38352_analysis/ - 第二部分 - https://faith2dxy.xyz/2025-12-24/cve_2025_38352_analysis_part_2/ # 演示 ![demo](https://raw.githubusercontent.com/farazsth98/poc-CVE-2025-38352/main/demo.gif) # PoC 说明 该 PoC 在很大程度上取决于 `getpid` 系统调用消耗 CPU 时间的方式。 为此,我确保让 PoC 尽可能不依赖于特定系统——也就是说,即使您的系统上 `getpid` 系统调用消耗的时间比我的系统多得多或少得多,它也应该能正常工作。 # 描述 这是 CVE-2025-38352 的 PoC,这是 Linux 内核 POSIX CPU 定时器实现中的一个竞态条件漏洞。2025 年 9 月的 Android 公告提到,该漏洞已在现实世界中被用于有限的、针对性利用。 它是为 LTS 6.12.33 编写的,并且需要在内核配置中关闭 `CONFIG_POSIX_CPU_TIMERS_TASK_WORK`。此外,我还开启了全抢占(`CONFIG_PREEMPT=y`),因为 Android 内核使用的就是这种配置。 一旦竞态成功,就会导致 `struct k_itimer` 发生 use-after-free。 有关设置测试环境的更多信息,请参阅上面链接的博客文章,特别是“Testing Environment TL;DR”部分。 注意:此 PoC 无需任何补丁即可工作(写在这里是因为我上一个 PoC 好像确实需要一个 500ms 的 `mdelay` 😅)。 # 可靠性 该 PoC 在我这里总是在 100 次重试内触发(实际上从未超过 60 次重试)。在我看来,可靠性可以在几个方面进行改进,但我稍后会处理。 # Profiler 补丁 `profiler_patch.diff` 文件包含一个补丁,用于向 `handle_posix_cpu_timers()` 添加一些性能分析代码。它对于确定如何扩展竞态窗口非常有用,因为它会打印出[此处](https://elixir.bootlin.com/linux/v6.12.33/source/kernel/time/posix-cpu-timers.c#L1365-L1389) `firing` 列表迭代所使用的执行时间量。 # 运行 PoC 使用提供的 `Makefile` 进行编译,然后直接使用 `/poc` 运行即可。 如果您想运行 profiler,请使用与 PoC 相同的方式进行编译。 # 有问题? 如果您有任何疑问,请在 Twitter 或其他地方联系我。
标签:0day挖掘, Android安全, CVE-2025-38352, Exploit, Hpfeeds, Linux内核漏洞, LTS内核, POC验证代码, POSIX计时器, UAF, Web报告查看器, 内核安全, 在野利用, 安全渗透, 客户端加密, 客户端加密, 恶意攻击, 本地提权, 漏洞复现, 竞态条件, 系统调用, 释放后重用, 零日漏洞