Linux kernel security is a very complex topic.
There are many concepts that have interesting relationships with each other:
- Vulnerability classes
- Exploitation techniques
- Bug detection mechanisms
- Defence technologies
Some defence technologies are provided by the Linux kernel mainline. Others are going out‑of‑tree for various reasons (some of them are commercial, for example). Moreover, there are kernel defences that depend on special hardware features.
It would be convenient to have a graphical representation of Linux kernel security. That's why I have created a Linux Kernel Defence Map showing the relationships between all these concepts.
The node connections don't mean "full mitigation." Rather, each connection represents some kind of relationship. So the Linux Kernel Defence Map should help to navigate the documentation and Linux kernel sources. It also provides the Common Weakness Enumeration (CWE) numbers for vulnerability classes.
This map describes kernel security hardening. It doesn't cover cutting attack surface, userspace security features and policies enforced by various Linux Security Modules (LSM).
- At GitHub https://github.com/a13xp0p0v/linux-kernel-defence-map
- At Codeberg: https://codeberg.org/a13xp0p0v/linux-kernel-defence-map (go there if something goes wrong with GitHub)
- At GitFlic: https://gitflic.ru/project/a13xp0p0v/linux-kernel-defence-map
This map is written in the DOT language, which makes maintenance and updating in Git very convenient.
License: GPL-3.0.
The diagram is generated using GraphViz with the following command:
dot -Tsvg linux-kernel-defence-map.dot -o linux-kernel-defence-map.svg
So there are plenty of security hardening options in the Linux kernel. A lot of them are not enabled by the major distros. We have to configure these options ourselves to make our systems more secure.
But nobody likes verifying configs manually. So I've created the kernel-hardening-checker that checks security hardening options of the Linux kernel. You are welcome to try it.
-
The State of Kernel Self Protection by Kees Cook
-
Linux kernel security documentation
-
Linux kernel mitigation checklist by Shawn C
-
Trends, challenge, and shifts in software vulnerability mitigation by MSRC
-
Pursuing Durable Safety for Systems Software by Matt Miller
-
A Decade of Linux Kernel Vulnerabilities, their Mitigation and Open Problems by Abhilash Raj
-
Spectre & Meltdown Checker by Stéphane Lesimple