
Ceci est une preuve de concept pour CVE-2025-38352, une vulnérabilité dans l'implémentation des temporisateurs CPU POSIX du noyau Linux. Le bulletin Android de septembre 2025 mentionne que cette vulnérabilité a été utilisée dans une exploitation limitée et ciblée dans la nature.
Ce dépôt ne contient que la preuve de concept qui déclenche la vulnérabilité.
J'ai depuis écrit un exploit complet pour cette vulnérabilité. Vous trouverez les détails dans le lien ci-dessous.
https://github.com/farazsth98/chronomaly

Le PoC dépend vraiment de la façon dont le temps CPU est consommé par l'appel système getpid.
À cette fin, j'ai veillé à rendre le PoC aussi indépendant du système que possible - c'est-à-dire qu'il devrait fonctionner sur votre système même si l'appel système getpid utilise beaucoup plus ou moins de temps que sur mon système.
Ceci est un PoC pour CVE-2025-38352, une vulnérabilité de condition de concurrence dans l'implémentation des temporisateurs CPU POSIX du noyau Linux. Le bulletin Android de septembre 2025 mentionne que cette vulnérabilité a été utilisée dans des exploitations ciblées limitées dans la nature.
Il a été écrit pour LTS 6.12.33 et nécessite que CONFIG_POSIX_CPU_TIMERS_TASK_WORK soit désactivé dans la configuration du noyau. De plus, j'ai également activé la préemption complète (CONFIG_PREEMPT=y) car c'est ce qu'utilise le noyau Android.
Une fois la course gagnée, cela conduit à une use-after-free d'un struct k_itimer.
Pour plus d'informations sur la configuration de l'environnement de test, veuillez vous référer à l'article de blog lié ci-dessus, en particulier la section « Testing Environment TL;DR ».
NOTE : Aucun patch n'est nécessaire pour que ce PoC fonctionne (je mets cela ici car mon dernier PoC avait besoin d'un mdelay de 500 ms 😅).
Le PoC a toujours déclenché pour moi en moins de 100 tentatives (il n'a en fait jamais dépassé 60 tentatives). La fiabilité peut être améliorée à quelques endroits à mon avis, mais je travaillerai là-dessus plus tard.
Le fichier profiler_patch.diff contient un patch pour appliquer du code de profilage à handle_posix_cpu_timers(). Il est utile pour déterminer comment étendre la fenêtre de course, car il affiche la quantité de temps d'exécution utilisée par l'itération de la liste firing ici.
Compilez avec le Makefile fourni et exécutez-le simplement avec /poc.
Si vous voulez exécuter le profileur, compilez-le de la même manière que le PoC.
Contactez-moi sur Twitter ou ailleurs si vous avez des questions.