
Rapporto di analisi degli exploit CVE del kernel Linux e relativo ambiente di debug. Non devi più compilare il kernel Linux e configurare il tuo ambiente.
In continuo aggiornamento......
Report di analisi degli exploit CVE del kernel Linux e relativo ambiente di debug. Non devi più compilare il kernel Linux e configurare il tuo ambiente.
Questo repository serve a estrarre tutti gli exploit del kernel Linux e il relativo ambiente di debug. Puoi usare Qemu per avviare il kernel e testare l'exploit.
john@john-virtual-machine:~/Desktop/kernel-exploit-factory/CVE-2017-11176$ ./start.sh chmod: /dev/csaw: No such file or directory ifconfig: SIOCSIFADDR: No such device route: SIOCADDRT: No such device / $ uname -a Linux (none) 4.11.9 #1 SMP Sat Feb 20 21:52:39 CST 2021 x86_64 GNU/Linux / $ id uid=1000(chal) gid=1000(chal) groups=1000(chal) / $ cd exp /exp $ ./exp-slab-4119 [] sk_rmem_alloc > sk_rcvbuf ==> ok [] mq_notify start [*] wake up thread 1 ... ... /exp # id uid=0(root) gid=0(root) /exp #
---
## Catalog
1. CVE-2015-8550
2. CVE-2016-9793
3. 4-20-BPF-integer
4. CVE-2017-5123
5. CVE-2017-6074
6. CVE-2017-7308
7. CVE-2017-8890
8. CVE-2017-11176
9. CVE-2017-16995
10. CVE-2017-1000112
11. CVE-2018-5333
12. CVE-2019-9213 & CVE-2019-8956
13. CVE-2019-15666
14. CVE-2020-8835
15. CVE-2020-27194
16. CVE-2021-3156
17. CVE-2021-31440
18. CVE-2021-3490
19. CVE-2021-22555
20. CVE-2021-41073
21. CVE-2021-4154
22. CVE-2021-42008
23. CVE-2021-43267
24. CVE-2022-0185
25. CVE-2022-0847
26. CVE-2022-0995
27. CVE-2022-1015
28. CVE-2022-2588
29. CVE-2022-2602
30. CVE-2022-2639
31. CVE-2022-25636
32. CVE-2022-27666
33. CVE-2022-32250
34. CVE-2022-34918
35. CVE-2023-2598
36. CVE-2024-1086
37. CVE-2025-21702
38. CVE-2026-23271
---
## Dettagli
#### 1.CVE-2015-8550
[writeup](https://blog.csdn.net/panhewu9919/article/details/100891770)
**Versione testata**: Linux-4.19.65
**Protezione**: KASLR/SMEP abilitati, SMAP non abilitato.
**Vulnerabilità**: vulnerabilità **Double-Fetch** causata dall'ottimizzazione di compilazione di gcc, consente di dirottare direttamente il flusso di controllo.
#### 2. CVE-2016-9793
[writeup](https://blog.csdn.net/panhewu9919/article/details/120164051)
**Versione testata**: Linux-4.8.13
**Protezione**: KASLR/SMAP/SMEP non abilitati. La struttura [skb_shared_info](https://elixir.bootlin.com/linux/v4.8.13/source/include/linux/skbuff.h#L414) contraffatta si trova nello spazio utente, quindi ovviamente non può bypassare SMAP.
**Vulnerabilità**: la funzione [sock_setsockopt()](https://elixir.bootlin.com/linux/v4.8.13/source/net/core/sock.c#L658) in `net/core/sock.c` **gestisce erroneamente i valori negativi**, portando `sk_sndbuf` e `sk_rcvbuf` ad assumere valori negativi. Alla chiamata di `write`, `skb->head` e `skb->end` vengono impostati in modo errato; infine, alla chiamata di `close`, durante il rilascio si accede allo spazio utente e si verifica un errore. Viene contraffatta la struttura [skb_shared_info](https://elixir.bootlin.com/linux/v4.8.13/source/include/linux/skbuff.h#L414) all'indirizzo utente `0xfffffed0`, e il flusso di controllo viene dirottato tramite `skb_shared_info->destructor_arg->callback`.
#### 3. 4-20-BPF-integer
[writeup](https://www.cnblogs.com/bsauce/p/11560224.html)
**Versione testata**: Linux-4.20.0-rc3
**Protezione**: SMEP abilitato, KASLR/SMAP non abilitati.
**Vulnerabilità**: vulnerabilità di **integer overflow** in `queue_stack_map_alloc()` nel modulo eBPF di Linux, che causa heap overflow. Modificando il puntatore alla vtable si dirotta il flusso di controllo verso `xchg eax, esp`.
#### 4.CVE-2017-5123
[writeup](https://www.jianshu.com/p/90a040114188)
**Versione testata**: Linux 4.14-rc4
**Protezione**: SMEP/SMAP abilitati, KASLR disabilitato.
**Vulnerabilità**: l'implementazione di `waitid` in `/kernel/exit.c`, quando chiama `unsafe_put_user()` per copiare dati dal kernel a un indirizzo dello spazio utente, non chiama `access_ok()` per verificare la validità dell'indirizzo utente, consentendo di fatto di copiare dati verso indirizzi dello spazio kernel. **La mancata validazione dell'indirizzo utente in waitid consente una scrittura arbitraria di NULL**. È possibile eseguire shellcode all'indirizzo 0 oppure sovrascrivere la cred in un intervallo ipotizzato per elevare i privilegi.
#### 5.CVE-2017-6074
[writeup](https://bsauce.github.io/2021/09/17/CVE-2017-6074/) [riferimento](https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-6074)
**Versione testata**: Linux-4.9.12
**Protezione**: SMEP/SMAP abilitati, kASLR disabilitato.
**Vulnerabilità**: nel protocollo DCCP (Datagram Congestion Control Protocol) della famiglia di protocolli IP V6 del kernel Linux, la funzione [dccp_rcv_state_process()](https://elixir.bootlin.com/linux/v4.9.12/source/net/dccp/input.c#L574) in `net/dccp/input.c`, nello stato `LISTEN`, gestisce erroneamente la struttura del pacchetto `DCCP_PKT_REQUEST`; quando l'utente chiama `setsockopt()` con l'opzione `IPV6_RECVPKTINFO`, viene innescato un **Double-Free della struttura `sk_buff`**. Il metodo di sfruttamento è simile a CVE-2016-8655. Al primo trigger della vulnerabilità, tramite heap spray viene contraffatta la struttura `po->rx_ring->prb_bdqc->retire_blk_timer`, eseguendo `native_write_cr4(0x406e0)` per disabilitare SMEP/SMAP; al secondo trigger, tramite heap spray viene contraffatta la struttura `skb->...->destructor_arg`, eseguendo `commit_creds(prepare_kernel_cred(0))` per elevare i privilegi.
#### 6.CVE-2017-7308
[writeup](https://www.jianshu.com/p/b53862cd64a6) [riferimento](https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-7308)
**Versione testata**: Linux-4.10.6
**Protezione**: SMEP/SMAP abilitati, KASLR disabilitato.
**Vulnerabilità**: la funzione [`packet_set_ring()`](https://elixir.bootlin.com/linux/v4.10.6/source/net/packet/af_packet.c#L4181) in `net/packet/af_packet.c` non controlla correttamente la dimensione del blocco; la condizione di controllo della lunghezza è errata, causando **heap overflow**. È richiesto il privilegio `CAP_NET_RAW`. I puntatori a funzione vengono dirottati due volte: prima per disabilitare le protezioni SMEP/SMAP, poi per elevare i privilegi.
#### 7.CVE-2017-8890
[writeup](https://www.jianshu.com/p/699de662f567) [riferimento](https://xz.aliyun.com/t/2383)
**Versione testata**: Linux-4.10.15
**Protezione**: SMEP abilitato, kASLR e SMAP disabilitati.
**Vulnerabilità**: la funzione [`inet_csk_clone_lock()`](https://elixir.bootlin.com/linux/v4.10.15/source/net/ipv4/inet_connection_sock.c#L652) nel file `net/ipv4/inet_connection_sock.c` presenta una vulnerabilità di **Double-Free**. Sfruttando il Double-Free si altera il puntatore alla callback di RCU, si disabilita SMEP e si salta alla shellcode per modificare la cred.
#### 8.CVE-2017-11176
[writeup](https://www.jianshu.com/p/76041ec5c59f)
**Versione testata**: Linux-4.11.9
**Protezione**: SMEP abilitato, kASLR e SMAP disabilitati.
**Vulnerabilità**: nell'implementazione delle code di messaggi POSIX nel kernel Linux, la funzione `mq_notify()` non imposta il puntatore sock a null, causando una UAF. In realtà si tratta di una **Double-Free dovuta a una race condition**, ma la finestra della race condition può essere estesa all'infinito.
#### 9.CVE-2017-16995
[writeup](https://www.cnblogs.com/bsauce/p/11583310.html)
**Versione testata**: Linux-4.4.110
**Protezione**: SMEP/SMAP/KASLR abilitati.
**Vulnerabilità**: problema di **estensione intera** nel modulo eBPF di Linux. Il problema principale è che i tipi dei valori nei due registri sono diversi, il che comporta una differenza tra il metodo di esecuzione della funzione di controllo e quello della funzione effettiva. Questa vulnerabilità non include attacchi allo stack o dirottamento del flusso di controllo; sfrutta solo i dati delle syscall per elevare i privilegi, ed è un tipico esempio di Data-Oriented Attack sul kernel Linux.
#### 10. CVE-2017-1000112