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-40271 — CVE-2025-40271 Modifié par MadEploits | Kitploit
Outils/GitHubGitHub/madexploits/cve-2025-40271
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationArticles et RechercheApprentissage et ÉducationExploitation de Binaires
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 Modifié par MadEploits

Voir le dépôt
112il y a 2 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-40271 — proc_readdir_de() rb-tree UAF LPE

Preuve de concept pour une vulnérabilité d'escalade de privilèges locale dans le système de fichiers proc du noyau Linux. Le bogue est un use-after-free dans proc_readdir_de() causé par rb_erase() sans RB_CLEAR_NODE(), laissant des liens d'arbre rouge-noir obsolètes qui peuvent être exploités par une course lors de l'énumération de répertoire.

Auteur : MadExploits

Recherche originale sur la vulnérabilité et PoC C par Aviral Srivastava (N-DAY RESEARCH). Ce dépôt inclut un portage shell (exploit.sh) pour les environnements où la compilation n'est pas pratique.


Aperçu

ChampDétail
CVECVE-2025-40271
Composantfs/proc — proc_readdir_de() / remove_proc_entry()
TypeUse-after-free (liens rb-tree obsolètes)
ImpactEscalade de privilèges locale (LPE)
Architecturex86_64
AffectéNoyaux Linux jusqu'à 6.18-rc5

Cause racine

Lorsqu'une entrée de répertoire proc est supprimée, rb_erase() est appelée sur le nœud rb de l'entrée sans RB_CLEAR_NODE(). Les nœuds libérés peuvent rester accessibles via des liens d'arbre obsolètes. Si getdents64() entre en course avec la suppression d'interface sous /proc/self/net/dev_snmp6/, le noyau peut lire de la mémoire libérée — souvent récupérée par des objets msg_msg pulvérisés — et renvoyer des valeurs d_ino anormales qui divulguent des pointeurs de tas du noyau.


Noyaux affectés et corrigés

Le PoC vérifie la version du noyau en cours et se ferme sur les versions corrigées :

Branche

Contenu du dépôt

FichierDescription
exploit.cPoC C complet — gestion des veth netlink, course pthread, spray msg_msg
exploit.shPortage shell sans compilation — unshare, ip, Python 3 embarqué pour les appels système / course

Les deux implémentations suivent le même flux d'exploitation :

  1. Entrer un espace de noms utilisateur + réseau (obtenir CAP_NET_ADMIN dans le ns réseau)
  2. Créer des paires veth → peupler /proc/self/net/dev_snmp6/
  3. Mettre en course getdents64() contre la suppression rapide de veth + pulvérisation du tas
  4. Détecter l'UAF via des valeurs d_ino qui ressemblent à des pointeurs du noyau
  5. Tenter l'escalade (LPE complète nécessite des offsets KASLR spécifiques au noyau)

Prérequis

Communs

  • Linux x86_64
  • Espaces de noms utilisateur non privilégiés activés :
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # doit être 1
    
  • Utilisateur non root (le PoC se ferme si déjà root)

exploit.c

  • gcc avec pthreads
  • En-têtes Linux (linux/netlink.h, etc.)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip (iproute2)
  • unshare (util-linux avec support de --map-root-user)

Aucun compilateur requis.


Utilisation

Version shell (recommandée pour tests rapides)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

Version C

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

Sortie attendue

Noyau vulnérable — UAF déclenché (succès partiel) :

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

Noyau corrigé :

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

Notes d'exploitation

  • Fuite de tas : Lorsque la course est gagnée, d_ino contient une valeur correspondant au motif de pointeur du noyau x86_64 (0xffff000000000000), provenant généralement de l'en-tête msg_msg m_list chevauchant les données proc_dir_entry libérées.
  • LPE complète : L'écrasement de modprobe_path nécessite le décalage entre l'adresse de tas divulguée et la base du texte du noyau — celui-ci est spécifique à la build (KASLR). Le PoC démontre l'UAF et la fuite ; une chaîne complète nécessite des offsets pour votre image noyau cible.
  • Fiabilité : Le succès dépend du timing de l'ordonnanceur. Le PoC réessaie jusqu'à 30 tentatives de course par défaut.

Atténuation

  • Mettez à jour vers un noyau corrigé (voir tableau ci-dessus).
  • Si les espaces de noms utilisateur ne sont pas nécessaires, désactivez la création non privilégiée :
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • Appliquez les mises à jour de sécurité du fournisseur pour CVE-2025-40271.

Avertissement

Ce projet est fourni à des fins de recherche en sécurité autorisée, d'éducation et de tests défensifs uniquement.

  • Exécutez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite.
  • Une utilisation non autorisée contre des systèmes tiers peut violer les lois applicables.
  • Les auteurs et contributeurs ne sont pas responsables d'une mauvaise utilisation de ce code.

Crédits

RôleNom
Auteur du dépôtMadExploits
Recherche CVE originale & PoC CAviral Srivastava — N-DAY RESEARCH

Licence

Utilisation à vos risques et périls. Aucune garantie n'est fournie.

Télécharger l’outil
Corrigé dans
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+Corrigé