diff options
| author | Andrey Konovalov | 2021-05-03 21:00:01 +0200 |
|---|---|---|
| committer | Andrey Konovalov | 2021-05-04 00:03:55 +0200 |
| commit | ca8a8c3f01d5f7feadca69c3c0f0d80321878dd6 (patch) | |
| tree | 53a3d3dfb19f854835177598c51e619c72cbc534 | |
| parent | 23baeac2e645896f5438a58a79a4a0b10f97ac40 (diff) | |
Assorted cleanups
- reorder sections
- add contents table
- fix malformed entries
- sort most misc links
- add goodreads links for books
- spacing fixes
| -rw-r--r-- | README.md | 432 |
1 files changed, 228 insertions, 204 deletions
| @@ -1,23 +1,44 @@ | |||
| 1 | Linux Kernel Exploitation | 1 | Linux Kernel Exploitation |
| 2 | ========================= | 2 | ========================= |
| 3 | 3 | ||
| 4 | Pull requests are welcome. | 4 | A collection of links related to Linux kernel security and exploitation. |
| 5 | 5 | ||
| 6 | ## Books | 6 | Pull requests are welcome. |
| 7 | 7 | ||
| 8 | 2014: "Android Hacker's Handbook" by Joshua J. Drake | 8 | - [Books](#books) |
| 9 | - [Techniques](#techniques) | ||
| 10 | - [Exploitation](#exploitation) | ||
| 11 | - [Protection Bypasses](#protection-bypasses) | ||
| 12 | - [Vulnerabilities](#vulnerabilities) | ||
| 13 | - [Info-leaks](#info-leaks) | ||
| 14 | - [LPE](#lpe) | ||
| 15 | - [RCE](#rce) | ||
| 16 | - [Other](#other) | ||
| 17 | - [Finding Bugs](#finding-bugs) | ||
| 18 | - [Defensive](#defensive) | ||
| 19 | - [Exploits](#exploits) | ||
| 20 | - [Tools](#tools) | ||
| 21 | - [Fuzzers](#fuzzers) | ||
| 22 | - [Assorted](#assorted) | ||
| 23 | - [Practice](#practice) | ||
| 24 | - [Workshops](#workshops) | ||
| 25 | - [CTF Tasks](#ctf-tasks) | ||
| 26 | - [Other Tasks](#other-tasks) | ||
| 27 | - [Playgrounds](#playgrounds) | ||
| 28 | - [Infrastructure](#infrastructure) | ||
| 29 | - [Misc](#misc) | ||
| 9 | 30 | ||
| 10 | 2012: "A Guide to Kernel Exploitation: Attacking the Core" by Enrico Perla and Massimiliano Oldani | ||
| 11 | 31 | ||
| 32 | ## Books | ||
| 12 | 33 | ||
| 13 | ## Workshops | 34 | 2014: "Android Hacker's Handbook" by Joshua J. Drake [[book](https://www.goodreads.com/book/show/17628293-android-hacker-s-handbook)] |
| 14 | 35 | ||
| 15 | [2020: "pwn.college: Module: Kernel Security"](https://pwn.college/modules/kernel) [workshop] | 36 | 2012: "A Guide to Kernel Exploitation: Attacking the Core" by Enrico Perla and Massimiliano Oldani [[book](https://www.goodreads.com/book/show/9224826-a-guide-to-kernel-exploitation)] [[materials](https://github.com/yrp604/atc-sources)] |
| 16 | 37 | ||
| 17 | [2020: "Android Kernel Exploitation" by Ashfaq Ansari](https://github.com/cloudfuzz/android-kernel-exploitation) [workshop] | ||
| 18 | 38 | ||
| 39 | ## Techniques | ||
| 19 | 40 | ||
| 20 | ## Exploitation Techniques | 41 | ### Exploitation |
| 21 | 42 | ||
| 22 | [2021: "Linux Kernel Exploitation Technique: Overwriting modprobe_path"](https://lkmidas.github.io/posts/20210223-linux-kernel-pwn-modprobe/) [article] | 43 | [2021: "Linux Kernel Exploitation Technique: Overwriting modprobe_path"](https://lkmidas.github.io/posts/20210223-linux-kernel-pwn-modprobe/) [article] |
| 23 | 44 | ||
| @@ -83,7 +104,7 @@ Pull requests are welcome. | |||
| 83 | 104 | ||
| 84 | [2016: "Getting Physical Extreme abuse of Intel based Paging Systems" by Nicolas Economou and Enrique Nissim](https://cansecwest.com/slides/2016/CSW2016_Economou-Nissim_GettingPhysical.pdf) [slides] | 105 | [2016: "Getting Physical Extreme abuse of Intel based Paging Systems" by Nicolas Economou and Enrique Nissim](https://cansecwest.com/slides/2016/CSW2016_Economou-Nissim_GettingPhysical.pdf) [slides] |
| 85 | 106 | ||
| 86 | [2016: "Linux Kernel ROP - Ropping your way to # (Part 1)" by Vitaly Nikolenko](https://www.trustwave.com/Resources/SpiderLabs-Blog/Linux-Kernel-ROP---Ropping-your-way-to---(Part-1)/) [article] | 107 | [2016: "Linux Kernel ROP - Ropping your way to # (Part 1)" by Vitaly Nikolenko](https://www.trustwave.com/Resources/SpiderLabs-Blog/Linux-Kernel-ROP---Ropping-your-way-to---(Part-1)/) [article] [[exercise](https://github.com/vnik5287/kernel_rop)] |
| 87 | 108 | ||
| 88 | [2016: "Linux Kernel ROP - Ropping your way to # (Part 2)" by Vitaly Nikolenko](https://www.trustwave.com/Resources/SpiderLabs-Blog/Linux-Kernel-ROP---Ropping-your-way-to---(Part-2)/) [article] | 109 | [2016: "Linux Kernel ROP - Ropping your way to # (Part 2)" by Vitaly Nikolenko](https://www.trustwave.com/Resources/SpiderLabs-Blog/Linux-Kernel-ROP---Ropping-your-way-to---(Part-2)/) [article] |
| 89 | 110 | ||
| @@ -99,7 +120,7 @@ Pull requests are welcome. | |||
| 99 | 120 | ||
| 100 | [2015: "From Collision To Exploitation: Unleashing Use-After-Free Vulnerabilities in Linux Kernel"](http://repository.root-me.org/Exploitation%20-%20Syst%C3%A8me/Unix/EN%20-%20From%20collision%20to%20exploitation%3A%20Unleashing%20Use-After-Free%20vulnerabilities%20in%20Linux%20Kernel.pdf) [paper] | 121 | [2015: "From Collision To Exploitation: Unleashing Use-After-Free Vulnerabilities in Linux Kernel"](http://repository.root-me.org/Exploitation%20-%20Syst%C3%A8me/Unix/EN%20-%20From%20collision%20to%20exploitation%3A%20Unleashing%20Use-After-Free%20vulnerabilities%20in%20Linux%20Kernel.pdf) [paper] |
| 101 | 122 | ||
| 102 | [2015: "Linux Kernel Exploitation" by Patrick Biernat](http://security.cs.rpi.edu/courses/binexp-spring2015/lectures/23/13_lecture.pdf) [slides] | 123 | [2015: "Modern Binary Exploitation: Linux Kernel Exploitation" by Patrick Biernat](http://security.cs.rpi.edu/courses/binexp-spring2015/lectures/23/13_lecture.pdf) [slides] [[exercise](https://github.com/RPISEC/MBE/tree/master/src/lab10)] |
| 103 | 124 | ||
| 104 | [2013: "Hacking like in the Movies: Visualizing Page Tables for Local Exploitation" at Black Hat](https://www.youtube.com/watch?v=Of6DemoMLaA) | 125 | [2013: "Hacking like in the Movies: Visualizing Page Tables for Local Exploitation" at Black Hat](https://www.youtube.com/watch?v=Of6DemoMLaA) |
| 105 | 126 | ||
| @@ -111,7 +132,7 @@ Pull requests are welcome. | |||
| 111 | 132 | ||
| 112 | [2012: "A Heap of Trouble: Breaking the Linux Kernel SLOB Allocator" by Dan Rosenberg](https://www.vsecurity.com//download/papers/slob-exploitation.pdf) [paper] | 133 | [2012: "A Heap of Trouble: Breaking the Linux Kernel SLOB Allocator" by Dan Rosenberg](https://www.vsecurity.com//download/papers/slob-exploitation.pdf) [paper] |
| 113 | 134 | ||
| 114 | [2012: "Attacking hardened Linux systems with kernel JIT spraying" by Keegan McAllister](https://mainisusuallyafunction.blogspot.ru/2012/11/attacking-hardened-linux-systems-with.html) [article] | 135 | [2012: "Attacking hardened Linux systems with kernel JIT spraying" by Keegan McAllister](https://mainisusuallyafunction.blogspot.ru/2012/11/attacking-hardened-linux-systems-with.html) [article] [[code 1](https://github.com/kmcallister/alameda)] [[code 2](https://github.com/01org/jit-spray-poc-for-ksp)] |
| 115 | 136 | ||
| 116 | [2012: "The Linux kernel memory allocators from an exploitation perspective" by Patroklos Argyroudis](https://argp.github.io/2012/01/03/linux-kernel-heap-exploitation/) [article] | 137 | [2012: "The Linux kernel memory allocators from an exploitation perspective" by Patroklos Argyroudis](https://argp.github.io/2012/01/03/linux-kernel-heap-exploitation/) [article] |
| 117 | 138 | ||
| @@ -142,12 +163,59 @@ Pull requests are welcome. | |||
| 142 | [2005: "The story of exploiting kmalloc() overflows"](https://argp.github.io/public/kmalloc_exploitation.pdf) [article] | 163 | [2005: "The story of exploiting kmalloc() overflows"](https://argp.github.io/public/kmalloc_exploitation.pdf) [article] |
| 143 | 164 | ||
| 144 | 165 | ||
| 166 | ## Protection Bypasses | ||
| 167 | |||
| 168 | [2020: "Things not to do when using an IOMMU" by Ilja van Sprundel and Joseph Tartaro](https://www.youtube.com/watch?v=p1HUpSkHcZ0) [video] | ||
| 169 | |||
| 170 | [2020: "SELinux RKP misconfiguration on Samsung S20 devices" by Vitaly Nikolenko](https://duasynt.com/blog/samsung-s20-rkp-selinux-disable) [article] | ||
| 171 | |||
| 172 | [2020: "TagBleed: Breaking KASLR on the Isolated Kernel Address Space using Tagged TLBs"](https://download.vusec.net/papers/tagbleed_eurosp20.pdf) [paper] | ||
| 173 | |||
| 174 | [2020: "Weaknesses in Linux Kernel Heap Hardening" by Silvio Cesare](https://blog.infosectcbr.com.au/2020/03/weaknesses-in-linux-kernel-heap.html) [article] | ||
| 175 | |||
| 176 | [2020: "An Analysis of Linux Kernel Heap Hardening" by Silvio Cesare](https://blog.infosectcbr.com.au/2020/04/an-analysis-of-linux-kernel-heap.html) [article] | ||
| 177 | |||
| 178 | [2020: "PAN: Another day, another broken mitigation" by Siguza](https://siguza.github.io/PAN/) [article] | ||
| 179 | |||
| 180 | [2019: "KNOX Kernel Mitigation Bypasses" by Dong-Hoon You at PoC](http://powerofcommunity.net/poc2019/x82.pdf) [slides] | ||
| 181 | |||
| 182 | [2017: "Lifting the (Hyper) Visor: Bypassing Samsung’s Real-Time Kernel Protection" by Gal Beniamini](https://googleprojectzero.blogspot.com/2017/02/lifting-hyper-visor-bypassing-samsungs.html) [article] | ||
| 183 | |||
| 184 | [2016: "Linux Kernel x86-64 bypass SMEP - KASLR - kptr_restric"](https://web.archive.org/web/20171029060939/http://www.blackbunny.io/linux-kernel-x86-64-bypass-smep-kaslr-kptr_restric/) [article] | ||
| 185 | |||
| 186 | [2016: "Practical SMEP bypass techniques on Linux" by Vitaly Nikolenko at KIWICON](https://cyseclabs.com/slides/smep_bypass.pdf) [slides] | ||
| 187 | |||
| 188 | [2016: "Micro architecture attacks on KASLR" by Anders Fogh"](https://cyber.wtf/2016/10/25/micro-architecture-attacks-on-kasrl/) [article] | ||
| 189 | |||
| 190 | [2016: "Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR" by Dmitry Evtyushkin, Dmitry Ponomarev and Nael Abu-Ghazaleh](http://www.cs.ucr.edu/~nael/pubs/micro16.pdf) [slides] | ||
| 191 | |||
| 192 | [2016: "Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR" by Daniel Gruss, Clementine Maurice, Anders Fogh, Moritz Lipp and Stefan Mangard at CCS](https://www.youtube.com/watch?v=TJTQbs3oJx8) [video] | ||
| 193 | |||
| 194 | [2016: "Using Undocumented CPU Behavior to See Into Kernel Mode and Break KASLR in the Process" at Black Hat](https://www.youtube.com/watch?v=T3kmq2NLpH4) [video] | ||
| 195 | |||
| 196 | [2016: "Breaking KASLR with Intel TSX" Yeongjin Jang, Sangho Lee and Taesoo Kim at Black Hat](https://www.blackhat.com/docs/us-16/materials/us-16-Jang-Breaking-Kernel-Address-Space-Layout-Randomization-KASLR-With-Intel-TSX.pdf) [slides] [[video](https://www.youtube.com/watch?v=rtuXG28g0CU)] | ||
| 197 | |||
| 198 | [2016: "Breaking KASLR with micro architecture" by Anders Fogh](https://dreamsofastone.blogspot.ru/2016/02/breaking-kasrl-with-micro-architecture.html) [article] | ||
| 199 | |||
| 200 | [2015: "Effectively bypassing kptr_restrict on Android" by Gal Beniamini](https://bits-please.blogspot.de/2015/08/effectively-bypassing-kptrrestrict-on.html) [article] | ||
| 201 | |||
| 202 | [2014: "ret2dir: Deconstructing Kernel Isolation" by Vasileios P. Kemerlis, Michalis Polychronakis and Angelos D. Keromytis at Black Hat Europe](https://www.blackhat.com/docs/eu-14/materials/eu-14-Kemerlis-Ret2dir-Deconstructing-Kernel-Isolation-wp.pdf) [paper] [[video](https://www.youtube.com/watch?v=kot-EQ9zf9k)] | ||
| 203 | |||
| 204 | [2013: "A Linux Memory Trick" by Dan Rosenberg](http://vulnfactory.org/blog/2013/02/06/a-linux-memory-trick/) [article] | ||
| 205 | |||
| 206 | [2011: "SMEP: What is It, and How to Beat It on Linux" by Dan Rosenberg](http://vulnfactory.org/blog/2011/06/05/smep-what-is-it-and-how-to-beat-it-on-linux/) [article] | ||
| 207 | |||
| 208 | [2009: "Bypassing Linux' NULL pointer dereference exploit prevention (mmap_min_addr)"](http://blog.cr0.org/2009/06/bypassing-linux-null-pointer.html) [article] | ||
| 209 | |||
| 210 | |||
| 145 | ## Vulnerabilities | 211 | ## Vulnerabilities |
| 146 | 212 | ||
| 147 | [Project Zero bug reports](https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=linux%20kernel&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&cells=ids&sort=-id) | 213 | [Project Zero bug reports](https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=linux%20kernel&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&cells=ids&sort=-id) |
| 148 | 214 | ||
| 215 | [Linux Kernel CVEs](https://www.linuxkernelcves.com/) | ||
| 216 | |||
| 149 | 217 | ||
| 150 | ### Information Leaks | 218 | ### Info-leaks |
| 151 | 219 | ||
| 152 | [2021: "Spectre exploits in the "wild""](https://dustri.org/b/spectre-exploits-in-the-wild.html) [article] | 220 | [2021: "Spectre exploits in the "wild""](https://dustri.org/b/spectre-exploits-in-the-wild.html) [article] |
| 153 | 221 | ||
| @@ -198,7 +266,7 @@ Pull requests are welcome. | |||
| 198 | 266 | ||
| 199 | [2020: "Kernel Exploitation With A File System Fuzzer"](https://cyberweek.ae/materials/2020/D1T2%20-%20Kernel%20Exploitation%20with%20a%20File%20System%20Fuzzer.pdf) [slides, CVE-2019-19377] [[video](https://www.youtube.com/watch?v=95f1b4FcrQ4)] | 267 | [2020: "Kernel Exploitation With A File System Fuzzer"](https://cyberweek.ae/materials/2020/D1T2%20-%20Kernel%20Exploitation%20with%20a%20File%20System%20Fuzzer.pdf) [slides, CVE-2019-19377] [[video](https://www.youtube.com/watch?v=95f1b4FcrQ4)] |
| 200 | 268 | ||
| 201 | [2020: "Finding and exploiting a bug (LPE) in an old Android phone" by Brandon Falk] [stream] [part 2](https://www.youtube.com/watch?v=qnyFk-f3Koo) [summary](https://www.youtube.com/watch?v=t-t7D0vQNmo) | 269 | [2020: "Finding and exploiting a bug (LPE) in an old Android phone" by Brandon Falk](https://www.youtube.com/watch?v=g62FXds2pt8) [stream] [[part 2](https://www.youtube.com/watch?v=qnyFk-f3Koo)] [[summary](https://www.youtube.com/watch?v=t-t7D0vQNmo)] |
| 202 | 270 | ||
| 203 | [2020: "CVE-2020-14386: Privilege Escalation Vulnerability in the Linux kernel" by Or Cohen](https://unit42.paloaltonetworks.com/cve-2020-14386/) [article, CVE-2020-14386] | 271 | [2020: "CVE-2020-14386: Privilege Escalation Vulnerability in the Linux kernel" by Or Cohen](https://unit42.paloaltonetworks.com/cve-2020-14386/) [article, CVE-2020-14386] |
| 204 | 272 | ||
| @@ -455,147 +523,7 @@ Pull requests are welcome. | |||
| 455 | [2015: "Vulnerability in the Linux Crypto API that allows unprivileged users to load arbitrary kernel modules" by Mathias Krause](https://plus.google.com/+MathiasKrause/posts/PqFCo4bfrWu) [annnouncement] | 523 | [2015: "Vulnerability in the Linux Crypto API that allows unprivileged users to load arbitrary kernel modules" by Mathias Krause](https://plus.google.com/+MathiasKrause/posts/PqFCo4bfrWu) [annnouncement] |
| 456 | 524 | ||
| 457 | 525 | ||
| 458 | ## Protection Bypass Techniques | 526 | ## Finding Bugs |
| 459 | |||
| 460 | [2020: "Things not to do when using an IOMMU" by Ilja van Sprundel and Joseph Tartaro](https://www.youtube.com/watch?v=p1HUpSkHcZ0) [video] | ||
| 461 | |||
| 462 | [2020: "SELinux RKP misconfiguration on Samsung S20 devices" by Vitaly Nikolenko](https://duasynt.com/blog/samsung-s20-rkp-selinux-disable) [article] | ||
| 463 | |||
| 464 | [2020: "TagBleed: Breaking KASLR on the Isolated Kernel Address Space using Tagged TLBs"](https://download.vusec.net/papers/tagbleed_eurosp20.pdf) [paper] | ||
| 465 | |||
| 466 | [2020: "Weaknesses in Linux Kernel Heap Hardening" by Silvio Cesare](https://blog.infosectcbr.com.au/2020/03/weaknesses-in-linux-kernel-heap.html) [article] | ||
| 467 | |||
| 468 | [2020: "An Analysis of Linux Kernel Heap Hardening" by Silvio Cesare](https://blog.infosectcbr.com.au/2020/04/an-analysis-of-linux-kernel-heap.html) [article] | ||
| 469 | |||
| 470 | [2020: "PAN: Another day, another broken mitigation" by Siguza](https://siguza.github.io/PAN/) [article] | ||
| 471 | |||
| 472 | [2019: "KNOX Kernel Mitigation Bypasses" by Dong-Hoon You at PoC](http://powerofcommunity.net/poc2019/x82.pdf) [slides] | ||
| 473 | |||
| 474 | [2017: "Lifting the (Hyper) Visor: Bypassing Samsung’s Real-Time Kernel Protection" by Gal Beniamini](https://googleprojectzero.blogspot.com/2017/02/lifting-hyper-visor-bypassing-samsungs.html) [article] | ||
| 475 | |||
| 476 | [2016: "Linux Kernel x86-64 bypass SMEP - KASLR - kptr_restric"](https://web.archive.org/web/20171029060939/http://www.blackbunny.io/linux-kernel-x86-64-bypass-smep-kaslr-kptr_restric/) [article] | ||
| 477 | |||
| 478 | [2016: "Practical SMEP bypass techniques on Linux" by Vitaly Nikolenko at KIWICON](https://cyseclabs.com/slides/smep_bypass.pdf) [slides] | ||
| 479 | |||
| 480 | [2016: "Micro architecture attacks on KASLR" by Anders Fogh"](https://cyber.wtf/2016/10/25/micro-architecture-attacks-on-kasrl/) [article] | ||
| 481 | |||
| 482 | [2016: "Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR" by Dmitry Evtyushkin, Dmitry Ponomarev and Nael Abu-Ghazaleh](http://www.cs.ucr.edu/~nael/pubs/micro16.pdf) [slides] | ||
| 483 | |||
| 484 | [2016: "Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR" by Daniel Gruss, Clementine Maurice, Anders Fogh, Moritz Lipp and Stefan Mangard at CCS](https://www.youtube.com/watch?v=TJTQbs3oJx8) [video] | ||
| 485 | |||
| 486 | [2016: "Using Undocumented CPU Behavior to See Into Kernel Mode and Break KASLR in the Process" at Black Hat](https://www.youtube.com/watch?v=T3kmq2NLpH4) [video] | ||
| 487 | |||
| 488 | [2016: "Breaking KASLR with Intel TSX" Yeongjin Jang, Sangho Lee and Taesoo Kim at Black Hat](https://www.blackhat.com/docs/us-16/materials/us-16-Jang-Breaking-Kernel-Address-Space-Layout-Randomization-KASLR-With-Intel-TSX.pdf) [slides] [[video](https://www.youtube.com/watch?v=rtuXG28g0CU)] | ||
| 489 | |||
| 490 | [2016: "Breaking KASLR with micro architecture" by Anders Fogh](https://dreamsofastone.blogspot.ru/2016/02/breaking-kasrl-with-micro-architecture.html) [article] | ||
| 491 | |||
| 492 | [2015: "Effectively bypassing kptr_restrict on Android" by Gal Beniamini](https://bits-please.blogspot.de/2015/08/effectively-bypassing-kptrrestrict-on.html) [article] | ||
| 493 | |||
| 494 | [2014: "ret2dir: Deconstructing Kernel Isolation" by Vasileios P. Kemerlis, Michalis Polychronakis and Angelos D. Keromytis at Black Hat Europe](https://www.blackhat.com/docs/eu-14/materials/eu-14-Kemerlis-Ret2dir-Deconstructing-Kernel-Isolation-wp.pdf) [paper] [[video](https://www.youtube.com/watch?v=kot-EQ9zf9k)] | ||
| 495 | |||
| 496 | [2013: "A Linux Memory Trick" by Dan Rosenberg](http://vulnfactory.org/blog/2013/02/06/a-linux-memory-trick/) [article] | ||
| 497 | |||
| 498 | [2011: "SMEP: What is It, and How to Beat It on Linux" by Dan Rosenberg](http://vulnfactory.org/blog/2011/06/05/smep-what-is-it-and-how-to-beat-it-on-linux/) [article] | ||
| 499 | |||
| 500 | [2009: "Bypassing Linux' NULL pointer dereference exploit prevention (mmap_min_addr)"](http://blog.cr0.org/2009/06/bypassing-linux-null-pointer.html) [article] | ||
| 501 | |||
| 502 | |||
| 503 | ## Defensive | ||
| 504 | |||
| 505 | [2021: "security things in Linux vX.X" by Kees Cook](https://outflux.net/blog/archives/2021/02/08/security-things-in-linux-v5-8/) [articles] | ||
| 506 | |||
| 507 | [2020: "Kernel Integrity Enforcement with HLAT In a Virtual Machine" by Chao Gao](https://static.sched.com/hosted_files/osseu2020/ce/LSSEU20_kernel%20integrity%20enforcement%20with%20HLAT%20in%20a%20virtual%20machine_v3.pdf) [slides] [[video](https://www.youtube.com/watch?v=N8avvE_neV0)] | ||
| 508 | |||
| 509 | [2020: "Linux kernel heap quarantine versus use-after-free exploits" by Alexander Popov](https://a13xp0p0v.github.io/2020/11/30/slab-quarantine.html) [article] | ||
| 510 | |||
| 511 | [2020: "State of Linux kernel security" by Dmitry Vyukov](https://github.com/ossf/wg-securing-critical-projects/blob/main/presentations/The_state_of_the_Linux_kernel_security.pdf) [slides] [[video](https://www.youtube.com/watch?v=PGwFyzh2KTA&t=1233)] | ||
| 512 | |||
| 513 | [2020: "LKRG IN A NUTSHELL" by Adam Zabrocki at OSTconf](https://www.openwall.com/presentations/OSTconf2020-LKRG-In-A-Nutshell/OSTconf2020-LKRG-In-A-Nutshell.pdf) [slides] | ||
| 514 | |||
| 515 | [2020: "Following the Linux Kernel Defence Map" by Alexander Popov at Linux Plumbers](https://linuxplumbersconf.org/event/7/contributions/775/attachments/610/1096/Following_the_Linux_Kernel_Defence_Map.pdf) [slides] [[video](https://www.youtube.com/watch?v=4c01jjbQmBc&t=8555)] | ||
| 516 | |||
| 517 | [2020: "Memory Tagging for the Kernel: Tag-Based KASAN" by Andrey Konovalov](https://docs.google.com/presentation/d/10V_msbtEap9dNerKvTrRAzvfzYdrQFC8e2NYHCZYJDE/edit?usp=sharing) [slides] [[video](https://www.youtube.com/watch?v=f-Rm7JFsJGI)] | ||
| 518 | |||
| 519 | [2020: "10 Years of Linux Security - A Report Card" by Bradley Spengler](https://grsecurity.net/10_years_of_linux_security.pdf) [slides] [[video](https://www.youtube.com/watch?v=F_Kza6fdkSU)] | ||
| 520 | |||
| 521 | [2020: "Control Flow Integrity in the Linux Kernel" by Kees Cook at linux.conf.au](https://outflux.net/slides/2020/lca/cfi.pdf) [slides] [[video](https://www.youtube.com/watch?v=0Bj6W7qrOOI)] | ||
| 522 | |||
| 523 | [2019: "Camouflage: Hardware-assisted CFI for the ARM Linux kernel"](https://arxiv.org/pdf/1912.04145v1.pdf) [paper] | ||
| 524 | |||
| 525 | [2019: "A New Proposal for Protecting Kernel Data Memory" by Igor Stoppa at Linux Security Summit EU](https://www.youtube.com/watch?v=nPH2sQAD6RY) [video] | ||
| 526 | |||
| 527 | [2019: "Control-Flow Integrity for the Linux kernel: A Security Evaluation" by Federico Manuel Bento](http://www.alunos.dcc.fc.up.pt/~up201407890/Thesis.pdf) [thesis] | ||
| 528 | |||
| 529 | [2019: "Kernel Self-Protection Project" by Kees Cook](https://outflux.net/slides/2019/lss/kspp.pdf) [slides] | ||
| 530 | |||
| 531 | [2019: "Touch but don’t look - Running the Kernel in Execute-only memory" by Rick Edgecombe](https://linuxplumbersconf.org/event/4/contributions/283/attachments/357/588/Touch_but_dont_look__Running_the_kernel_in_execute_only_memory-presented.pdf) [slides] | ||
| 532 | |||
| 533 | [2019: "Breaking and Protecting Linux Kernel Stack" by Elena Reshetova](https://www.youtube.com/watch?v=FacpjoQbMhU) [video] | ||
| 534 | |||
| 535 | [2019: "Making C Less Dangerous in the Linux Kernel" by Kees Cook](https://outflux.net/slides/2019/lca/danger.pdf) [slides] | ||
| 536 | |||
| 537 | [2019: "Mitigation for the Kernel Space Mirroring Attack (内核镜像攻击的缓解措施)"](http://c0reteam.org/2019/01/02/ksma) [article] | ||
| 538 | |||
| 539 | [2018: "The State of Kernel Self Protection" by Kees Cook](https://outflux.net/slides/2018/lss/kspp.pdf) [slides] | ||
| 540 | |||
| 541 | [2018: "Android Kernel Control Flow Integrity Analysis (分析)"](http://c0reteam.org/2018/09/17/kcfi) [article] | ||
| 542 | |||
| 543 | [2018: "Overview and Recent Developments: Kernel Self-Protection Project" by Kees Cook](https://outflux.net/slides/2018/lss-eu/kspp.pdf) [slides] | ||
| 544 | |||
| 545 | [2018: "The Last Man Standing: The Only Practical, Lightweight and Hypervisor-Based Kernel Protector Struggling with the Real World Alone" by Seunghun Han at beVX](https://github.com/kkamagui/papers/blob/master/bevx-2018/presentation.pdf) [video] | ||
| 546 | |||
| 547 | [2018: "Linux Kernel Runtime Guard (LKRG) under the hood" by Adam Zabrocki at CONFidence](https://www.openwall.com/presentations/CONFidence2018-LKRG-Under-The-Hood/CONFidence2018-LKRG-Under-The-Hood.pdf) [slides, [video](https://www.youtube.com/watch?v=tOiPM692DOM)] | ||
| 548 | |||
| 549 | [2018: "GuardION: Practical Mitigation of DMA-based Rowhammer Attacks on ARM"](https://vvdveen.com/publications/dimva2018.pdf) [paper] | ||
| 550 | |||
| 551 | [2018: "kR^X: Comprehensive Kernel Protection Against Just-In-Time Code Reuse" at BlackHat](https://www.youtube.com/watch?v=L-3eCmZ8s3A) [video] | ||
| 552 | |||
| 553 | [2018: "KASR: A Reliable and Practical Approach to Attack Surface Reduction of Commodity OS Kernels"](https://arxiv.org/pdf/1802.07062.pdf) [paper] | ||
| 554 | |||
| 555 | [2018: "The State of Kernel Self Protection" by Kees Cook at Linux Conf AU](https://outflux.net/slides/2018/lca/kspp.pdf) [slides] | ||
| 556 | |||
| 557 | [2017: "kR^X: Comprehensive Kernel Protection against Just-In-Time Code Reuse"](https://cs.brown.edu/~vpk/papers/krx.eurosys17.pdf) [paper] | ||
| 558 | |||
| 559 | [2017: "How STACKLEAK improves Linux kernel security" by Alexander Popov at Linux Piter](https://linuxpiter.com/system/attachments/files/000/001/376/original/Alexander_Popov_LinuxPiter2017.pdf) [slides] | ||
| 560 | |||
| 561 | [2017: "Shadow-Box: The Practical and Omnipotent Sandbox" by Seunghun Han at HitB](http://conference.hitb.org/hitbsecconf2017ams/materials/D1T2%20-%20Seunghun%20Han%20-%20Shadow-Box%20-%20The%20Practical%20and%20Omnipotent%20Sandbox.pdf) [slides] | ||
| 562 | |||
| 563 | [2017: "Towards Linux Kernel Memory Safety"](https://arxiv.org/pdf/1710.06175.pdf) [paper] | ||
| 564 | |||
| 565 | [2017: "Proposal of a Method to Prevent Privilege Escalation Attacks for Linux Kernel"](https://events.linuxfoundation.org/sites/events/files/slides/nakamura_20170831_1.pdf) [slides] | ||
| 566 | |||
| 567 | [2017: "Linux Kernel Self Protection Project" by Kees Cook](https://outflux.net/slides/2017/lss/kspp.pdf) [slides] | ||
| 568 | |||
| 569 | [2017: "PT-Rand: Practical Mitigation of Data-only Attacks against Page Tables"](https://www.internetsociety.org/sites/default/files/ndss2017_05B-4_Davi_paper.pdf) [paper] | ||
| 570 | |||
| 571 | [2017: "KASLR is Dead: Long Live KASLR"](https://gruss.cc/files/kaiser.pdf) [paper] | ||
| 572 | |||
| 573 | [2017: "Honey, I shrunk the attack surface – Adventures in Android security hardening" by Nick Kralevich](https://www.youtube.com/watch?v=ITL6VHOFQj8) [video] | ||
| 574 | |||
| 575 | [2017: "Fine Grained Control-Flow Integrity for The Linux Kernel" by Sandro Rigo, Michalis Polychronakis, Vasileios Kemerlis](https://www.blackhat.com/docs/asia-17/materials/asia-17-Moreira-Drop-The-Rop-Fine-Grained-Control-Flow-Integrity-For-The-Linux-Kernel.pdf) [slides] | ||
| 576 | |||
| 577 | [2016: "Thwarting unknown bugs: hardening features in the mainline Linux kernel" by Mark Rutland](https://events.static.linuxfound.org/sites/events/files/slides/slides_21.pdf) [slides] | ||
| 578 | |||
| 579 | [2016: "Emerging Defense in Android Kernel" by James Fang](http://keenlab.tencent.com/en/2016/06/01/Emerging-Defense-in-Android-Kernel/) [article] | ||
| 580 | |||
| 581 | [2016: "Randomizing the Linux kernel heap freelists" by Thomas Garnier](https://medium.com/@mxatone/randomizing-the-linux-kernel-heap-freelists-b899bb99c767#.3csq8t23s) [article] | ||
| 582 | |||
| 583 | [2015: "RAP: RIP ROP"](https://pax.grsecurity.net/docs/PaXTeam-H2HC15-RAP-RIP-ROP.pdf) [slides] | ||
| 584 | |||
| 585 | [2015: "Protecting Commodity Operating Systems through Strong Kernel Isolation" by Vasileios Kemerlis](http://www.cs.columbia.edu/~angelos/Papers/theses/vpk_thesis.pdf) [paper] | ||
| 586 | |||
| 587 | [2014: "Kernel Self-Protection through Quantified Attack Surface Reduction" by Anil Kurmus](https://publikationsserver.tu-braunschweig.de/servlets/MCRFileNodeServlet/digibib_derivate_00036154/Diss_Kurmus_Anil.pdf) [paper] | ||
| 588 | |||
| 589 | [2013: "KASLR: An Exercise in Cargo Cult Security" by Brad Spengler](https://forums.grsecurity.net/viewtopic.php?f=7&t=3367) [article] | ||
| 590 | |||
| 591 | [2012: "How do I mitigate against NULL pointer dereference vulnerabilities?" by RedHat](https://access.redhat.com/articles/20484) [article] | ||
| 592 | |||
| 593 | [2011: "Linux kernel vulnerabilities: State-of-the-art defenses and open problems"](https://pdos.csail.mit.edu/papers/chen-kbugs.pdf) [paper] | ||
| 594 | |||
| 595 | [2009: "Linux Kernel Heap Tampering Detection" by Larry Highsmith](http://phrack.org/archives/issues/66/15.txt) [article] | ||
| 596 | |||
| 597 | |||
| 598 | ## Vulnerability Discovery | ||
| 599 | 527 | ||
| 600 | [2021: "Fuzzing the Linux Kernel" by Andrey Konovalov](https://linuxfoundation.org/wp-content/uploads/2021-Linux-Foundation-Mentorship-Series_-Fuzzing-the-Linux-Kernel.pdf) [slides] [[video](https://www.youtube.com/watch?v=4IBWj21tg-c)] | 528 | [2021: "Fuzzing the Linux Kernel" by Andrey Konovalov](https://linuxfoundation.org/wp-content/uploads/2021-Linux-Foundation-Mentorship-Series_-Fuzzing-the-Linux-Kernel.pdf) [slides] [[video](https://www.youtube.com/watch?v=4IBWj21tg-c)] |
| 601 | 529 | ||
| @@ -621,7 +549,7 @@ Pull requests are welcome. | |||
| 621 | 549 | ||
| 622 | [2020: "harbian-qa: State-based target directed fuzzer based on syzkaller"](https://github.com/hardenedlinux/harbian-qa/blob/master/syzkaller/design_inplementation_intro.md) [article] | 550 | [2020: "harbian-qa: State-based target directed fuzzer based on syzkaller"](https://github.com/hardenedlinux/harbian-qa/blob/master/syzkaller/design_inplementation_intro.md) [article] |
| 623 | 551 | ||
| 624 | [2020: "Agamotto: Accelerating Kernel Driver Fuzzing with Lightweight Virtual Machine Checkpoints"](https://www.usenix.org/system/files/sec20-song.pdf) [paper] [[slides](https://www.usenix.org/system/files/sec20_slides_song.pdf)] [[video](https://www.youtube.com/watch?v=Swo6jSkjviA)] | 552 | [2020: "Agamotto: Accelerating Kernel Driver Fuzzing with Lightweight Virtual Machine Checkpoints"](https://www.usenix.org/system/files/sec20-song.pdf) [paper] [[slides](https://www.usenix.org/system/files/sec20_slides_song.pdf)] [[video](https://www.youtube.com/watch?v=Swo6jSkjviA)] [[code](https://github.com/securesystemslab/agamotto)] |
| 625 | 553 | ||
| 626 | [2020: "Using syzkaller, part 1: Fuzzing the Linux kernel" by Andre Almeida](https://www.collabora.com/news-and-blog/blog/2020/03/26/syzkaller-fuzzing-the-kernel/) [article] | 554 | [2020: "Using syzkaller, part 1: Fuzzing the Linux kernel" by Andre Almeida](https://www.collabora.com/news-and-blog/blog/2020/03/26/syzkaller-fuzzing-the-kernel/) [article] |
| 627 | 555 | ||
| @@ -643,7 +571,7 @@ Pull requests are welcome. | |||
| 643 | 571 | ||
| 644 | [2020: "Analyzing the Linux Kernel in Userland with AFL and KLEE"](https://blog.grimm-co.com/post/analyzing-the-linux-kernel-in-userland-with-afl-and-klee/) [article] | 572 | [2020: "Analyzing the Linux Kernel in Userland with AFL and KLEE"](https://blog.grimm-co.com/post/analyzing-the-linux-kernel-in-userland-with-afl-and-klee/) [article] |
| 645 | 573 | ||
| 646 | [2019: "perf fuzzer: Exposing Kernel Bugs by Detailed Fuzzing of a Specific System Call (2019 Update)" by Vincent M. Weaver and Dave Jones](perf fuzzer: Exposing Kernel Bugs by Detailed Fuzzing of a Specific System Call (2019 Update)) [paper] | 574 | [2019: "perf fuzzer: Exposing Kernel Bugs by Detailed Fuzzing of a Specific System Call (2019 Update)" by Vincent M. Weaver and Dave Jones](http://web.eece.maine.edu/~vweaver/projects/perf_events/fuzzer/2019_perf_fuzzer_tr.pdf) [paper] |
| 647 | 575 | ||
| 648 | [2019: "Industry Practice of Coverage-Guided Enterprise Linux Kernel Fuzzing"](http://wingtecher.com/themes/WingTecherResearch/assets/papers/fse19-linux-kernel.pdf) [paper] | 576 | [2019: "Industry Practice of Coverage-Guided Enterprise Linux Kernel Fuzzing"](http://wingtecher.com/themes/WingTecherResearch/assets/papers/fse19-linux-kernel.pdf) [paper] |
| 649 | 577 | ||
| @@ -661,8 +589,7 @@ Pull requests are welcome. | |||
| 661 | 589 | ||
| 662 | [2019: "PeriScope: An Effective Probing and Fuzzing Framework for the Hardware-OS Boundary"](https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04A-1_Song_paper.pdf) [paper] | 590 | [2019: "PeriScope: An Effective Probing and Fuzzing Framework for the Hardware-OS Boundary"](https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04A-1_Song_paper.pdf) [paper] |
| 663 | 591 | ||
| 664 | [2019: "Hourglass Fuzz: A Quick Bug Hunting Method"](https://conference.hitb.org/hitbsecconf2019ams/materials/D1T2%20-%20Hourglass%20Fuzz%20-%20A%20Quick%20Bug%20Hunting%20Method%20-%20Moony%20Li,%20Todd%20Han,%20Lance%20Jiang%20&%20Lilang%20Wu.pdf) [slides] | 592 | [2019: "Hourglass Fuzz: A Quick Bug Hunting Method"](https://conference.hitb.org/hitbsecconf2019ams/materials/D1T2%20-%20Hourglass%20Fuzz%20-%20A%20Quick%20Bug%20Hunting%20Method%20-%20Moony%20Li,%20Todd%20Han,%20Lance%20Jiang%20&%20Lilang%20Wu.pdf) [slides] |
| 665 | |||
| 666 | 593 | ||
| 667 | [2018: "FastSyzkaller: Improving Fuzz Efficiency for Linux Kernel Fuzzing"](https://iopscience.iop.org/article/10.1088/1742-6596/1176/2/022013/pdf) [paper] | 594 | [2018: "FastSyzkaller: Improving Fuzz Efficiency for Linux Kernel Fuzzing"](https://iopscience.iop.org/article/10.1088/1742-6596/1176/2/022013/pdf) [paper] |
| 668 | 595 | ||
| @@ -670,7 +597,7 @@ Pull requests are welcome. | |||
| 670 | 597 | ||
| 671 | [2018: "From Thousands of Hours to a Couple of Minutes: Towards Automating Exploit Generation for Arbitrary Types of Kernel Vulnerabilities"](http://i.blackhat.com/us-18/Thu-August-9/us-18-Wu-Towards-Automating-Exploit-Generation-For-Arbitrary-Types-of-Kernel-Vulnerabilities.pdf) [slides] [[paper](http://i.blackhat.com/us-18/Thu-August-9/us-18-Wu-Towards-Automating-Exploit-Generation-For-Arbitrary-Types-of-Kernel-Vulnerabilities-wp.pdf)] | 598 | [2018: "From Thousands of Hours to a Couple of Minutes: Towards Automating Exploit Generation for Arbitrary Types of Kernel Vulnerabilities"](http://i.blackhat.com/us-18/Thu-August-9/us-18-Wu-Towards-Automating-Exploit-Generation-For-Arbitrary-Types-of-Kernel-Vulnerabilities.pdf) [slides] [[paper](http://i.blackhat.com/us-18/Thu-August-9/us-18-Wu-Towards-Automating-Exploit-Generation-For-Arbitrary-Types-of-Kernel-Vulnerabilities-wp.pdf)] |
| 672 | 599 | ||
| 673 | [2018: "MoonShine: Optimizing OS Fuzzer Seed Selection with Trace Distillation"](http://www.cs.columbia.edu/~suman/docs/moonshine.pdf) [paper] | 600 | [2018: "MoonShine: Optimizing OS Fuzzer Seed Selection with Trace Distillation"](http://www.cs.columbia.edu/~suman/docs/moonshine.pdf) [paper] [[code](https://github.com/shankarapailoor/moonshine)] |
| 674 | 601 | ||
| 675 | [2018: "Detecting Kernel Memory Disclosure with x86 Emulation and Taint Tracking" by Mateusz Jurczyk](https://j00ru.vexillium.org/papers/2018/bochspwn_reloaded.pdf) [paper] | 602 | [2018: "Detecting Kernel Memory Disclosure with x86 Emulation and Taint Tracking" by Mateusz Jurczyk](https://j00ru.vexillium.org/papers/2018/bochspwn_reloaded.pdf) [paper] |
| 676 | 603 | ||
| @@ -723,35 +650,101 @@ Pull requests are welcome. | |||
| 723 | [2009: "Opensource Kernel Auditing and Exploitation" by Silvio Cesare at DEF CON](https://www.youtube.com/watch?v=sNh2TD6Tf9Q&feature=youtu.be) [video] | 650 | [2009: "Opensource Kernel Auditing and Exploitation" by Silvio Cesare at DEF CON](https://www.youtube.com/watch?v=sNh2TD6Tf9Q&feature=youtu.be) [video] |
| 724 | 651 | ||
| 725 | 652 | ||
| 726 | ## Fuzzers | 653 | ## Defensive |
| 727 | 654 | ||
| 728 | https://github.com/google/syzkaller | 655 | ["Linux Kernel Defence Map" by Alexander Popov](https://github.com/a13xp0p0v/linux-kernel-defence-map) |
| 729 | 656 | ||
| 730 | https://github.com/kernelslacker/trinity | 657 | [2021: "security things in Linux vX.X" by Kees Cook](https://outflux.net/blog/archives/2021/02/08/security-things-in-linux-v5-8/) [articles] |
| 731 | 658 | ||
| 732 | http://web.eece.maine.edu/~vweaver/projects/perf_events/fuzzer/ | 659 | [2020: "Kernel Integrity Enforcement with HLAT In a Virtual Machine" by Chao Gao](https://static.sched.com/hosted_files/osseu2020/ce/LSSEU20_kernel%20integrity%20enforcement%20with%20HLAT%20in%20a%20virtual%20machine_v3.pdf) [slides] [[video](https://www.youtube.com/watch?v=N8avvE_neV0)] |
| 733 | 660 | ||
| 734 | https://github.com/nccgroup/TriforceLinuxSyscallFuzzer | 661 | [2020: "Linux kernel heap quarantine versus use-after-free exploits" by Alexander Popov](https://a13xp0p0v.github.io/2020/11/30/slab-quarantine.html) [article] |
| 735 | 662 | ||
| 736 | https://github.com/oracle/kernel-fuzzing | 663 | [2020: "State of Linux kernel security" by Dmitry Vyukov](https://github.com/ossf/wg-securing-critical-projects/blob/main/presentations/The_state_of_the_Linux_kernel_security.pdf) [slides] [[video](https://www.youtube.com/watch?v=PGwFyzh2KTA&t=1233)] |
| 737 | 664 | ||
| 738 | https://github.com/rgbkrk/iknowthis | 665 | [2020: "LKRG IN A NUTSHELL" by Adam Zabrocki at OSTconf](https://www.openwall.com/presentations/OSTconf2020-LKRG-In-A-Nutshell/OSTconf2020-LKRG-In-A-Nutshell.pdf) [slides] |
| 739 | 666 | ||
| 740 | https://github.com/schumilo/vUSBf | 667 | [2020: "Following the Linux Kernel Defence Map" by Alexander Popov at Linux Plumbers](https://linuxplumbersconf.org/event/7/contributions/775/attachments/610/1096/Following_the_Linux_Kernel_Defence_Map.pdf) [slides] [[video](https://www.youtube.com/watch?v=4c01jjbQmBc&t=8555)] |
| 741 | 668 | ||
| 742 | https://github.com/ucsb-seclab/difuze | 669 | [2020: "Memory Tagging for the Kernel: Tag-Based KASAN" by Andrey Konovalov](https://docs.google.com/presentation/d/10V_msbtEap9dNerKvTrRAzvfzYdrQFC8e2NYHCZYJDE/edit?usp=sharing) [slides] [[video](https://www.youtube.com/watch?v=f-Rm7JFsJGI)] |
| 743 | 670 | ||
| 744 | https://github.com/compsec-snu/razzer [race-condition] | 671 | [2020: "10 Years of Linux Security - A Report Card" by Bradley Spengler](https://grsecurity.net/10_years_of_linux_security.pdf) [slides] [[video](https://www.youtube.com/watch?v=F_Kza6fdkSU)] |
| 745 | 672 | ||
| 746 | https://github.com/fgsect/unicorefuzz | 673 | [2020: "Control Flow Integrity in the Linux Kernel" by Kees Cook at linux.conf.au](https://outflux.net/slides/2020/lca/cfi.pdf) [slides] [[video](https://www.youtube.com/watch?v=0Bj6W7qrOOI)] |
| 747 | 674 | ||
| 748 | https://github.com/shankarapailoor/moonshine [corpus-generation] | 675 | [2019: "Camouflage: Hardware-assisted CFI for the ARM Linux kernel"](https://arxiv.org/pdf/1912.04145v1.pdf) [paper] |
| 749 | 676 | ||
| 750 | https://github.com/SunHao-0/healer | 677 | [2019: "A New Proposal for Protecting Kernel Data Memory" by Igor Stoppa at Linux Security Summit EU](https://www.youtube.com/watch?v=nPH2sQAD6RY) [video] |
| 751 | 678 | ||
| 752 | https://github.com/atrosinenko/kbdysch | 679 | [2019: "Control-Flow Integrity for the Linux kernel: A Security Evaluation" by Federico Manuel Bento](http://www.alunos.dcc.fc.up.pt/~up201407890/Thesis.pdf) [thesis] |
| 753 | 680 | ||
| 754 | https://github.com/intel/kernel-fuzzer-for-xen-project | 681 | [2019: "Kernel Self-Protection Project" by Kees Cook](https://outflux.net/slides/2019/lss/kspp.pdf) [slides] |
| 682 | |||
| 683 | [2019: "Touch but don’t look - Running the Kernel in Execute-only memory" by Rick Edgecombe](https://linuxplumbersconf.org/event/4/contributions/283/attachments/357/588/Touch_but_dont_look__Running_the_kernel_in_execute_only_memory-presented.pdf) [slides] | ||
| 684 | |||
| 685 | [2019: "Breaking and Protecting Linux Kernel Stack" by Elena Reshetova](https://www.youtube.com/watch?v=FacpjoQbMhU) [video] | ||
| 686 | |||
| 687 | [2019: "Making C Less Dangerous in the Linux Kernel" by Kees Cook](https://outflux.net/slides/2019/lca/danger.pdf) [slides] | ||
| 688 | |||
| 689 | [2019: "Mitigation for the Kernel Space Mirroring Attack (内核镜像攻击的缓解措施)"](http://c0reteam.org/2019/01/02/ksma) [article] | ||
| 690 | |||
| 691 | [2018: "The State of Kernel Self Protection" by Kees Cook](https://outflux.net/slides/2018/lss/kspp.pdf) [slides] | ||
| 692 | |||
| 693 | [2018: "Android Kernel Control Flow Integrity Analysis (分析)"](http://c0reteam.org/2018/09/17/kcfi) [article] | ||
| 694 | |||
| 695 | [2018: "Overview and Recent Developments: Kernel Self-Protection Project" by Kees Cook](https://outflux.net/slides/2018/lss-eu/kspp.pdf) [slides] | ||
| 696 | |||
| 697 | [2018: "The Last Man Standing: The Only Practical, Lightweight and Hypervisor-Based Kernel Protector Struggling with the Real World Alone" by Seunghun Han at beVX](https://github.com/kkamagui/papers/blob/master/bevx-2018/presentation.pdf) [video] | ||
| 698 | |||
| 699 | [2018: "Linux Kernel Runtime Guard (LKRG) under the hood" by Adam Zabrocki at CONFidence](https://www.openwall.com/presentations/CONFidence2018-LKRG-Under-The-Hood/CONFidence2018-LKRG-Under-The-Hood.pdf) [slides, [video](https://www.youtube.com/watch?v=tOiPM692DOM)] | ||
| 700 | |||
| 701 | [2018: "GuardION: Practical Mitigation of DMA-based Rowhammer Attacks on ARM"](https://vvdveen.com/publications/dimva2018.pdf) [paper] | ||
| 702 | |||
| 703 | [2018: "kR^X: Comprehensive Kernel Protection Against Just-In-Time Code Reuse" at BlackHat](https://www.youtube.com/watch?v=L-3eCmZ8s3A) [video] | ||
| 704 | |||
| 705 | [2018: "KASR: A Reliable and Practical Approach to Attack Surface Reduction of Commodity OS Kernels"](https://arxiv.org/pdf/1802.07062.pdf) [paper] | ||
| 706 | |||
| 707 | [2018: "The State of Kernel Self Protection" by Kees Cook at Linux Conf AU](https://outflux.net/slides/2018/lca/kspp.pdf) [slides] | ||
| 708 | |||
| 709 | [2017: "kR^X: Comprehensive Kernel Protection against Just-In-Time Code Reuse"](https://cs.brown.edu/~vpk/papers/krx.eurosys17.pdf) [paper] | ||
| 710 | |||
| 711 | [2017: "How STACKLEAK improves Linux kernel security" by Alexander Popov at Linux Piter](https://linuxpiter.com/system/attachments/files/000/001/376/original/Alexander_Popov_LinuxPiter2017.pdf) [slides] | ||
| 712 | |||
| 713 | [2017: "Shadow-Box: The Practical and Omnipotent Sandbox" by Seunghun Han at HitB](http://conference.hitb.org/hitbsecconf2017ams/materials/D1T2%20-%20Seunghun%20Han%20-%20Shadow-Box%20-%20The%20Practical%20and%20Omnipotent%20Sandbox.pdf) [slides] | ||
| 714 | |||
| 715 | [2017: "Towards Linux Kernel Memory Safety"](https://arxiv.org/pdf/1710.06175.pdf) [paper] | ||
| 716 | |||
| 717 | [2017: "Proposal of a Method to Prevent Privilege Escalation Attacks for Linux Kernel"](https://events.linuxfoundation.org/sites/events/files/slides/nakamura_20170831_1.pdf) [slides] | ||
| 718 | |||
| 719 | [2017: "Linux Kernel Self Protection Project" by Kees Cook](https://outflux.net/slides/2017/lss/kspp.pdf) [slides] | ||
| 720 | |||
| 721 | [2017: "PT-Rand: Practical Mitigation of Data-only Attacks against Page Tables"](https://www.internetsociety.org/sites/default/files/ndss2017_05B-4_Davi_paper.pdf) [paper] | ||
| 722 | |||
| 723 | [2017: "KASLR is Dead: Long Live KASLR"](https://gruss.cc/files/kaiser.pdf) [paper] | ||
| 724 | |||
| 725 | [2017: "Honey, I shrunk the attack surface – Adventures in Android security hardening" by Nick Kralevich](https://www.youtube.com/watch?v=ITL6VHOFQj8) [video] | ||
| 726 | |||
| 727 | [2017: "Fine Grained Control-Flow Integrity for The Linux Kernel" by Sandro Rigo, Michalis Polychronakis, Vasileios Kemerlis](https://www.blackhat.com/docs/asia-17/materials/asia-17-Moreira-Drop-The-Rop-Fine-Grained-Control-Flow-Integrity-For-The-Linux-Kernel.pdf) [slides] | ||
| 728 | |||
| 729 | [2016: "Thwarting unknown bugs: hardening features in the mainline Linux kernel" by Mark Rutland](https://events.static.linuxfound.org/sites/events/files/slides/slides_21.pdf) [slides] | ||
| 730 | |||
| 731 | [2016: "Emerging Defense in Android Kernel" by James Fang](http://keenlab.tencent.com/en/2016/06/01/Emerging-Defense-in-Android-Kernel/) [article] | ||
| 732 | |||
| 733 | [2016: "Randomizing the Linux kernel heap freelists" by Thomas Garnier](https://medium.com/@mxatone/randomizing-the-linux-kernel-heap-freelists-b899bb99c767#.3csq8t23s) [article] | ||
| 734 | |||
| 735 | [2015: "RAP: RIP ROP"](https://pax.grsecurity.net/docs/PaXTeam-H2HC15-RAP-RIP-ROP.pdf) [slides] | ||
| 736 | |||
| 737 | [2015: "Protecting Commodity Operating Systems through Strong Kernel Isolation" by Vasileios Kemerlis](http://www.cs.columbia.edu/~angelos/Papers/theses/vpk_thesis.pdf) [paper] | ||
| 738 | |||
| 739 | [2014: "Kernel Self-Protection through Quantified Attack Surface Reduction" by Anil Kurmus](https://publikationsserver.tu-braunschweig.de/servlets/MCRFileNodeServlet/digibib_derivate_00036154/Diss_Kurmus_Anil.pdf) [paper] | ||
| 740 | |||
| 741 | [2013: "KASLR: An Exercise in Cargo Cult Security" by Brad Spengler](https://forums.grsecurity.net/viewtopic.php?f=7&t=3367) [article] | ||
| 742 | |||
| 743 | [2012: "How do I mitigate against NULL pointer dereference vulnerabilities?" by RedHat](https://access.redhat.com/articles/20484) [article] | ||
| 744 | |||
| 745 | [2011: "Linux kernel vulnerabilities: State-of-the-art defenses and open problems"](https://pdos.csail.mit.edu/papers/chen-kbugs.pdf) [paper] | ||
| 746 | |||
| 747 | [2009: "Linux Kernel Heap Tampering Detection" by Larry Highsmith](http://phrack.org/archives/issues/66/15.txt) [article] | ||
| 755 | 748 | ||
| 756 | 749 | ||
| 757 | ## Exploits | 750 | ## Exploits |
| @@ -839,6 +832,39 @@ https://github.com/scannells/exploits/tree/master/CVE-2020-27194 | |||
| 839 | 832 | ||
| 840 | ## Tools | 833 | ## Tools |
| 841 | 834 | ||
| 835 | ### Fuzzers | ||
| 836 | |||
| 837 | https://github.com/google/syzkaller | ||
| 838 | |||
| 839 | https://github.com/kernelslacker/trinity | ||
| 840 | |||
| 841 | http://web.eece.maine.edu/~vweaver/projects/perf_events/fuzzer/ | ||
| 842 | |||
| 843 | https://github.com/nccgroup/TriforceLinuxSyscallFuzzer | ||
| 844 | |||
| 845 | https://github.com/oracle/kernel-fuzzing | ||
| 846 | |||
| 847 | https://github.com/rgbkrk/iknowthis | ||
| 848 | |||
| 849 | https://github.com/schumilo/vUSBf | ||
| 850 | |||
| 851 | https://github.com/ucsb-seclab/difuze | ||
| 852 | |||
| 853 | https://github.com/compsec-snu/razzer [race-condition] | ||
| 854 | |||
| 855 | https://github.com/fgsect/unicorefuzz | ||
| 856 | |||
| 857 | https://github.com/SunHao-0/healer | ||
| 858 | |||
| 859 | https://github.com/atrosinenko/kbdysch | ||
| 860 | |||
| 861 | https://github.com/intel/kernel-fuzzer-for-xen-project | ||
| 862 | |||
| 863 | https://github.com/IntelLabs/kAFL/ | ||
| 864 | |||
| 865 | |||
| 866 | ### Assorted | ||
| 867 | |||
| 842 | https://github.com/jonoberheide/ksymhunter | 868 | https://github.com/jonoberheide/ksymhunter |
| 843 | 869 | ||
| 844 | https://github.com/jonoberheide/kstructhunter | 870 | https://github.com/jonoberheide/kstructhunter |
| @@ -871,18 +897,23 @@ https://github.com/elfmaster/kdress | |||
| 871 | 897 | ||
| 872 | https://github.com/mephi42/ida-kallsyms/ | 898 | https://github.com/mephi42/ida-kallsyms/ |
| 873 | 899 | ||
| 874 | [[ KASLD ] Kernel Address Space Layout Derandomization](https://github.com/bcoles/kasld) | 900 | [Kernel Address Space Layout Derandomization (KASLD)](https://github.com/bcoles/kasld) |
| 875 | |||
| 876 | https://github.com/IntelLabs/kAFL/ | ||
| 877 | |||
| 878 | https://github.com/securesystemslab/agamotto | ||
| 879 | 901 | ||
| 880 | https://github.com/duasynt/gdb_scripts/ | 902 | https://github.com/duasynt/gdb_scripts/ |
| 881 | 903 | ||
| 882 | https://github.com/evdenis/cvehound | 904 | https://github.com/evdenis/cvehound |
| 883 | 905 | ||
| 884 | 906 | ||
| 885 | ## CTF Tasks | 907 | ## Practice |
| 908 | |||
| 909 | ### Workshops | ||
| 910 | |||
| 911 | [2020: "pwn.college: Module: Kernel Security"](https://pwn.college/modules/kernel) [workshop] | ||
| 912 | |||
| 913 | [2020: "Android Kernel Exploitation" by Ashfaq Ansari](https://github.com/cloudfuzz/android-kernel-exploitation) [workshop] | ||
| 914 | |||
| 915 | |||
| 916 | ### CTF Tasks | ||
| 886 | 917 | ||
| 887 | [github.com/smallkirby/kernelpwn](https://github.com/smallkirby/kernelpwn) | 918 | [github.com/smallkirby/kernelpwn](https://github.com/smallkirby/kernelpwn) |
| 888 | 919 | ||
| @@ -969,53 +1000,46 @@ rwth2011 CTF (ps3game): [writeup](http://mslc.ctf.su/wp/rwth2011-ctf-ps3game/) | |||
| 969 | CSAW CTF 2010: [writeup](https://jon.oberheide.org/blog/2010/11/02/csaw-ctf-kernel-exploitation-challenge/), [source](https://jon.oberheide.org/files/csaw.c), [source and exploit](https://github.com/0x3f97/pwn/tree/master/kernel/csaw-ctf-2010-kernel-exploitation-challenge) | 1000 | CSAW CTF 2010: [writeup](https://jon.oberheide.org/blog/2010/11/02/csaw-ctf-kernel-exploitation-challenge/), [source](https://jon.oberheide.org/files/csaw.c), [source and exploit](https://github.com/0x3f97/pwn/tree/master/kernel/csaw-ctf-2010-kernel-exploitation-challenge) |
| 970 | 1001 | ||
| 971 | 1002 | ||
| 972 | ## Misc | 1003 | ### Other tasks |
| 973 | |||
| 974 | [2020: "Android / Linux SLUB aliasing for general- and special-purpose caches" by Vitaly Nikolenko](https://www.youtube.com/watch?v=5-eRsA0l8Pg) [video] | ||
| 975 | 1004 | ||
| 976 | [pwnable.kr tasks](http://pwnable.kr/play.php) (syscall, rootkit, softmmu, towelroot, kcrc, exynos) | 1005 | [pwnable.kr tasks](http://pwnable.kr/play.php) (syscall, rootkit, softmmu, towelroot, kcrc, exynos) |
| 977 | 1006 | ||
| 978 | [RPISEC kernel labs](https://github.com/RPISEC/MBE/tree/master/src/lab10) | 1007 | https://github.com/ReverseLab/kernel-pwn-challenge |
| 979 | 1008 | ||
| 980 | https://github.com/Fuzion24/AndroidKernelExploitationPlayground | 1009 | https://github.com/R3x/How2Kernel |
| 981 | 1010 | ||
| 982 | https://github.com/ReverseLab/kernel-pwn-challenge | 1011 | |
| 1012 | ### Playgrounds | ||
| 1013 | |||
| 1014 | https://github.com/Fuzion24/AndroidKernelExploitationPlayground | ||
| 983 | 1015 | ||
| 984 | https://github.com/djrbliss/libplayground | 1016 | https://github.com/djrbliss/libplayground |
| 985 | 1017 | ||
| 986 | https://github.com/hackedteam | 1018 | https://github.com/a13xp0p0v/kernel-hack-drill |
| 1019 | |||
| 1020 | https://github.com/pr0cf5/kernel-exploit-practice | ||
| 1021 | |||
| 1022 | |||
| 1023 | ### Infrastructure | ||
| 987 | 1024 | ||
| 988 | https://github.com/mncoppola/Linux-Kernel-CTF | 1025 | https://github.com/mncoppola/Linux-Kernel-CTF |
| 989 | 1026 | ||
| 990 | https://github.com/crowell/old_blog/blob/source/source/_posts/2014-11-24-hosting-a-local-kernel-ctf-challenge.markdown | 1027 | https://github.com/crowell/old_blog/blob/source/source/_posts/2014-11-24-hosting-a-local-kernel-ctf-challenge.markdown |
| 991 | 1028 | ||
| 992 | https://github.com/ukanth/afwall/wiki/Kernel-security | ||
| 993 | 1029 | ||
| 994 | https://github.com/a13xp0p0v/linux-kernel-defence-map | 1030 | ## Misc |
| 995 | 1031 | ||
| 996 | https://github.com/kmcallister/alameda | 1032 | [2020: "Android / Linux SLUB aliasing for general- and special-purpose caches" by Vitaly Nikolenko](https://www.youtube.com/watch?v=5-eRsA0l8Pg) [video] |
| 997 | 1033 | ||
| 998 | https://github.com/01org/jit-spray-poc-for-ksp | 1034 | https://github.com/hackedteam |
| 999 | 1035 | ||
| 1000 | https://forums.grsecurity.net/viewforum.php?f=7 | 1036 | https://forums.grsecurity.net/viewforum.php?f=7 |
| 1001 | 1037 | ||
| 1002 | https://grsecurity.net/research.php | 1038 | https://grsecurity.net/research.php |
| 1003 | 1039 | ||
| 1004 | https://github.com/yrp604/atc-sources | ||
| 1005 | |||
| 1006 | https://www.linuxkernelcves.com/ | ||
| 1007 | |||
| 1008 | https://github.com/jameshilliard/linux-grsec/ | 1040 | https://github.com/jameshilliard/linux-grsec/ |
| 1009 | 1041 | ||
| 1010 | https://github.com/a13xp0p0v/kernel-hack-drill | 1042 | https://www.youtube.com/c/dayzerosec/videos |
| 1011 | |||
| 1012 | https://github.com/vnik5287/kernel_rop | ||
| 1013 | |||
| 1014 | https://github.com/R3x/How2Kernel | ||
| 1015 | |||
| 1016 | https://www.twitch.tv/dayzerosec/videos?filter=all&sort=time | ||
| 1017 | |||
| 1018 | https://github.com/pr0cf5/kernel-exploit-practice | ||
| 1019 | 1043 | ||
| 1020 | https://github.com/milabs/lkrg-bypass | 1044 | https://github.com/milabs/lkrg-bypass |
| 1021 | 1045 | ||
