在 2023 年 1 月,就有人試圖禁用微軟 協議的內核驅動程序。遠程網絡驅動程序接口規范(RNDIS)是這一協議的安全隱患所在,它建立在 USB 虛擬以太網功能之上。今年晚些時候,有人再次嘗試在 Linux 上禁用 RNDIS,但沒有成功。最近幾天,似乎又有人試圖禁用 RNDIS 驅動程序支持。
遠程 NDIS (RNDIS) 是微軟開發的用于為連接到 USB 總線的網絡設備編寫 NDIS 微型端口設備驅動程序。 遠程 NDIS 通過定義與總線無關的消息集并描述此消息集如何在 USB 總線上運行來實現此目的。 由于此遠程 NDIS 接口是標準化的,因此一組主機驅動程序可以支持連接到 USB 總線的任意數量的網絡設備。
最近幾天,Greg Kroah-Hartman 恢復了他的"rndis-removal"分支,作為 USB 子系統 Git 樹的一部分。雖然現階段并不是真正"移除"RNDIS,而只是修改 Kconfig 以防止驅動程序被輕易編譯。一旦該分支進入 Linux 內核主線,幾個月后如果沒有問題,就可以從 Linux 內核中實際刪除 RNDIS 驅動程序。
補丁說明中對這一改動的描述依然如故:
"微軟的 RNDIS 協議在設計上是不安全的,在任何與不信任的主機或設備一起使用該協議的系統上都存在漏洞。 因為該協議不可能做到安全,所以只需禁用所有 RNDIS 驅動程序,以防止任何人再次使用它們。Windows 只有 XP 及更新版本的系統需要這樣做,比它更早的 Windows 系統可以使用普通的 USB 類協議,而這些協議不存在這些問題。
Android 已禁用該協議多年,所以應該不會有真正的系統仍然需要這樣做了。"
考慮到時間因素,我們將拭目以待rndis-removal 代碼是否會在即將到來的 Linux v6.9 內核合并窗口中提交,以嘗試將這些老化的代碼從內核中移除。
出品|開源中國
在下一個 Linux 內核周期中,上游可能會出于安全考慮禁用對 Microsoft 遠程網絡驅動程序接口規范 (RNDIS) 協議的驅動程序支持。
RNDIS 是 Microsoft 在 USB 上用于虛擬以太網功能的專有協議。但該 RNDIS 協議在設計之初對安全性的考慮不足,有可能將系統連接到不受信任的主機或設備,導致系統不安全和易受攻擊。 Windows 只對 XP 之后的系統更新該協議,舊的 Windows 系統可以使用普通的 USB 類協議來代替。而 Windows 之外的其它系統對 RNDIS 的支持參差不齊,因此 RNDIS 目前并未在跨平臺環境中廣泛使用。
Android 已經禁用該協議很多年了,目前應該沒有其他系統真正需要該 RNDIS 協議。并且出于安全考慮,上游 Linux 內核正在將 RNDIS 內核驅動程序移到 “BROKEN” Kconfig 選項后面,以便在未來的內核構建中禁用它們。一旦被標記為 “BROKEN” 一段時間,RNDIS 驅動程序最終可能會從上游源代碼樹中刪除。
Greg Kroah-Hartman 周一創建了 usb.git rndis-removal 分支,他在其中禁用了所有 RNDIS 協議驅動程序。等該補丁順利提交,Microsoft RNDIS 協議支持將徹底退出 Linux 內核。