Linux cerca di eliminare il protocollo RNDIS notoriamente insicuro di Windows

Linux elimina protocollo RNDIS insicuro di Windows

Il protocollo proprietario di Microsoft, Remote Network Driver Interface Specification (RNDIS), è partito con una buona idea. Sarebbe stato possibile per i produttori di hardware aggiungere il supporto di rete ai dispositivi USB senza doverli costruire da zero. C’era solo un piccolo problema. RNDIS non ha alcuna sicurezza da considerare.

Come ha scritto Greg Kroah-Hartman, il fellow della Linux Foundation responsabile delle versioni stabili del kernel Linux, a novembre 2022 sulla Linux Kernel Mailing List (LKML), “Il protocollo Microsoft RNDIS è, come progettato, insicuro e vulnerabile su qualsiasi sistema che lo utilizza con host o dispositivi non attendibili. Poiché il protocollo è impossibile da rendere sicuro, disabilitate tutti i driver RNDIS per impedire a chiunque di utilizzarli nuovamente”.

Inoltre: I migliori servizi VPN: testati ed esaminati dagli esperti

In un altro messaggio ha aggiunto: “Il protocollo non è mai stato progettato per essere utilizzato con dispositivi non attendibili. È stato creato, e abbiamo implementato il supporto per esso, quando ci fidavamo dei dispositivi USB che collegavamo ai nostri sistemi E ci fidavamo dei sistemi a cui collegavamo i nostri dispositivi USB”.

Questo non è più il caso. Kroah-Hartman ha concluso: “Oggi, con host e dispositivi non attendibili, è tempo di ritirare questo protocollo. Come ho menzionato nei commenti della patch, Android lo ha disabilitato molti anni fa nei loro dispositivi, senza perdita di funzionalità”.

Bene, è abbastanza semplice. Allora perché ne stiamo ancora parlando oggi?

È successo che gli utenti hanno iniziato a preoccuparsi che questo potesse interrompere il supporto di tethering USB di rete. Si scopre che più persone di quanto si possa pensare si connettono in rete tramite dispositivi USB cellulari, Ethernet e Wi-Fi.

Sicurezza? Cos’è quella?

Inoltre: Due trucchi che rendono molto più facile l’uso della riga di comando di Linux

Come ha detto Kroah-Hartman in un messaggio di follow-up sulla LKML a gennaio 2023: “Immagino che i sistemi che utilizzano questo dovranno sempre fidarsi che il dispositivo collegato a loro sia “attendibile”. Sembra un modo facile per ottenere accesso a un sistema “bloccato” se ne hai bisogno”.

Non ha torto. Ci sono ragioni per cui le aziende attente alla sicurezza non consentono dispositivi USB collegati in loco, e questa ne è una.

Ma ora, stanco di avere una falla di sicurezza di Windows integrata in Linux, Kroah-Hartman ha deciso che era abbastanza. Ha disabilitato tutti i driver del protocollo RNDIS nel repository Git di Linux.

Ciò significa che, se si prova a compilare Linux utilizzando questa nuova patch, tutti i driver RNDIS saranno interrotti e non verranno compilati. Questo è un passo prima di eliminare completamente RNDIS da Linux.

Inoltre: I migliori laptop Linux del momento

C’è un altro modo per supportare la connessione di rete tramite USB. Si tratta del protocollo Network Control Model (NCM). Ha il vantaggio di essere sicuro e già supportato in Linux.

Tuttavia, questo approccio preoccupa Maciej Żenczykowski, sviluppatore di rete del kernel Linux di Google. Questo perché CDC-ECM non è ben supportato nei telefoni Android. Gli unici telefoni Android che conosce “che sono passati a NCM invece di RNDIS per il tethering USB sono Google Pixel 6+” e i nuovi smartphone Pixel.

E questo è un problema perché le persone utilizzano i driver RNDIS dei laptop Linux per il tethering USB dai telefoni Android. Quindi, secondo Żenczykowski, “questo interromperà il tethering USB dalla *grande* maggioranza dei telefoni Android, probabilmente inclusi la maggior parte di quelli attualmente in produzione e venduti”.

Quindi, con le preoccupazioni per la sicurezza da una parte e le preoccupazioni per l’interoperabilità dall’altra, cosa succederà? Restate sintonizzati per vedere se questa patch verrà inserita nella finestra di unione del kernel Linux 6.7 e se sarà inclusa nella prossima versione di Linux.