USB设备攻击,udev能拯救内核吗?

hum*_*ace 4 security usb udev linux-kernel

我想知道,如果假设我连接了一个不受信任的设备(通过 USB 端口连接到我的系统),我的 Linux 系统会面临多大的风险?特别是,我担心即使我会编写udev规则来阻止除(即白名单方法)特定设备之外的任何设备,但内核仍然容易受到攻击吗?

udev 是否​​有能力阻止内核(假设它是模块化的)加载通常作为与 USB 设备交互的方式加载的模块?

Ste*_*itt 6

内核能够使用USB 授权框架保护自身免受 USB 设备的侵害。您可以在启动时禁用所有主机:

\n\n
for host in /sys/bus/usb/devices/usb*\ndo\n    echo 0 > $host/authorized_default\ndone\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者甚至在处理设备之前,通过传递usbcore.authorized_default=0内核命令行来完全禁用授权(只需确保您的udev规则启用您需要启动的任何 USB 设备,例如键盘)。

\n\n

一旦完成,连接 USB 设备将不会加载任何新模块或创建任何新设备。要启用新的 USB 设备,您\xe2\x80\x99 必须手动对其进行授权,然后手动触发驱动程序探测(有关详细信息,请参阅文档)。

\n

  • 是的,@Groovy,文档中的示例不是很好,但它已有十一年历史了。你最好使用 [USBGuard](https://dkopecek.github.io/usbguard/) 之类的东西。 (2认同)
  • @Groovy 是的。我推荐 USBGuard,因为它鼓励交互性;我真正关心的场景是当我“不在”时有人将 USB 设备连接到我的一台计算机时会发生什么。使用文档中的脚本,系统很容易受到攻击;当 USBGuard 设置为始终询问时,他们不会。对于如何处理您“确实”想要使用的设备(除非使用专用隔离系统),没有很好的答案。 (2认同)