在 Ubuntu 中禁用锁定保护以远程绕过 UEFI 安全启动的方法

安德烈·科诺瓦洛夫(Google) 发表 远程禁用保护的方法 锁定Ubuntu 附带的 Linux 内核包中提供(理论上建议的技术 适用于 Fedora 和其他发行版的内核,但未经测试)。

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

Lockdown 机制最近被添加到主 Linux 内核中 5.4,但在发行版提供的内核中,它仍然以补丁的形式实现或补充补丁。 分发包中提供的附加组件与内核中内置的实现之间的区别之一是,如果您可以物理访问系统,则可以禁用所提供的锁定。

在 Ubuntu 和 Fedora 中,提供了组合键 Alt+SysRq+X 来禁用锁定。 据了解,Alt+SysRq+X 组合只能用于对设备的物理访问,在远程黑客攻击并获得 root 访问权限的情况下,攻击者将无法禁用 Lockdown,例如加载带有未数字签名到内核的 rootkit 的模块。

安德烈·科诺瓦洛夫 (Andrey Konovalov) 表明,基于键盘的方法来确认用户的实际存在是无效的。 禁用锁定的最简单方法是以编程方式 模拟 通过 /dev/uinput 按 Alt+SysRq+X,但此选项最初被阻止。 同时,还可以确定至少另外两种替代方法 Alt+SysRq+X。

第一种方法涉及使用“sysrq-trigger”接口 - 要模拟它,只需通过向 /proc/sys/kernel/sysrq 写入“1”来启用该接口,然后向 /proc/sysrq-trigger 写入“x”。 说漏洞 被淘汰 在 31 月的 Ubuntu 内核更新和 Fedora XNUMX 中。值得注意的是,开发人员(如 /dev/uinput 的情况)最初 尝试 阻止此方法,但阻止不起作用,因为 错误 在代码中。

第二种方法涉及键盘模拟 优盘/网络 然后从虚拟键盘发送序列 Alt+SysRq+X。 Ubuntu 附带的 USB/IP 内核默认启用(CONFIG_USBIP_VHCI_HCD=m 和 CONFIG_USBIP_CORE=m),并提供操作所需的数字签名 usbip_core 和 vhci_hcd 模块。 攻击者可以 创建 虚拟USB设备, 通过运行 环回接口上的网络处理程序,并使用 USB/IP 将其连接为远程 USB 设备。 关于指定方法 报告 Ubuntu 开发人员,但尚未发布修复程序。

来源: opennet.ru

添加评论