Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-2026-68398 — CVE-2026-68398 Élévation de privilèges locale use-after-free dans PPPoL2TP d'Ubuntu | Kitploit
Outils/GitHubGitHub/aramosf/cve-2026-68398
Escalade de PrivilègesExploitationExploitation de Binaires
GitHubaramosf/cve-2026-68398

CVE-2026-68398

CVE-2026-68398 Élévation de privilèges locale use-after-free dans PPPoL2TP d'Ubuntu

Voir le dépôt
1046il y a 1 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-2026-68398 : use-after-free sur PPPoL2TP d'Ubuntu menant à un root local

Exploit en conditions réelles de CVE-2026-68398

Ce dépôt contient un exploit d'élévation de privilèges locale spécifique à une compilation donnée pour la CVE-2026-68398, une course de type use-after-free entre le traitement de réception PPPoL2TP et la destruction d'un canal PPP non attaché. Il a été validé dans QEMU contre le paquet officiel Ubuntu 22.04 linux-image-5.15.0-187-generic (5.15.0-187.197).

Le test final démarre avec un utilisateur dédié UID 1001, sans groupes supplémentaires, sans capacités et sans accès sudo, puis obtient l'UID 0 de l'espace de noms initial. KASLR, SMEP, SMAP et AppArmor restent activés. L'invité n'est pas démarré avec nokaslr, nopti, nosmep ou nosmap.

Avertissement

Ce code corrompt intentionnellement l'état du tas du noyau et est lié à une compilation exacte d'un noyau Ubuntu. Une course qui échoue peut provoquer un panique ou corrompre le système. Exécutez-le uniquement dans une VM isolée et jetable qui vous appartient.

Vulnérabilité

pppol2tp_recv() s'exécute dans le chemin de réception UDP L2TP sous une section critique côté lecture RCU et appelle finalement ppp_input(&po->chan). La socket PPPoX et son ppp_channel intégré sont sûrs vis-à-vis de RCU, mais la struct channel interne utilisée par ppp_input() est une allocation distincte.

Pour un canal lié avec PPPIOCGCHAN mais ni attaché à une unité PPP ni ponté, le chemin de fermeture libérait immédiatement cet objet interne :

RX :    l2tp_udp_encap_recv -> pppol2tp_recv -> ppp_input(channel)
CLOSE : pppol2tp_release -> pppox_unbind_sock
        -> ppp_unregister_channel -> ppp_release_channel -> kfree(channel)

Le chemin de réception peut donc opérer sur la file skb et la file d'attente de veille du canal déjà libéré. Le correctif ajoute un callback RCU à struct channel et reporte le vidage de la file et la libération jusqu'à l'expiration d'une période de grâce RCU.

La vulnérabilité a été découverte et corrigée en amont par Norbert Szetei de Doyensec. Le correctif principal est ec4215683e47424c9c4762fd3c60f552a3119142.

Versions affectées et corrigées

L'enregistrement CNA Linux identifie la lignée vulnérable comme commençant avec Linux 4.15. Les noyaux des fournisseurs peuvent porter le correctif sous un autre numéro de version ; le code source exact ou le journal des modifications du paquet prévaut donc sur ce tableau.

Ligne du noyauPremière version corrigéeCorrectif
6.6.y6.6.1484bb84e964ff0
6.12.y6.12.1013ab32218d718
6.18.y6.18.42c9574b8a8ede
7.1.y7.1.606213c85d8c0
Principal7.2-rc4ec4215683e47

Les lignes de fournisseurs plus anciennes encore prises en charge nécessitent un backport. Au 2026-08-12, le traqueur CVE d'Ubuntu marque le paquet linux de Jammy comme needs-triage ; aucun paquet Ubuntu Jammy corrigé n'a été identifié. Le code source testé 5.15.0-187.197 appelle encore kfree(pch) directement et est vulnérable.

Cible validée

PropriétéValeur
DistributionUbuntu 22.04.5 LTS (Jammy)
Paquet du noyaulinux-image-5.15.0-187-generic / 5.15.0-187.197
Version du noyau5.15.0-187-generic #197-Ubuntu
Architecturex86-64
VMQEMU/KVM, -cpu host, quatre vCPU, 5 Gio de RAM
Identité initialeuid=1001(poc) gid=1001(poc) groups=1001(poc)
Capacités initialeshéritables, permises, effectives et ambiantes toutes à zéro
Identité finaleuid=0(root) gid=0(root) dans les espaces de noms initiaux
Modifications au démarrageAucune ; ligne de commande standard, KASLR activé

Le noyau n'a pas été recompilé. L'image cloud minimale ne contenait pas linux-modules-extra-5.15.0-187-generic ; ce paquet officiel Ubuntu a donc été installé pour fournir l2tp_ppp. Une installation Jammy normale utilisant le métapaquet linux-generic dépend déjà du paquet modules-extra correspondant. Le module du protocole se charge automatiquement lorsque l'exploit crée sa socket PPPoL2TP.

Exigences et état Ubuntu par défaut

ExigenceÉtat Ubuntu 5.15.0-187Utilisation par l'exploit
PPPCONFIG_PPP=yIntégré
L2TP / PPPoL2TPCONFIG_L2TP=m, CONFIG_PPPOL2TP=mModule officiel linux-modules-extra
Clés utilisateurCONFIG_KEYS=yRecycle le canal kmalloc-256 libéré
AppArmorCONFIG_SECURITY_APPARMOR=yReste actif ; les fausses credentials incluent une étiquette unconfined valide
KASLRCONFIG_RANDOMIZE_BASE=yReste actif ; le décalage est récupéré à l'exécution
SMAPCONFIG_X86_SMAP=yReste actif
Espaces de noms utilisateur/réseauActivés par Ubuntu, mais non utilisésAucune configuration d'espace de noms ni gain de capacité requis
/dev/pppNon requisLe canal est lié mais jamais connecté à une unité PPP

Le détecteur automatique de KASLR utilise un canal auxiliaire temporel de prefetch x86 et nécessite RDTSCP avec KPTI inactif. Le CPU hôte testé expose rdtscp, smep et smap et n'est pas affecté par Meltdown, donc Ubuntu laisse KPTI inactif sans aucune modification au démarrage. Sur un CPU où /proc/cpuinfo signale le drapeau pti, le détecteur refuse de s'exécuter. Il s'agit d'une condition matérielle spécifique à l'exploit : la CVE sous-jacente reste atteignable, mais cette version ne revendique pas de contournement de KASLR sur un système à KPTI actif. Un décalage fourni manuellement n'existe que pour des diagnostics contrôlés.

Processus d'exploitation

  1. Quatre travailleurs en course créent à plusieurs reprises un canal PPPoL2TP lié mais non attaché, envoient des trames L2TPv2/PPP valides depuis d'autres CPU et ferment la socket de données.
  2. Une charge utile de clé utilisateur recycle la struct channel libérée. Le chemin RX encore en cours traite les octets de clé contrôlés comme sa file skb et sa file d'attente de veille.
  3. Les opérations sur la liste de la file divulguent un pointeur skb actif à travers la charge utile de clé lisible. Un second unlink contrôlé utilise core_pattern comme espace de divulgation et expose un pointeur d'allocation de clé.
  4. Une charge utile de clé de 224 octets devient un porteur de credentials persistant. En répétant la divulgation de file, on révèle l'adresse du porteur.
  5. Deux étapes supplémentaires de source de pointeur et d'unlink placent un pointeur de blob cred AppArmor valide et une fausse étiquette unconfined dans la credential forgée.
  6. L'entrée de file d'attente de veille recyclée appelle override_creds() avec la cred forgée. Les champs UID/GID, les capacités et les pointeurs utilisateur, namespace, ucount et groupe requis correspondent à la compilation Ubuntu exacte.
  7. Le contexte d'exécution temporairement privilégié copie /proc/self/exe vers un fichier unique dans /tmp, le change en propriété root avec le mode 4755 et vérifie ces attributs.
  8. La tâche d'origine non privilégiée exécute cette copie SUID, obtient les UID/GID réels 0, supprime le programme d'aide temporaire et exécute /usr/bin/id.
Télécharger l’outil