经过多年的无数次审查、讨论和代码重写,Linus Torvalds周六批准了Linux内核的一项新安全功能,称为“锁定”,“锁定”模块可限制高特权用户(甚至包括root用户)篡改某些内核功能
这项新功能将作为LSM(Linux安全模块)发布在即将发布的Linux内核5.4版本中,该版本默认情况下处于"锁定"模块是关闭状态。由于存在破坏现有系统的风险,因此使用是可选的。
限制ROOT账户修改某些内核权限
这项新功能的主要功能是通过甚至防止root帐户与内核代码进行交互来加强用户态进程与内核代码之间的鸿沟-到目前为止,这是设计使然的。
启用后,新的“锁定”功能将限制某些内核功能,即使对于root用户也是如此,从而使受感染的root帐户更难于破坏操作系统的其余部分。
谷歌工程师马修·加勒特(Matthew Garrett)说:“锁定模块旨在允许内核在启动过程中尽早被锁定。”
“启用后,各种内核功能都会受到限制,” Linux内核创建者和昨天在模块上获得最终认可的人Linus Torvalds说。
这包括限制对内核功能的访问,这些功能可能允许通过用户级进程提供的代码执行任意代码;阻止进程写入或读取/ dev / mem和/ dev / kmem内存;阻止对打开/ dev / port的访问,以防止原始端口访问;加强内核模块签名;以及更多其他内容,在这里详细介绍。
两种锁定模式
新模块将支持两种锁定模式,即“完整性”和“机密性”。每一个都是唯一的,并限制对不同内核功能的访问。
“如果设置为完整性,将禁用允许用户态修改正在运行的内核的内核功能,” Torvalds说。
“如果设置为机密性,则允许用户态从内核中提取机密信息的内核功能也将被禁用。”
如有必要,还可以在顶部添加其他锁定模式,但这需要在锁定LSM顶部添加外部补丁。
安全模块2010年就开始研究
内核锁定功能的研究始于2010年代初期,由现在的Google工程师Matthew Garrett牵头。
内核锁定功能背后的想法是创建一种安全机制,以防止具有特权的用户(甚至是吹嘘的“ root”帐户)也无法篡改内核的代码。
那时,即使Linux系统采用安全启动机制,恶意软件仍然可以通过某些方式滥用具有特殊提升特权的驱动程序,root帐户和用户帐户来篡改内核代码,从而获得启动持久性和安全性。在受感染系统上的永久立足点。
多年来,许多安全专家一直在问Linux内核支持一种更有效的方式来限制root帐户并提高内核安全性。
在主要的反对来自Torvalds的,谁是功能的最热心的批评者之一,尤其是在它的初期。
结果,许多Linux发行版(例如Red Hat)开发了自己的Linux内核补丁,这些补丁在主线内核之上添加了锁定功能。但是,两党在2018年达成了中间立场,今年在锁定功能方面的工作取得了进展。
Torvalds昨天表示:“大多数主流发行版都已经包含了该补丁集的变体已有很多年了,因此提供不满足所有发行版要求的价值很大,但使我们更接近不需要外部补丁了。”
“依赖于对硬件或内核的低级访问的应用程序可能因此停止工作-因此,如果没有事先进行适当的评估,则不应启用此功能。”