Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-39866 — Preuve de concept pour CVE-2025-39866 (UAF et condition de concurrence) | Kitploit
Outils/GitHubGitHub/bytereaper77/cve-2025-39866
Analyse des VulnérabilitésExploitationApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubbytereaper77/cve-2025-39866

CVE-2025-39866

Preuve de concept pour CVE-2025-39866 (UAF et condition de concurrence)

Voir le dépôt
42il y a 11 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-39866 - use-after-free

Auteur : Byte Reaper

Description

Ce POC tente d'exploiter la vulnérabilité CVE-2025-39866, qui est une faille dans les systèmes Linux < 6.12.16 due à l'absence de spinlock pour les threads, provoquant une condition de course. Le premier thread tente d'utiliser la structure wb pendant que le thread 2 libère cette structure, ce qui oblige le premier thread à manipuler un pointeur libéré, entraînant un kernel panic pour le système. Nous pouvons diviser l'idée d'exploitation de la vulnérabilité en étapes suivantes :

root@kitploit:~
step 1 : Create thread 1 "main pid" 
	 - get root dentry 
	- create file txt writeback target 
	- create strcut inode 
	 - Create object wb 
	 - save pointer wb in wb_old
Step 2: 
- Create Thread 2 (kthread) that schedules a work item.
- The work item runs “inode_switch_wbs_work_fn” which updates “inode->i_wb” and schedules the critical free via “wb_put_many”.
step 3 :
	- thread 2 : free wb_olb 
	- thread 1 -> pointer - free object wb (free old)
	-> access free address -> crash kernel (segfault)

Prérequis :

root@kitploit:~
Linux x86_64
kernel linux  < 6.12.16

Compilation :

root@kitploit:~
	1 - He created a Makefile and included these commands to compile and build the kernel module:
	obj-m += exploit.o

	KDIR := /usr/src/linux-headers-6.12.38+kali-amd64
	PWD := $(shell pwd)

	all:
	        make -C $(KDIR) M=$(PWD) modules

	clean:
	        make -C $(KDIR) M=$(PWD) clean

Exécution :

root@kitploit:~
	# make clean 
	# make 
	1 -  You will find a file named "exploit.ko," which is a kernel module. To load it into the kernel space, use the insmod tool :
	# insmod exploit.ko 

Références :

  • NVD : https://nvd.nist.gov/vuln/detail/CVE-2025-39866
  • CVE : https://www.cve.org/CVERecord?id=CVE-2025-39866

Observation :

  • Bientôt, je développerai un exploit qui utilise d'autres méthodes pour manipuler la structure wb, comme réduire le refcount ou supprimer le cache wb de la liste de cache. J'ajouterai également des tentatives d'exécution de Memory Spraying et des tentatives de détection de fuites ou d'élévation de privilèges dans le système. Ceci n'est qu'une preuve de concept de la vulnérabilité.

Résoudre le problème

Le principal problème du bug est l'absence de "spinlock" pour la synchronisation des threads. La solution est la suivante :

Premièrement (allocation Slab/Slub), allouer un slab/slub spécifique pour chaque thread, et aucun thread ne peut contrôler ou manipuler la taille mémoire d'un autre thread.

Deuxièmement (synchronisation), configurer la Workqueue pour éviter les interférences et les conditions de course, où chaque thread termine sa tâche puis passe à un autre thread au lieu de changer de WB en même temps ou d'utiliser la fonction wb_wakeup_delayed.

Troisièmement (HLE/RTM) : l'activation de HLE/RTM dans le noyau dépend de l'architecture du processeur, mais si celui-ci prend en charge ces deux fonctions, pourquoi ne pas les utiliser dans le noyau, par exemple, pour diriger le flux d'un programme ou, lorsqu'une erreur se produit, tenter de revenir à une autre exception au lieu de planter "rollback" via des instructions comme XBEGIN, XABORT, XEN.

Licence :

MIT

Télécharger l’outil