FireWire 存在安全问题。但是,如果给定机器上没有任何 FireWire 端口,并且操作系统不支持 FireWire, 比如 OpenBSD ,会发生什么?
我的意思是转换器,例如:
- USB转火线转换器
- pcmcia 到火线转换器
- 等等。
当我们谈论火线转换器时,是否存在任何火线安全问题?
FireWire 存在安全问题。但是,如果给定机器上没有任何 FireWire 端口,并且操作系统不支持 FireWire, 比如 OpenBSD ,会发生什么?
我的意思是转换器,例如:
当我们谈论火线转换器时,是否存在任何火线安全问题?
FireWire 的安全问题来自直接内存访问:FireWire 硬件可以直接读取 RAM 内容,并且(这是关键部分),FireWire 设备可以知道应该读取 RAM 的哪些部分以及何时读取。当然,在正常操作下,FireWire 设备不会读取 RAM,除非机器告诉它这样做;但是恶意的 FireWire 设备可以主动读取所有 RAM 内容,而无需操作系统的命令。事实上,操作系统内核甚至不会意识到这种大量的内存消耗。与另一台计算机一起作为“恶意 FireWire 设备”实现。
FireWire 的这个特性对于非常底层的硬件调试来说是很方便的,但是在安全性方面却有些吓人。
这与 USB 不同,后者可以发生 DMA,但只有在主机系统明确启动时才会发生。设备收到的命令相当于“是的,现在您可以读取大量数据,我已经正确设置了 DMA”,但无法触发 DMA 传输和/或选择 RAM 中的相关地址。
现在对于 FireWire 到 USB 的转换器,事情变得投机,因为它取决于转换器的实现方式。但是,可以设想,当 FireWire 设备请求某个 DMA 时,转换器通过 USB 向机器发送请求,相应的驱动程序代表设备设置 DMA 传输。因此,应该存在相同的安全问题,除非操作系统(通过转换器驱动程序)强制实施一种安全模型,在该模型中,此类 DMA 传输在被授权之前首先经过验证。至少,事情会上升到 CPU 级别,因此操作系统理论上有机会进行干预。不过,我怀疑大多数转换器驱动程序会这样做。
对于 FireWire-to-PCMCIA,DMA 可能直接发生(根本不通过主机 CPU),因为PCMCIA只是 PCI 的热插拔版本,而 PCI 具有完全 DMA 访问权限。转换可以直接在转换器中发生,根本不会影响主机端驱动程序。请注意,您应该假设 FireWire 到 PCMCIA 转换器与原始 FireWire 具有相同的漏洞。
真正可怕的是,在某些操作系统中,即使主机系统被“锁定”(例如根本没有登录用户),只需插入转换器即可触发相关驱动程序的自动下载。
由于两种技术的工作方式,无法在 Firewire 和 USB 之间转换数据流。但是,您可以找到可以为您提供火线连接的 PCMCIA 卡。PCMCIA 不会改变协议的工作方式,因此仍然存在相同的风险。