10-14-2021, 12:23 AM
前几天从破烂堆里回收来的一台E130,自带的是Realtek 8188CE(螃蟹卡中最弱的型号之一)。我先后在该机上测试了Trisquel 10和Debian testing,发现该卡在这两种不含私有固件的发行版上都能工作。由于已知该卡(如同绝大多数非Atheros卡一样)依赖私有固件,而操作系统中又不含私有固件,唯一的可能就是该固件存在于卡上某处(非易失性存储器),它被加载到了该卡上的外设专用内存,并且被该卡上的专用处理器运行。
由于PCI/e外设具有DMA能力,因此它们的私有固件极其危险(尤其是像无线网卡这样具有通讯能力的)。详情参见Hardened Linux翻译项目中的一篇关于外设固件的威胁的博士论文中译版。本人近日向相关发行版反映过此问题,得到的答复大致都是该固件属于不可变的“电路式”固件,因而允许加载其自带固件并未违反FSF相关指导原则(RMS本人于多年前将储存于外设中的只读存储器中的固件看作“电路”)。
本人的问题是,对于具有DMA能力的恶意硬件(非自由设计的硬件,例如非Atheros无线网卡),假设该硬件本体上的某个非易失性存储器中保存了一份固件镜像,它是否真的可以看作“电路”,即它是否为真正不可变的,或者该非易失性存储器是否真正为完全只读的,运行于主机CPU上的操作系统及其上的各种安全机制无法得知。本人认为既然私有固件厂商不能自证清白,用户就只能将其看作恶意并且极端危险的。
这会带来其他潜在问题,例如其他硬件厂商可以效仿,将私有固件置于硬件本体之上的某个并非完全只读的非易失性存储器之中,然后借助DMA进行偷偷更新(以及进行各种其他攻击)。另外如果大多数私有硬件厂商都采取这种策略,并且所谓自由的GNU/Linux发行版仍然放行此类固件,这些自由发行版对于私有固件的拒绝是否还有意义等问题都有待探讨。
当然也可根据外设的危险程度进行分类,例如严格禁止PCI/e外设自带的私有固件被加载,但是对于不具备DMA能力的USB外设(例如蓝牙控制器)则可适当放宽。
本人持续关注各方回应,同时欢迎各位就此问题进行讨论。
由于PCI/e外设具有DMA能力,因此它们的私有固件极其危险(尤其是像无线网卡这样具有通讯能力的)。详情参见Hardened Linux翻译项目中的一篇关于外设固件的威胁的博士论文中译版。本人近日向相关发行版反映过此问题,得到的答复大致都是该固件属于不可变的“电路式”固件,因而允许加载其自带固件并未违反FSF相关指导原则(RMS本人于多年前将储存于外设中的只读存储器中的固件看作“电路”)。
本人的问题是,对于具有DMA能力的恶意硬件(非自由设计的硬件,例如非Atheros无线网卡),假设该硬件本体上的某个非易失性存储器中保存了一份固件镜像,它是否真的可以看作“电路”,即它是否为真正不可变的,或者该非易失性存储器是否真正为完全只读的,运行于主机CPU上的操作系统及其上的各种安全机制无法得知。本人认为既然私有固件厂商不能自证清白,用户就只能将其看作恶意并且极端危险的。
这会带来其他潜在问题,例如其他硬件厂商可以效仿,将私有固件置于硬件本体之上的某个并非完全只读的非易失性存储器之中,然后借助DMA进行偷偷更新(以及进行各种其他攻击)。另外如果大多数私有硬件厂商都采取这种策略,并且所谓自由的GNU/Linux发行版仍然放行此类固件,这些自由发行版对于私有固件的拒绝是否还有意义等问题都有待探讨。
当然也可根据外设的危险程度进行分类,例如严格禁止PCI/e外设自带的私有固件被加载,但是对于不具备DMA能力的USB外设(例如蓝牙控制器)则可适当放宽。
本人持续关注各方回应,同时欢迎各位就此问题进行讨论。