Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-68121 — Repository di ricerca per CVE-2026-68121, una use-after-free nel kernel Linux in pppoe_sendmsg() relativa a PPPoE che consente l'escalation locale dei privilegi, con PoC, analisi della causa radice e configurazione del laboratorio. | Kitploit
Strumenti/GitHubGitHub/0xblackash/cve-2026-68121
Escalation di PrivilegiMemory ForensicsAnalisi delle VulnerabilitàExploitReverse EngineeringPaper e RicercaApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHub0xblackash/cve-2026-68121

CVE-2026-68121

Repository di ricerca per CVE-2026-68121, una use-after-free nel kernel Linux in pppoe_sendmsg() relativa a PPPoE che consente l'escalation locale dei privilegi, con PoC, analisi della causa radice e configurazione del laboratorio.

7h 49m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

⚡ CVE-2026-68121 - PPPoEject

Use-After-Free nel kernel Linux PPPoE → Escalation dei privilegi locale

Una vulnerabilità di corruzione della memoria del kernel Linux nel percorso di trasmissione PPPoE, causata da un puntatore obsoleto a un header sk_buff dopo che un callback dell'header del dispositivo rialloca la testa dell'skb.


⚠️ Disclaimer

Questo repository è destinato esclusivamente a ricerca di sicurezza autorizzata, analisi di vulnerabilità del kernel, ambienti CTF e test difensivi.

Non eseguire codice proof-of-concept contro sistemi senza esplicita autorizzazione.


📌 Panoramica della vulnerabilità

Il record CVE identifica la vulnerabilità come un puntatore obsoleto all'header PPPoE che può diventare non valido quando dev_hard_header() rialloca la testa dell'skb.


🧬 Descrizione della vulnerabilità

La vulnerabilità esiste in:

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

all'interno di:

root@kitploit:~
pppoe_sendmsg()

La sequenza vulnerabile è concettualmente:

root@kitploit:~
pppoe_sendmsg()
      │
      ▼
Salva il puntatore all'header PPPoE
      │
      ▼
dev_hard_header()
      │
      ▼
la testa dell'skb può essere riallocata
      │
      ▼
Il vecchio puntatore diventa obsoleto
      │
      ▼
PPPoE scrive attraverso il puntatore obsoleto
      │
      ▼
Use-After-Free
      │
      ▼
Corruzione della memoria del kernel

Il codice di networking di Linux consente ai callback dell'header del dispositivo di riallocare la testa dell'sk_buff. Un puntatore nella vecchia testa non può quindi essere riutilizzato in modo sicuro dopo che dev_hard_header() ritorna.


🔬 Causa principale

Il problema centrale è una violazione del ciclo di vita.

pppoe_sendmsg() ottiene un puntatore all'header PPPoE prima di invocare:

root@kitploit:~
dev_hard_header()

Tuttavia, quel callback può causare lo spostamento della testa dell'skb.

Concettualmente:

root@kitploit:~
Prima del callback:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       puntatore obsoleto


Dopo l'espansione dell'skb:

vecchia testa skb ──X──► liberata

nuova testa skb
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      posizione valida

Il vecchio puntatore fa ancora riferimento all'allocazione liberata.

Quando PPPoE successivamente scrive l'header attraverso quel puntatore, il kernel esegue una scrittura use-after-free.


🧠 Condizione di attivazione

L'attivazione documentata coinvolge una race attorno a copy_from_user() e cambiamenti alle operazioni dell'header di un dispositivo team.

Una sequenza descritta è:

root@kitploit:~
PPPoE sendmsg()
      │
      ▼
copy_from_user() si blocca
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
Il dispositivo team cambia   Viene aggiunta la prima porta
le operazioni dell'header    non-Ethernet
                      │
                      ▼
               Callback GRE delegato
                      │
                      ▼
               Espansione della testa skb
      │               │
      └───────────────┘
              │
              ▼
       puntatore PPPoE obsoleto
              │
              ▼
       scrittura use-after-free

Il record CVE nota che ciò può verificarsi quando la prima porta non-Ethernet viene aggiunta a un dispositivo team vuoto e il callback dell'header GRE delegato espande la testa dell'skb.


💥 Impatto sulla sicurezza

La vulnerabilità può causare:

  • Use-after-free nell'heap del kernel
  • Corruzione della memoria del kernel
  • Crash del kernel / denial of service
  • Potenziale divulgazione della memoria del kernel
  • Potenziale modifica arbitraria della memoria del kernel
  • Potenziale esecuzione di codice nel kernel
  • Escalation dei privilegi locale

Il vettore CVSS pubblicato del CVE è:

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

con un punteggio base di 7.8 Alto.


🔎 Superficie di attacco tecnica

I componenti rilevanti sono:

root@kitploit:~
Socket PF_PPPOX / PPPoE
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 Callback dell'header del dispositivo di rete
          │
          ▼
 Potenziale espansione della testa skb
          │
          ▼
 Puntatore all'header PPPoE obsoleto
          │
          ▼
     Scrittura UAF

Il codice vulnerabile non è quindi semplicemente un parser generico di pacchetti PPPoE; la condizione critica è l'interazione tra trasmissione del socket PPPoE e riallocazione dinamica della testa skb.


🩹 Correzione upstream

La correzione upstream è intitolata:

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

La correzione ricarica l'header PPPoE attraverso l'offset dell'header di rete dell'skb dopo la creazione dell'header del dispositivo.

La proprietà importante è:

root@kitploit:~
Prima:

puntatore all'header
      │
      ▼
dev_hard_header()
      │
      ▼
l'skb si sposta
      │
      ▼
puntatore = obsoleto ❌


Dopo:

dev_hard_header()
      │
      ▼
l'skb può spostarsi
      │
      ▼
ricarica l'header usando l'offset dell'skb
      │
      ▼
puntatore = valido ✅

pskb_expand_head() aggiorna l'offset rilevante dell'skb quando la testa dell'skb viene rilocata, rendendo sicura la ricerca basata sull'offset dopo la riallocazione.


📊 Vulnerabile vs Corretto


🧪 Ambiente di ricerca

Un laboratorio controllato può essere strutturato come:

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

Strumenti utili per il debug del kernel:

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

Monitorare i messaggi del kernel:

root@kitploit:~
sudo dmesg -w

Ispezionare il supporto PPPoE:

root@kitploit:~
lsmod | grep pppoe

Verificare i moduli PPP disponibili:

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

🔎 Verifica del kernel

Verificare il kernel attualmente in esecuzione:

root@kitploit:~
uname -r

Verificare la configurazione relativa a PPPoE:

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

Le opzioni rilevanti tipiche includono:

root@kitploit:~
CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 Flusso di riproduzione

Per la ricerca controllata sul kernel:

root@kitploit:~
01. Compilare il kernel vulnerabile
          ↓
02. Avviare una VM isolata
          ↓
03. Abilitare il supporto PPPoE
          ↓
04. Creare una topologia di rete controllata
          ↓
05. Configurare l'interazione team/GRE
          ↓
06. Esercitare pppoe_sendmsg()
          ↓
07. Monitorare il ciclo di vita dell'skb
          ↓
08. Catturare la diagnostica del kernel
          ↓
09. Applicare la patch upstream
          ↓
10. Ripetere e confrontare

L'obiettivo è riprodurre in modo sicuro la violazione del ciclo di vita della memoria e confrontare il comportamento vulnerabile e quello corretto.


📂 Struttura del repository

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

🛡️ Mitigazione

La mitigazione raccomandata è aggiornare a un kernel Linux contenente la correzione upstream o un backport appropriato della distribuzione.

Per Debian/Kali:

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

Poi riavviare:

root@kitploit:~
sudo reboot

Verificare il kernel in esecuzione:

root@kitploit:~
uname -r

I backport delle distribuzioni possono utilizzare numeri di versione diversi, quindi gli amministratori dovrebbero verificare il pacchetto installato rispetto all'avviso di sicurezza della distribuzione. Debian attualmente elenca versioni corrette tra cui 6.1.187-1 per Bookworm e 6.12.101-1 per Trixie.


📦 Riferimenti alla correzione upstream

Gli alberi stabili di Linux contengono la correzione su più rami mantenuti. Il record CVE elenca i commit stabili corrispondenti e identifica il file sorgente interessato come:

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

La storia vulnerabile inizia con l'implementazione PPPoE del kernel Linux e la serie di commit correttivi termina con la correzione upstream rappresentata da 7a56e7c9b08e08fd55a1bcada24cf4fe3782b722 nei dati CVE.


🧩 Lezioni di sicurezza

01 — Il ciclo di vita dei puntatori è importante

Un puntatore in un skb non può essere considerato valido dopo un callback in grado di riallocare la testa dell'skb.

02 — I callback possono invalidare le assunzioni

I callback di networking possono modificare il layout di memoria sottostante.

03 — Usare gli offset quando la memoria può spostarsi

La patch dimostra perché un offset relativo all'skb è più sicuro che mantenere un puntatore grezzo attraverso un'operazione potenzialmente rilocante.

04 — Le race condition amplificano i bug di memoria

Lo stato vulnerabile dipende da attività concorrenti attorno alla trasmissione dei pacchetti e alla configurazione del dispositivo di rete.

05 — Gli UAF del kernel hanno un impatto elevato

Un puntatore obsoleto nel codice di networking del kernel può diventare una primitiva di corruzione della memoria con conseguenze su riservatezza, integrità e disponibilità.


📚 Riferimenti

  • CVE: CVE-2026-68121
  • Nome in codice: PPPoEject
  • Sottosistema Linux: PPPoE
  • Sorgente: drivers/net/ppp/pppoe.c
  • Funzione principale: pppoe_sendmsg()
  • Correzione: pppoe: reload header pointer after dev_hard_header()
  • CVSS: 7.8 Alto
  • Debian Security Tracker: CVE-2026-68121
  • Riferimenti Linux Kernel / Stable: elencati nel record CVE

⚡ PPPoEject

CVE-2026-68121

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


Research • Analyze • Reproduce • Harden


0xBlackash

Scarica lo strumento
CampoDettagli
CVECVE-2026-68121
Nome in codicePPPoEject
ComponenteLinux Kernel
SottosistemaPPPoE / Networking
File interessatodrivers/net/ppp/pppoe.c
Funzione principalepppoe_sendmsg()
Classe di bugUse-After-Free
ImpattoCorruzione della memoria del kernel
Impatto potenzialeEscalation dei privilegi locale
CVSS v3.17.8 — Alto
Vettore di attaccoLocale
Complessità di attaccoBassa
Privilegi richiestiBassi
Interazione utenteNessuna
StatoCorretto
Proprietà di sicurezzaVulnerabileCorretto
Puntatore all'header salvato prima del callback✅—
La testa skb può spostarsi✅✅
Puntatore aggiornato dopo il callback❌✅
Dereferenziazione di puntatore obsoletoPossibilePrevenuta
Scrittura use-after-freePossibileMitigata
Corruzione della memoria del kernelPossibileMitigata