我想知道,如果假设我连接了一个不受信任的设备(通过 USB 端口连接到我的系统),我会让我的 Linux 系统面临多大风险?特别是,我担心即使我会编写udev
规则来阻止除特定设备(即白名单方法)之外的任何东西,内核还是容易受到攻击?
udev 是否有能力阻止内核(假设它是模块化的)加载通常作为与 USB 设备交互的方式加载的模块?
我想知道,如果假设我连接了一个不受信任的设备(通过 USB 端口连接到我的系统),我会让我的 Linux 系统面临多大风险?特别是,我担心即使我会编写udev
规则来阻止除特定设备(即白名单方法)之外的任何东西,内核还是容易受到攻击?
udev 是否有能力阻止内核(假设它是模块化的)加载通常作为与 USB 设备交互的方式加载的模块?
内核能够使用USB 授权框架保护自己免受 USB 设备的影响。您可以在启动时禁用所有主机:
甚至完全禁用授权,在处理设备之前,通过传递
usbcore.authorized_default=0
内核命令行(只需确保您的udev
规则启用您需要启动的任何 USB 设备,例如您的键盘)。完成后,连接 USB 设备将不会加载任何新模块或创建任何新设备。要启用新的 USB 设备,您必须手动对其进行授权,然后手动触发驱动程序探测(有关详细信息,请参阅文档)。