禁用 FireWire 和 Thunderbolt 需固件、内核、模块三重屏蔽:BIOS 关闭接口,添加内核参数(如 thunderbolt.disabled=1、iommu=on),并黑名单相关驱动;仅卸载模块无效,因 DMA 攻击依赖硬件通电、IOMMU 失效及 PCIe 枚举,而非驱动是否存在。

禁用 FireWire 驱动:先确认是否加载,再永久屏蔽
FireWire(IEEE 1394)接口支持 DMA 直连内存,攻击者插入恶意设备可绕过内核直接读写物理内存——firewire_core、ohci1394、sbp2 这几个模块就是关键入口。很多现代 Linux 发行版默认不编译或不加载它们,但不能假设没风险。
先检查是否活跃:lsmod | grep firewire。如果输出非空,说明已加载;再查硬件是否存在:lspci | grep -i firewire 或 lshw -class bus | grep -A5 -B5 firewire。
临时卸载很简单:sudo modprobe -r sbp2 ohci1394 firewire_ohci firewire_core。但重启后可能恢复,所以必须做持久化屏蔽:
- 在
/etc/modprobe.d/blacklist-firewire.conf中写入三行:blacklist firewire_core、blacklist ohci1394、blacklist sbp2 - 执行
sudo update-initramfs -u(Debian/Ubuntu)或sudo dracut --force(RHEL/CentOS/Fedora),确保 initramfs 不含这些模块 - 验证:重启后运行
lsmod | grep firewire,应无任何输出;dmesg | grep -i firewire应只显示“disabled”或“No device found”类信息
禁用 Thunderbolt 驱动与内核支持:不止是卸载模块
雷电接口的 DMA 风险比 FireWire 更严重,因为默认启用 IOMMU 绕过(intel_iommu=off 或 amd_iommu=off 时完全失效),且部分驱动(如 thunderbolt、tbpci)控制着设备枚举和隧道建立。单纯 modprobe -r thunderbolt 不够——PCIe 设备仍可能被识别为普通桥接器,留下 DMA 通道。
正确做法分三层:
-
固件层优先关闭:进 BIOS/UEFI → Advanced → Thunderbolt Configuration,设为
Disabled或Security Level: User Authorization(后者需每次接入时按 F12 确认,比完全禁用稍灵活但仍有风险) -
内核启动参数加固:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX中追加:thunderbolt.disabled=1 intel_iommu=on iommu=pt(Intel 平台)或amd_iommu=on iommu=pt(AMD)。然后运行sudo update-grub && sudo reboot -
运行时双重拦截:即使内核参数生效,仍建议添加模块黑名单 —— 在
/etc/modprobe.d/blacklist-thunderbolt.conf中写入:blacklist thunderbolt、blacklist tbpci、blacklist typec(Type-C 控制芯片常与雷电共用驱动)
验证是否真正失效:lspci -nn | grep -i "thunderbolt\|15d9"(PCI vendor ID 0x8086:0x15d9 是 Intel 雷电控制器)应无结果;cat /sys/bus/thunderbolt/devices 应报 No such file or directory。
为什么只禁驱动不够?DMA 攻击的真实触发条件
很多人以为“卸载 thunderbolt 模块就安全了”,这是典型误区。DMA 攻击成功与否,不取决于你有没有加载驱动,而取决于三个条件是否同时满足:
- 物理接口通电且 PCIe 总线可见(BIOS/UEFI 层未关闭控制器)
- IOMMU 未启用或配置为 passthrough(
iommu=pt仅隔离 VM,不防宿主机 DMA) - 设备完成枚举并获得总线主控权(哪怕没驱动,Linux 内核仍会为其分配 BAR 和 MSI 地址)
也就是说:只要 BIOS 里雷电开着、IOMMU 关着、又插了设备,攻击者用 pcileech 或自定义 FPGA 就能直接 dump 内存——根本不需要你的驱动配合。这也是为什么必须从固件+内核参数+模块三端下手,缺一不可。
容易忽略的兼容性陷阱:Docking Station 和扩展坞
企业环境中常见 Thunderbolt 扩展坞(如 CalDigit TS4、Dell WD22TB4),它们内部有 PCIe switch 芯片,会将雷电信号转成多个 USB、DisplayPort、甚至独立网卡。这类设备即使主机 BIOS 关闭了雷电,也可能因固件 bug 或降级回滚重新激活控制器。
更隐蔽的是:某些扩展坞带“充电+数据”双模 Type-C 口,系统可能识别为 usb 设备,实则底层走雷电隧道。此时 lsusb 看不到异常,但 lspci 可能漏掉隐藏桥接器。
应对策略只有两个:
- 对高安全终端,物理拔除主板上的雷电排线(常见于 Dell Precision、HP Z 系列),或封堵接口(金属胶+防拆标签)
- 若必须用扩展坞,强制启用 Thunderbolt 安全模式(BIOS 中设为
Secure Only),并搭配thunderboltctl工具定期审计:sudo thunderboltctl --authorized查已授权设备,sudo thunderboltctl --unplug清除所有现存连接
真正的物理安全,不是让系统“不认识”设备,而是让设备“根本没机会说话”。驱动屏蔽只是最后一道门闩,前面那堵墙得靠 BIOS 和焊点来砌。











