
Exploit proof-of-concept di escalation dei privilegi locali per CVE-2017-7184, un overflow dello stack netlink XFRM del kernel Linux. Dimostra l'abuso dei namespace e il ROP del kernel per ottenere i privilegi di root senza sudo.
Questo repository contiene un exploit proof-of-concept di escalation locale dei privilegi per CVE-2017-7184, una vulnerabilità del kernel Linux nel sottosistema netlink XFRM (IPsec).
L'exploit dimostra come un utente non privilegiato possa ottenere root reale (UID 0) tramite:
Creando un namespace utente + di rete non privilegiato
Ottenendo CAP_NET_ADMIN all'interno del namespace
Attivando uno stack overflow del kernel nella gestione netlink XFRM
Eseguendo una catena ROP nel kernel per chiamare:
prepare_kernel_cred(NULL)commit_creds()Ritornando in modo sicuro in userland con pieni privilegi di root
Non è richiesto sudo.
Namespace utente non privilegiato
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN senza sudoAbuso di XFRM Netlink
NETLINK_XFRMXFRM_MSG_NEWSA malformatoEsecuzione ROP nel kernel
Ritorno in userland
swapgs; iretqunprivileged_userns_clone = 1gcc con supporto pthreadVerifica del supporto ai namespace:
cat /proc/sys/kernel/unprivileged_userns_clone
Output atteso:
1
gcc exploit.c -o exploit -pthread
./exploit
Non usare sudo.
Se l'operazione riesce, otterrai una shell di root reale:
uid=0(root) gid=0(root) groups=0(root)
L'exploit tenta di:
Estrarre i simboli da /proc/kallsyms
Se limitato, ripiega su offset hardcoded per:
commit_credsprepare_kernel_cred⚠️ I gadget ROP e gli offset sono specifici per la versione del kernel. Devi adattarli per altre build.
Questo conferma comunque che il sistema è vulnerabile.
sysctl -w kernel.unprivileged_userns_clone=0
Questo codice è fornito solo a scopo educativo e di ricerca sulla sicurezza.
commit_creds| Campo | Valore |
|---|
| CVE | CVE-2017-7184 |
| Componente | Linux Kernel – XFRM Netlink |
| Tipo di bug | Stack overflow del kernel |
| Impatto | Escalation locale dei privilegi |
| Vettore di attacco | Locale (utente non privilegiato) |
| Classe di exploit | Abuso dei namespace + ROP |
| Prime versioni affette | Kernel Linux ≤ 4.8 |
| Corretto in | Patch del kernel rilasciate nel 2017 |