Intel ME(管理引擎) 固件需要不时更新。遗憾的是,更新工具通常仅作为 Windows 可执行文件提供。Linux 用户的一些现有解决方法如下:
- Linux 版本的
FWUpdLcl
更新工具可在 WinRAID 论坛中获取,但这是一个非官方来源,因此很难完全确定这些可执行文件的安全性和适用性。 - Windows PE(预安装环境) 可以从 USB 拇指驱动器启动,并在其中运行官方更新实用程序。 这样做的问题是专有软件将能够访问您的驱动器、网络等,而这可能是您不希望的。
有没有什么方法可以更新英特尔 ME 固件而不危及我的计算机的安全?
使用 PCI 直通在虚拟机中运行 WinPE
更新 Intel ME 固件的一种方法是在虚拟机中运行 Windows PE(预安装环境),并让其访问主机上的 Intel ME 接口 (MEI / HECI) PCI 设备。然后可以从此环境中更新 Intel ME 固件。
该解决方案的特点:
警告:专有软件将有权访问 Intel ME 接口 (MEI/HECI)。目前尚不清楚这会为系统提供何种访问权限,但它可能会授予对 RAM 和任何处于解锁状态的加密驱动器的访问权限,因为这是 Intel ME 对系统的访问级别。因此,此解决方案可能比在裸机上运行 Windows 映像更不安全,因为在这种情况下驱动器不会处于解锁状态。使用风险自负。不过, EFF文章中的这段话可能与此相关:“AMT 访问与运行任意 ME 代码不同,因此攻击者无法直接访问系统内存;他们必须使用控制台、VNC 或启动操作系统映像来实现他们的目标。”一种解决方法可能是从 USB 拇指驱动器启动 Ubuntu 并在那里的虚拟机中运行 WinPE。
这里介绍的解决方案已经在搭载 Ubuntu 24.04 的 ASUS Pro WS W680-ACE 主板上进行了测试。
制作 Windows PE 映像
下载必要的文件
准备文件(示例)
制作图像
为了让 virt-manager 能够访问映像,映像的父目录需要特定的权限设置,因此 make-winpe 脚本会创建一个所有人都可读的 /tmp/iso 目录并将映像放在那里。
在虚拟机中运行映像
在 virt-manager 中设置虚拟机:
FWUpdLcl64.exe 在 virt-manager 中的 WinPE 中运行的屏幕截图
文件
制作winpe
该脚本基于https://wiki.archlinux.org/title/Windows_PE。
启动脚本
将文件转换为 DOS 格式 (CRLF):
覆盖/README.txt
将文件转换为 DOS 格式 (CRLF):