
Analysebericht zu Linux-Kernel-CVE-Exploits und zugehörige Debug-Umgebung. Sie müssen den Linux-Kernel nicht mehr kompilieren und Ihre Umgebung nicht mehr konfigurieren.
Wird ständig aktualisiert......
Linux-Kernel-CVE-Exploit-Analysebericht und zugehörige Debug-Umgebung. Sie müssen den Linux-Kernel nicht mehr kompilieren und Ihre Umgebung nicht mehr konfigurieren.
Dieses Repository dient dazu, alle Linux-Kernel-Exploits und die zugehörige Debug-Umgebung bereitzustellen. Sie können Qemu verwenden, um den Kernel zu booten und den Exploit zu testen.
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 #
---
## Katalog
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
---
## Details
#### 1. CVE-2015-8550
[writeup](https://blog.csdn.net/panhewu9919/article/details/100891770)
**Testversion**: Linux-4.19.65
**Schutz**: KASLR/SMEP aktiviert, SMAP nicht aktiviert.
**Schwachstelle**: Durch gcc-Compileroptimierungen verursachte **Double-Fetch-Schwachstelle**, die direkt zur Übernahme des Kontrollflusses führt.
#### 2. CVE-2016-9793
[writeup](https://blog.csdn.net/panhewu9919/article/details/120164051)
**Testversion**: Linux-4.8.13
**Schutz**: KASLR/SMAP/SMEP nicht aktiviert. Die gefälschte [skb_shared_info](https://elixir.bootlin.com/linux/v4.8.13/source/include/linux/skbuff.h#L414)-Struktur befindet sich im Userspace und kann SMAP offensichtlich nicht umgehen.
**Schwachstelle**: Die Funktion [sock_setsockopt()](https://elixir.bootlin.com/linux/v4.8.13/source/net/core/sock.c#L658) in `net/core/sock.c` **behandelt negative Werte fehlerhaft**, wodurch `sk_sndbuf` und `sk_rcvbuf` negative Werte annehmen. Beim Aufruf von `write` werden `skb->head` und `skb->end` falsch gesetzt; beim anschließenden `close` wird beim Freigeben der Userspace adressiert und ein Fehler ausgelöst. An der Userspace-Adresse `0xfffffed0` wird eine [skb_shared_info](https://elixir.bootlin.com/linux/v4.8.13/source/include/linux/skbuff.h#L414)-Struktur gefälscht, über `skb_shared_info->destructor_arg->callback` wird der Kontrollfluss übernommen.
#### 3. 4-20-BPF-integer
[writeup](https://www.cnblogs.com/bsauce/p/11560224.html)
**Testversion**: Linux-4.20.0-rc3
**Schutz**: SMEP aktiviert, KASLR/SMAP nicht aktiviert.
**Schwachstelle**: **Integer-Overflow** in `queue_stack_map_alloc()` des Linux-eBPF-Moduls, was zu einem Heap-Overflow führt. Durch Modifikation des Vtabl-Zeigers wird der Kontrollfluss zu `xchg eax, esp` umgeleitet.
#### 4. CVE-2017-5123
[writeup](https://www.jianshu.com/p/90a040114188)
**Testversion**: Linux 4.14-rc4
**Schutz**: SMEP/SMAP aktiviert, KASLR deaktiviert.
**Schwachstelle**: Die Implementierung von `waitid` in `/kernel/exit.c` ruft beim Kopieren von Kernel-Daten an Userspace-Adressen mittels `unsafe_put_user()` keine Prüfung der Userspace-Adresse durch `access_ok()` auf, wodurch tatsächlich Daten an Kernel-Adressen geschrieben werden können. **waitid prüft die Benutzeradresse nicht, was zu einem beliebigen Null-Address-Schreibzugriff führt.** Es kann Shellcode an Adresse 0 ausgeführt oder ein `cred` in einem vermuteten Bereich überschrieben werden, um Rechte zu erweitern.
#### 5. CVE-2017-6074
[writeup](https://bsauce.github.io/2021/09/17/CVE-2017-6074/) [reference](https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-6074)
**Testversion**: Linux-4.9.12
**Schutz**: SMEP/SMAP aktiviert, kASLR deaktiviert.
**Schwachstelle**: Im DCCP-Protokoll (Datagram Congestion Control Protocol) des IPv6-Protokollfamilie des Linux-Kernels behandelt die Funktion [dccp_rcv_state_process()](https://elixir.bootlin.com/linux/v4.9.12/source/net/dccp/input.c#L574) in `net/dccp/input.c` im Zustand `LISTEN` die Datenstruktur von `DCCP_PKT_REQUEST`-Paketen fehlerhaft. Wenn der Benutzer `setsockopt()` mit der Option `IPV6_RECVPKTINFO` aufruft, wird eine **Double-Free der `sk_buff`-Struktur** ausgelöst. Die Ausnutzung ähnelt CVE-2016-8655. Beim ersten Auslösen der Schwachstelle wird per Heap-Spraying die `po->rx_ring->prb_bdqc->retire_blk_timer`-Struktur gefälscht, um `native_write_cr4(0x406e0)` auszuführen und SMEP/SMAP zu deaktivieren; beim zweiten Auslösen wird per Heap-Spraying die `skb-> ... ->destructor_arg`-Struktur gefälscht, um `commit_creds(prepare_kernel_cred(0))` auszuführen und Rechte zu erweitern.
#### 6. CVE-2017-7308
[writeup](https://www.jianshu.com/p/b53862cd64a6) [reference](https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-7308)
**Testversion**: Linux-4.10.6
**Schutz**: SMEP/SMAP aktiviert, KASLR deaktiviert.
**Schwachstelle**: Die Funktion [`packet_set_ring()`](https://elixir.bootlin.com/linux/v4.10.6/source/net/packet/af_packet.c#L4181) in `net/packet/af_packet.c` prüft die Blockgröße nicht korrekt; die Längenbedingung ist fehlerhaft, was zu einem **Heap-Overflow** führt. Erforderlich ist die Berechtigung `CAP_NET_RAW`. Zweimalige Übernahme von Funktionszeigern: Zuerst werden die Schutzmechanismen SMEP/SMAP deaktiviert, dann werden Rechte erweitert.
#### 7. CVE-2017-8890
[writeup](https://www.jianshu.com/p/699de662f567) [reference](https://xz.aliyun.com/t/2383)
**Testversion**: Linux-4.10.15
**Schutz**: SMEP aktiviert, kASLR und SMAP deaktiviert.
**Schwachstelle**: Die Funktion [`inet_csk_clone_lock()`](https://elixir.bootlin.com/linux/v4.10.15/source/net/ipv4/inet_connection_sock.c#L652) in `net/ipv4/inet_connection_sock.c` weist eine **Double-Free-Schwachstelle** auf. Durch die Double-Free wird der Callback-Funktionszeiger von RCU manipuliert, SMEP deaktiviert und zu Shellcode gesprungen, um `cred` zu modifizieren.
#### 8. CVE-2017-11176
[writeup](https://www.jianshu.com/p/76041ec5c59f)
**Testversion**: Linux-4.11.9
**Schutz**: SMEP aktiviert, kASLR und SMAP deaktiviert.
**Schwachstelle**: In der Implementierung von POSIX Message Queues im Linux-Kernel setzt die Funktion `mq_notify()` den sock-Zeiger nicht auf null, was zu UAF führt. Tatsächlich handelt es sich um eine **durch eine Race Condition verursachte Double-Free-Schwachstelle**, wobei das Race-Fenster jedoch unbegrenzt verlängert werden kann.
#### 9. CVE-2017-16995
[writeup](https://www.cnblogs.com/bsauce/p/11583310.html)
**Testversion**: Linux-4.4.110
**Schutz**: SMEP/SMAP/kaslr aktiviert.
**Schwachstelle**: Problem der **Integer-Erweiterung** im Linux-eBPF-Modul. Das Hauptproblem ist, dass die Registerwerttypen der beiden Seiten unterschiedlich sind, sodass die Check-Funktion und die tatsächliche Ausführungsfunktion unterschiedlich arbeiten. Diese Schwachstelle beinhaltet weder Stack-Angriffe noch Kontrollflussübernahme; sie verwendet nur Systemaufrufdaten zur Rechteausweitung und ist eine typische Anwendung von Data-Oriented Attacks auf dem Linux-Kernel.
#### 10. CVE-2017-1000112
[writeup](https://www.jianshu.com/p/1fa163fd5b82) [reference](https://bbs.pediy.com/thread-265319.htm)
**Testversion**: Linux-4.12.6