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-2026-68121 — Dépôt de recherche pour CVE-2026-68121, une vulnérabilité use-after-free dans le noyau Linux au niveau de PPPoE dans pppoe_sendmsg() permettant une élévation de privilèges locale, avec PoC, analyse de la cause racine et configuration de laboratoire. | Kitploit
Outils/GitHubGitHub/0xblackash/cve-2026-68121
Escalade de PrivilègesCriminalistique MémoireAnalyse des VulnérabilitésExploitationRétro-ingénierieArticles et RechercheApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHub0xblackash/cve-2026-68121

CVE-2026-68121

Dépôt de recherche pour CVE-2026-68121, une vulnérabilité use-after-free dans le noyau Linux au niveau de PPPoE dans pppoe_sendmsg() permettant une élévation de privilèges locale, avec PoC, analyse de la cause racine et configuration de laboratoire.

il y a 7h 47mPas 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
Voir le dépôt

⚡ CVE-2026-68121 - PPPoEject

Linux Kernel PPPoE Use-After-Free → Élévation de privilèges locale

Une vulnérabilité de corruption mémoire du noyau Linux dans le chemin de transmission PPPoE, causée par un pointeur obsolète vers un en-tête sk_buff après qu'un callback d'en-tête de périphérique a réalloué la tête du skb.


⚠️ Avertissement

Ce dépôt est destiné uniquement à la recherche de sécurité autorisée, à l'analyse de vulnérabilités du noyau, aux environnements CTF et aux tests défensifs.

N'exécutez pas de code de preuve de concept contre des systèmes sans autorisation explicite.


📌 Aperçu de la vulnérabilité

L'enregistrement CVE identifie la vulnérabilité comme un pointeur d'en-tête PPPoE obsolète qui peut devenir invalide lorsque dev_hard_header() réalloue la tête du skb.


🧬 Description de la vulnérabilité

La vulnérabilité existe dans :

root@kitploit:~
drivers/net/ppp/pppoe.c

au sein de :

root@kitploit:~
pppoe_sendmsg()

La séquence vulnérable est conceptuellement :

root@kitploit:~
pppoe_sendmsg()
      │
      ▼
Save PPPoE header pointer
      │
      ▼
dev_hard_header()
      │
      ▼
skb head may be reallocated
      │
      ▼
Old pointer becomes stale
      │
      ▼
PPPoE writes through stale pointer
      │
      ▼
Use-After-Free
      │
      ▼
Kernel memory corruption

Le code réseau de Linux permet aux callbacks d'en-tête de périphérique de réallouer la tête du sk_buff. Un pointeur vers l'ancienne tête ne peut donc pas être réutilisé en toute sécurité après le retour de dev_hard_header().


🔬 Cause racine

Le problème central est une violation de durée de vie.

pppoe_sendmsg() obtient un pointeur vers l'en-tête PPPoE avant d'invoquer :

root@kitploit:~
dev_hard_header()

Cependant, ce callback peut provoquer le déplacement de la tête du skb.

Conceptuellement :

root@kitploit:~
Before callback:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       stale pointer


After skb expansion:

old skb head ──X──► freed

new skb head
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      valid location

L'ancien pointeur référence toujours l'allocation libérée.

Lorsque PPPoE écrit ensuite l'en-tête via ce pointeur, le noyau effectue une écriture use-after-free.


🧠 Condition de déclenchement

Le déclenchement documenté implique une condition de course autour de copy_from_user() et des changements dans les opérations d'en-tête d'un périphérique team.

Une séquence décrite est :

root@kitploit:~
PPPoE sendmsg()
      │
      ▼
copy_from_user() blocks
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
Team device changes   First non-Ethernet
header operations     port is added
                      │
                      ▼
               Delegated GRE callback
                      │
                      ▼
               skb head expansion
      │               │
      └───────────────┘
              │
              ▼
       stale PPPoE pointer
              │
              ▼
       use-after-free write

L'enregistrement CVE note que cela peut se produire lorsque le premier port non-Ethernet est ajouté à un périphérique team vide et que le callback d'en-tête GRE délégué étend la tête du skb.


💥 Impact de sécurité

La vulnérabilité peut entraîner :

  • Use-after-free du tas du noyau
  • Corruption mémoire du noyau
  • Crash du noyau / déni de service
  • Divulgation potentielle de mémoire du noyau
  • Modification potentielle arbitraire de la mémoire du noyau
  • Exécution potentielle de code noyau
  • Élévation de privilèges locale

Le vecteur CVSS publié de la CVE est :

root@kitploit:~
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

avec un score de base de 7.8 Élevé.


🔎 Surface d'attaque technique

Les composants concernés sont :

root@kitploit:~
PF_PPPOX / PPPoE socket
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 Network device header callback
          │
          ▼
 Potential skb head expansion
          │
          ▼
 PPPoE stale header pointer
          │
          ▼
     UAF write

Le code vulnérable n'est donc pas simplement un analyseur générique de paquets PPPoE ; la condition critique est l'interaction entre la transmission de socket PPPoE et la réallocation dynamique de la tête du skb.


🩹 Correctif amont

Le correctif amont est intitulé :

root@kitploit:~
pppoe: reload header pointer after dev_hard_header()

Le correctif recharge l'en-tête PPPoE via l'offset d'en-tête réseau du skb après la création de l'en-tête de périphérique.

La propriété importante est :

root@kitploit:~
Before:

header pointer
      │
      ▼
dev_hard_header()
      │
      ▼
skb moves
      │
      ▼
pointer = stale ❌


After:

dev_hard_header()
      │
      ▼
skb may move
      │
      ▼
reload header using skb offset
      │
      ▼
pointer = valid ✅

pskb_expand_head() met à jour l'offset skb concerné lorsque la tête du skb est relocalisée, ce qui rend la recherche basée sur l'offset sûre après réallocation.


📊 Vulnérable vs corrigé


🧪 Environnement de recherche

Un laboratoire contrôlé peut être structuré comme suit :

root@kitploit:~
┌───────────────────────────────────────────────┐
│                 Linux VM                     │
│                                               │
│       ┌───────────────┐                       │
│       │ PPPoE Socket  │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │ pppoe_sendmsg │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     Team      │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     GRE       │                       │
│       └───────────────┘                       │
│                                               │
└───────────────────────────────────────────────┘

Outils utiles de débogage du noyau :

root@kitploit:~
gdb
pwndbg
gef
crash
objdump
readelf
pahole

Surveiller les messages du noyau :

root@kitploit:~
sudo dmesg -w

Inspecter la prise en charge PPPoE :

root@kitploit:~
lsmod | grep pppoe

Vérifier les modules PPP disponibles :

root@kitploit:~
find /lib/modules/$(uname -r) -iname '*pppoe*'

🔎 Vérification du noyau

Vérifier le noyau actuellement en cours d'exécution :

root@kitploit:~
uname -r

Vérifier la configuration liée à PPPoE :

root@kitploit:~
grep -E 'CONFIG_PPP|CONFIG_PPPOE' \
/boot/config-$(uname -r)

Les options pertinentes typiques incluent :

root@kitploit:~
CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 Flux de reproduction

Pour la recherche contrôlée sur le noyau :

root@kitploit:~
01. Build vulnerable kernel
          ↓
02. Boot isolated VM
          ↓
03. Enable PPPoE support
          ↓
04. Create controlled networking topology
          ↓
05. Configure team/GRE interaction
          ↓
06. Exercise PPPoE sendmsg()
          ↓
07. Monitor skb lifetime
          ↓
08. Capture kernel diagnostics
          ↓
09. Apply upstream patch
          ↓
10. Repeat and compare

L'objectif est de reproduire la violation de durée de vie mémoire en toute sécurité et de comparer le comportement vulnérable et corrigé.


📂 Structure du dépôt

root@kitploit:~
CVE-2026-68121-PPPoEject/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── pppoe-sendmsg.md
│   ├── skb-lifetime.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ Atténuation

L'atténuation recommandée consiste à mettre à jour vers un noyau Linux contenant le correctif amont ou un backport approprié de la distribution.

Pour Debian/Kali :

root@kitploit:~
sudo apt update
sudo apt full-upgrade

Puis redémarrer :

root@kitploit:~
sudo reboot

Vérifier le noyau en cours d'exécution :

root@kitploit:~
uname -r

Les backports de distribution peuvent utiliser des numéros de version différents, les administrateurs doivent donc vérifier leur paquet installé par rapport à l'avis de sécurité de la distribution. Debian liste actuellement les versions corrigées incluant 6.1.187-1 pour Bookworm et 6.12.101-1 pour Trixie.


📦 Références du correctif amont

Les arbres stables de Linux contiennent le correctif sur plusieurs branches maintenues. L'enregistrement CVE liste les commits stables correspondants et identifie le fichier source affecté comme :

root@kitploit:~
drivers/net/ppp/pppoe.c

L'historique vulnérable commence avec l'implémentation PPPoE du noyau Linux et la série de commits corrigés se termine par le correctif amont représenté par 7a56e7c9b08e08fd55a1bcada24cf4fe3782b722 dans les données CVE.


🧩 Leçons de sécurité

01 — La durée de vie des pointeurs compte

Un pointeur vers un skb ne peut pas être supposé valide après un callback capable de réallouer la tête du skb.

02 — Les callbacks peuvent invalider les hypothèses

Les callbacks réseau peuvent modifier la disposition mémoire sous-jacente.

03 — Utiliser des offsets lorsque la mémoire peut se déplacer

Le correctif démontre pourquoi un offset relatif au skb est plus sûr que de conserver un pointeur brut à travers une opération susceptible de relocaliser.

04 — Les conditions de course amplifient les bugs mémoire

L'état vulnérable dépend d'une activité concurrente autour de la transmission de paquets et de la configuration du périphérique réseau.

05 — Les UAF du noyau ont un impact élevé

Un pointeur obsolète dans le code réseau du noyau peut devenir une primitive de corruption mémoire avec des conséquences sur la confidentialité, l'intégrité et la disponibilité.


📚 Références

  • CVE: CVE-2026-68121
  • Nom de code: PPPoEject
  • Sous-système Linux: PPPoE
  • Source: drivers/net/ppp/pppoe.c
  • Fonction principale: pppoe_sendmsg()
  • Correctif: pppoe: reload header pointer after dev_hard_header()
  • CVSS: 7.8 Élevé
  • Debian Security Tracker: CVE-2026-68121
  • Linux Kernel / Stable References: listées dans l'enregistrement CVE

⚡ PPPoEject

CVE-2026-68121

Linux Kernel · PPPoE · Use-After-Free · Kernel Security · LPE


Research • Analyze • Reproduce • Harden


0xBlackash

Télécharger l’outil
ChampDétails
CVECVE-2026-68121
Nom de codePPPoEject
ComposantLinux Kernel
Sous-systèmePPPoE / Networking
Fichier affectédrivers/net/ppp/pppoe.c
Fonction principalepppoe_sendmsg()
Classe de bugUse-After-Free
ImpactCorruption mémoire du noyau
Impact potentielÉlévation de privilèges locale
CVSS v3.17.8 — Élevé
Vecteur d'attaqueLocal
Complexité d'attaqueFaible
Privilèges requisFaibles
Interaction utilisateurAucune
StatutCorrigé
Propriété de sécuritéVulnérableCorrigé
Pointeur d'en-tête sauvegardé avant le callback✅—
La tête du skb peut se déplacer✅✅
Pointeur rafraîchi après le callback❌✅
Déréférencement de pointeur obsolètePossibleEmpêché
Écriture use-after-freePossibleAtténué
Corruption mémoire du noyauPossibleAtténué