No-IOMMU 模式与安全边界

No-IOMMU 模式与安全边界

1. 定义

CONFIG_VFIO_NOIOMMU允许无 IOMMU设备复用 VFIO接口,但设备 DMA仍使用主机物理地址,没有内存隔离。

2. 启用

通常还需模块参数允许 unsafe no-IOMMU。使用会 taint kernel,Kconfig明确标记 unsupported。

3. 权限

Core要求高权限,如 CAP_SYS_RAWIO。这只是访问控制,不会让 DMA变安全。

4. 风险

设备或用户程序可:

-读写任意主机 RAM;
-修改内核代码/凭据;
-读取其他进程密钥;
-破坏文件缓存;
-绕过 VM隔离;
-造成不可恢复系统损坏。

5. 不能用于VM安全直通

Kconfig明确说明 no-IOMMU不提供 DMA translation,不能作为安全 VM assignment方案。即便 QEMU能打开接口,也不构成隔离。

6. 适用范围

仅可考虑:

-完全可信、隔离实验机;
-开发原型;
-无 DMA能力设备;
-设备 DMA由外部硬件防火墙限制且经过独立验证。

生产、多租户、联网设备不应启用。

7. 与UIO

No-IOMMU VFIO可能提供更统一 region/IRQ接口,但安全性并不优于未隔离的 UIO DMA。选择接口不能替代威胁模型。

8. RK3588

由于 PCIe root未见 IOMMU映射,启用 no-IOMMU可能看似能让 vfio-pci工作,但这是绕过问题,不是解决问题。

9. 加固

  • kernel config关闭 VFIO_NOIOMMU;
    -禁止 unsafe module parameter;
    -限制 /dev/vfio权限;
    -模块签名;
    -禁用无用 vfio driver;
    -审计 driver_override/bind;
    -监控 kernel taint。

文章互动

阅读 --

留言

0 条留言

正在加载留言…