红联Linux门户
Linux协助

LKRG:用于运转时完好性检查的可加载内核模块

发布时刻:2018-03-19 16:05:09来历:linux.cn作者:qhwdw
开源社区的人们正在致力于一个 Linux 内核的新项目,它能够让内核更安全。命名为 Linux 内核运转时防护(LKRG),它是一个在 Linux 内核履行运转时完好性检查的可加载内核模块(LKM)。
它的用处是检测对 Linux 内核的已知的或不知道的安全缝隙运用妄图,以及去阻挠这种进犯妄图。
LKRG 也能够检测正在运转的进程的提权行为,在缝隙运用代码运转之前杀掉这个运转进程。
 
这个项目开发始于 2011 年,首个版别现已发布
因为这个项目开发的较早,LKRG 的当时版别只是是经过内核音讯去陈述违背内核完好性的行为,可是跟着这个项目的老练,将会布置一个完好的缝隙运用缓减体系。
LKRG 的成员 Alexander Peslyak 解说说,这个项目从 2011 年发动,而且 LKRG 现现已历了一个“从头开发"阶段。
LKRG 的首个揭露版别是 LKRG v0.0,它现在能够从 http://www.openwall.com/lkrg/ 页面下载运用。http://openwall.info/wiki/p_lkrg/Main 是这个项目的维基,为支撑这个项目,它也有一个 Patreon 页面(https://www.patreon.com/p_lkrg)。
虽然 LKRG 仍然是一个开源项目,LKRG 的保护者也方案做一个 LKRG Pro 版别,这个版别将包含一个专用的 LKRG 发行版,它将支撑对特定缝隙运用的检测,比方,容器走漏。开发团队方案从 LKRG Pro 基金中提取部分资金用于确保项目的剩下作业。
 
LKRG 是一个内核模块而不是一个补丁。
一个相似的项目是附加内核监视器(AKO),可是 LKRG 与 AKO 是不相同的,因为 LKRG 是一个内核加载模块而不是一个补丁。LKRG 开发团队决议将它规划为一个内核模块是因为,在内核上打补丁对安全性、体系稳定性以及功能都有很直接的影响。
而以内核模块的办法供给,能够在每个体系上更简略布置 LKRG,而不必去修正中心的内核代码,修正中心的内核代码十分杂乱而且很简略犯错。
LKRG 内核模块在现在干流的 Linux 发行版上都能够运用,比方,RHEL7、OpenVZ 7、Virtuozzo 7、以及 Ubuntu 16.04 到最新的主线版别。
 
它并非是一个完美的处理方案
LKRG 的创建者正告用户,他们并不认为 LKRG 是一个完美的处理方案,它供给不了坚不可摧和 100% 的安全。他们说,LKRG 是 “规划为可旁通的”,而且只是供给了“多元化安全” 的一个方面。
虽然 LKRG 能够防护许多已有的 Linux 内核缝隙运用,而且也有可能会防护将来许多的(包含不知道的)未特意规划去绕过 LKRG 的安全缝隙运用。它是规划为可旁通的(虽然有时候是以更杂乱和/或低可运用为价值的)。因而,他们说 LKRG 经过多元化供给安全,就像运转一个不常见的操作体系内核相同,也就不会有实在运转一个不常见的操作体系的可用性坏处。
LKRG 有点像根据 Windows 的防病毒软件,它也是作业于内核等级去检测缝隙运用和歹意软件。可是,LKRG 团队说,他们的产品比防病毒软件以及其它终端安全软件愈加安全,因为它的根底代码量比较小,所以在内核等级引进新 bug 和缝隙的可能性就更小。
 
运转当时版别的 LKRG 大约会带来 6.5% 的功能丢失
Peslyak 说 LKRG 是十分适用于 Linux 机器的,它在修补内核的安全缝隙后不需求重发动机器。LKRG 答应用户继续运转带有安全措施的机器,直到在一个方案的保护窗口中测验和布置要害的安全补丁停止。
经测验显现,装置 LKRG v0.0 后大约会发生 6.5% 功能影响,可是,Peslyak 说将在后续的开发中继续下降这种影响。
测验也显现,LKRG 检测到了 CVE-2014-9322 (BadIRET)、CVE-2017-5123 (waitid(2) missing access_ok)、以及 CVE-2017-6074 (use-after-free in DCCP protocol) 的缝隙运用妄图,可是没有检测到 CVE-2016-5195 (Dirty COW) 的缝隙运用妄图。开发团队说,因为前面说到的“可旁通”的规划战略,LKRG 没有检测到 Dirty COW 提权进犯。
在 Dirty COW 的测验事例中,因为 bug 机制的原因,使得 LKRG 发生了 “旁通”,而且这也是一种运用办法,它也是将来相似的以用户空间为方针的绕过 LKRG 的一种办法。这样的缝隙运用是否会是一般状况(不太可能!除非 LKRG 或许相似机制的软件流行起来),以及对它的可用性的(负面的)影响是什么?(关于那些直接方针是用户空间的内核缝隙来说,这不太重要,也并不简略)。
 
64位Ubuntu14.04体系下加载内核模块hello world:http://www.138comgov138.com/linux/30594.html
Linux 4.10.0+内核编译(Mac+VM+Ubuntu)及编译装置内核模块:http://www.138comgov138.com/linux/28811.html
linux kernel编译内核模块代码刺进内核模块遇到的问题和处理:http://www.138comgov138.com/linux/28515.html
《linux内核规划与剖析》内核模块编程:http://www.138comgov138.com/linux/20915.html
我的第一个内核模块和makefile文件编写:http://www.138comgov138.com/linux/14210.html