Linux 5.4 内核收到了限制 root 访问内核内部的补丁

莱纳斯·托瓦兹 接受了 即将发布的 Linux 5.4 内核中包含一组补丁”锁定建议 David Howells(红帽)和 Matthew Garrett(马修加勒特,在 Google 工作)来限制 root 用户对内核的访问。 与锁定相关的功能包含在可选加载的 LSM 模块中(Linux安全模块),这在 UID 0 和内核之间设置了屏障,限制了某些低级功能。

如果攻击者以 root 权限实现代码执行,他可以在内核级别执行代码,例如使用 kexec 替换内核或通过 /dev/kmem 读写内存。 此类活动最明显的后果可能是 车辆改道 UEFI 安全启动或检索存储在内核级别的敏感数据。

最初,root限制功能是在加强验证启动保护的背景下开发的,并且发行版已经使用第三方补丁来阻止绕过UEFI安全启动相当长一段时间了。 同时,由于以下原因,此类限制并未包含在内核的主要构成中: 分歧 他们的实施以及对现有系统破坏的担忧。 “锁定”模块吸收了发行版中已使用的补丁,并以不与 UEFI 安全启动绑定的单独子系统的形式重新设计。

锁定模式限制对 /dev/mem、/dev/kmem、/dev/port、/proc/kcore、debugfs、kprobes 调试模式、mmiotrace、tracefs、BPF、PCMCIA CIS(卡信息结构)、某些 ACPI 接口和 CPU 的访问MSR 寄存器、kexec_file 和 kexec_load 调用被阻止、睡眠模式被禁止、PCI 设备的 DMA 使用受到限制、ACPI 代码从 EFI 变量导入被禁止、
不允许对 I/O 端口进行操作,包括更改串行端口的中断号和 I/O 端口。

默认情况下,锁定模块是不活动的,它是在 kconfig 中指定 SECURITY_LOCKDOWN_LSM 选项时构建的,并通过内核参数“lockdown=”、控制文件“/sys/kernel/security/lockdown”或汇编选项激活 LOCK_DOWN_KERNEL_FORCE_*,可以取值“完整性”和“机密性”。 在第一种情况下,允许从用户空间对正在运行的内核进行更改的功能被阻止,而在第二种情况下,可用于从内核提取敏感信息的功能也被禁用。

值得注意的是,锁定仅限制对内核的标准访问,但不能防止因利用漏洞而进行的修改。 当 Openwall 项目使用漏洞时阻止对正在运行的内核进行更改 发展 独立模块 力克瑞格 (Linux 内核运行时防护)。

来源: opennet.ru

添加评论