
Dies ist ein Proof of Concept für CVE-2025-38352, eine Sicherheitslücke in der Implementierung der POSIX-CPU-Timer des Linux-Kernels. Das Android Bulletin vom September 2025 erwähnt, dass diese Schwachstelle bei begrenzten, gezielten Angriffen in freier Wildbahn ausgenutzt wurde.
Dieses Repository enthält nur den Proof-of-Concept, der die Schwachstelle auslöst.
Ich habe inzwischen einen vollständigen Exploit für diese Schwachstelle geschrieben. Die Details finden Sie unter dem folgenden Link.
https://github.com/farazsth98/chronomaly

Der PoC hängt stark davon ab, wie CPU-Zeit durch den getpid-Systemaufruf verbraucht wird.
Zu diesem Zweck habe ich dafür gesorgt, dass der PoC so systemunabhängig wie möglich ist – das heißt, er sollte auf Ihrem System funktionieren, selbst wenn der getpid-Systemaufruf drastisch mehr oder weniger Zeit als auf meinem System benötigt.
Dies ist ein PoC für CVE-2025-38352, eine Race-Condition-Schwachstelle in der POSIX-CPU-Timer-Implementierung des Linux-Kernels. Das Android Bulletin vom September 2025 erwähnt, dass diese Schwachstelle in begrenztem, gezieltem Exploit in freier Wildbahn eingesetzt wurde.
Es wurde für LTS 6.12.33 geschrieben und erfordert, dass CONFIG_POSIX_CPU_TIMERS_TASK_WORK in der Kernel-Konfiguration deaktiviert ist. Zusätzlich habe ich die vollständige Preemption aktiviert (CONFIG_PREEMPT=y), da der Android-Kernel dies verwendet.
Wenn die Race-Bedingung erfolgreich ausgenutzt wird, führt dies zu einem Use-After-Free einer struct k_itimer.
Weitere Informationen zur Einrichtung der Testumgebung finden Sie im oben verlinkten Blogbeitrag, insbesondere im Abschnitt 'Testing Environment TL;DR'.
HINWEIS: Für die Funktion dieses PoC sind keine Patches erforderlich (dies wird hier erwähnt, da mein letzter PoC sozusagen einen 500ms mdelay benötigte 😅).
Der PoC hat bei mir immer innerhalb von 100 Wiederholungen ausgelöst (tatsächlich wurden nie mehr als 60 Wiederholungen erreicht). Die Zuverlässigkeit könnte meiner Meinung nach an einigen Stellen verbessert werden, aber daran werde ich später arbeiten.
Die Datei profiler_patch.diff enthält einen Patch, um Profiling-Code auf handle_posix_cpu_timers() anzuwenden. Es ist nützlich, um herauszufinden, wie das Race-Fenster verlängert werden kann, da es die Ausführungszeit der firing-Liste-Iteration hier ausgibt.
Kompilieren Sie mit der bereitgestellten Makefile und führen Sie es einfach mit /poc aus.
Wenn Sie den Profiler ausführen möchten, kompilieren Sie ihn auf die gleiche Weise wie den PoC.
Kontaktieren Sie mich auf Twitter oder wo auch immer, wenn Sie Fragen haben.