Linux内核保护是一个非常复杂的主题领域。 它包含大量复杂的相互关联的概念,具有图形表示形式将很有用。 因此,我开发
了一个Linux内核保护程序map 。 这是传说:

因此,地图包含以下对象:
- 漏洞类别
- 他们进行攻击的技术;
- 错误检测机制;
- 保护技术。
反过来,核心保护技术是异构的。 有些是Linux vanilla内核的一部分,有些是出于各种原因单独提供的(例如,具有商业安全功能)。 有些内核保护机制需要硬件支持。
因此,Linux内核安全性主题非常广泛,并且已开发的地图有助于其研究和分析。 连接地图上各对象的每一行都表明了它们的相互影响,其实质应在文档中阐明。 可以在总图的一部分上说明此原理。 图1显示了STACKLEAK技术的安全功能。
图1. STACKLEAK技术的安全性功能PAX_MEMORY_STACKLEAK是一种商业Linux内核保护技术,可以抵消以下类型漏洞的利用:深度堆栈溢出,未初始化变量的使用以及信息泄漏到用户空间中。 该映射包含这些漏洞类别的标识符(CWE,常见弱点枚举)。
在Linux vanilla内核中引入了
STACKLEAK技术,该技术已在图中反映出来。 还有一种KMSAN调试机制,可让您在测试内核时检测未初始化变量的使用以及信息向用户空间的泄漏。
值得注意的是,该卡无法解决减少内核的攻击范围的问题。 实际上,禁用几乎所有可减小可执行文件大小的功能,也会减小攻击范围。 在此项目中,主要重点是安全工具,这些工具可提供Linux内核的自防御功能,以防止利用漏洞。
图2显示了内核版本5.1的完整图(单击该图像将打开完整大小)。
图2. Linux v5.1内核安全性功能图该地图在不断发展,至少每个内核版本都需要更新。 因此,以文本形式获得源并将其维护在版本控制系统中非常方便。 另外,为了不必手动布置具有最少数量的连接交点的对象,选择了DOT语言来创建地图,并且该方案由GraphViz软件包使用以下命令自动生成:
dot -Tsvg linux-kernel-defence-map.dot -o linux-kernel-defence-map.svg
Linux Kernel Security Card是根据GPL v3.0许可的开源项目。 该存储库位于
GitHub上 。 该项目对以下方面非常有用:
- 监视内核安全性的当前状态,
- 开发基于GNU / Linux的IP威胁模型,
- 选择适当的补救措施。
此外,Linux内核安全性功能图旨在帮助您了解有关此主题的源代码,文档和其他信息源:
为了自动验证Linux内核配置文件中的安全选项,我创建了
kconfig-hardened-check项目,该项目由于开放的协作工作而正在积极开发。 该实用程序支持x86_64,arm64,x86_32和arm体系结构。
我邀请您参与
Linux内核安全性功能图和
kconfig-hardened-check实用程序的开发。