Linux versucht, Windows’ berüchtigt unsicheres RNDIS-Protokoll zu umgehen.
Schon wieder geht es los: Die Linux-Entwickler versuchen erneut, die Remote Network Driver Interface Specification von Microsoft aus Linux zu entfernen. Hier ist der Grund, warum das so kompliziert ist.
Microsofts proprietäres Protokoll, die Remote Network Driver Interface Specification (RNDIS), entstand aus einer guten Idee heraus. Es sollte Hardware-Herstellern ermöglichen, Netzwerkfunktionen zu USB-Geräten hinzuzufügen, ohne diese von Grund auf neu entwickeln zu müssen. Es gab jedoch ein kleines Problem: RNDIS verfügt praktisch über keine Sicherheitsmechanismen.
Wie Greg Kroah-Hartman, Fellow der Linux Foundation und verantwortlich für die Veröffentlichung stabiler Versionen des Linux-Kernels, im November 2022 in der Linux Kernel Mailing List (LKML) schrieb: „Das Microsoft RNDIS-Protokoll ist - so wie es konzipiert wurde - unsicher und anfällig für Angriffe auf jedem System, auf dem es mit unvertrauenswürdigen Hosts oder Geräten verwendet wird. Da es unmöglich ist, das Protokoll sicher zu machen, sollte man alle RNDIS-Treiber deaktivieren, um zu verhindern, dass sie erneut genutzt werden.“
In einer weiteren Nachricht fügte er hinzu: „Das Protokoll wurde niemals dafür konzipiert, mit unvertrauenswürdigen Geräten verwendet zu werden. Es wurde entwickelt - und wir haben die Unterstützung dafür implementiert - zu einer Zeit, als wir den USB-Geräten, die wir an unsere Systeme anschlossen, sowie den Systemen, an die wir unsere USB-Geräte anschlossen, vertrauten.“
Das ist heute nicht mehr der Fall. Kroah-Hartman resümierte: „Heutzutage, mit unsicheren Hosts und Geräten, ist es an der Zeit, dieses Protokoll endgültig außer Betrieb zu nehmen. Wie ich in den Patch-Kommentaren erwähnt habe, hat Android dieses Protokoll vor vielen Jahren in ihren Geräten deaktiviert - ohne dass es zu Funktionsverlusten kam.“
Nun, das ist einfach genug. Warum reden wir also heute noch darüber?
Was passierte, war, dass die Nutzer befürchteten, dies könnte die Unterstützung des USB-Tetherings in ihrem Netzwerk stören. Es stellte sich heraus, dass mehr Menschen als man vielleicht denkt, über USB-Handyverbindungen sowie Ethernet- und WLAN-Geräte Netzwerke betrieben.
Sicherheit? Was ist das?
Wie Kroah-Hartman in einer Folgenachricht auf der LKML im Januar 2023 sagte: „Ich denke, Systeme, die dieses Verfahren nutzen, müssen immer darauf vertrauen, dass das an sie angeschlossene Gerät ‚vertrauenswürdig‘ ist. Das scheint ein einfacher Weg zu sein, um Zugriff auf ein ‚gesichertes‘ System zu erhalten, falls man ihn je benötigt.“
Er hat nicht unrecht. Es gibt Gründe, warum sicherheitsbewusste Unternehmen keine USB-verbundenen Geräte auf ihrem Gelände zulassen - und das ist einer davon.
Doch nun, nachdem er es leid war, dass es in Linux eine eingebaute Sicherheitslücke bezüglich Windows gab, hat Kroah-Hartman beschlossen, dass es nun genug sei. Er hat alle RNDIS-Protokolltreiber im Git-Repository von Linux deaktiviert.
Das bedeutet: Obwohl der RNDIS-Code immer noch im Linux-Kernel vorhanden ist, werden alle Ihre RNDIS-Treiber beschädigt sein und nicht kompilierbar sein, wenn Sie versuchen, Linux mit diesem neuen Patch zu kompilieren. Dies ist ein Schritt davon entfernt, RNDIS aus Linux zu entfernen.
Es gibt noch eine andere Möglichkeit, das Netzwerken über USB zu unterstützen. Dabei handelt es sich um das Network Control Model (NCM)-Protokoll. Es hat den Vorteil, sicher zu sein und bereits in Linux unterstützt zu werden.
Dieser Ansatz bereitet jedoch Maciej Żenczykowski, einem Google-Entwickler für das Linux-Kernel-Netzwerk, Sorgen. Der Grund dafür ist, dass CDC-ECM auf Android-Telefonen nur unzureichend unterstützt wird. Die einzigen Android-Telefone, von denen er weiß, „dass sie für das USB-Tethering von RNDIS auf NCM umgestiegen sind, sind das Google Pixel 6+ sowie neuere Pixel-Smartphones“, so Żenczykowski.
Und das ist ein Problem, denn die Leute verwenden den RNDIS-Treiber auf Linux-Laptops, um per USB eine Verbindung zu Android-Handys herzustellen. Laut Żenczykowski „wird dies das USB-Tethering bei der *überwiegenden Mehrheit* der Android-Handys unterbrechen - vermutlich auch bei den meisten Geräten, die derzeit hergestellt und verkauft werden.“
Angesichts von Sicherheitsbedenken einerseits sowie Problemen bezüglich der Interoperabilität andererseits: Was wird als Nächstes geschehen? Bleiben Sie dran, um zu erfahren, ob dieser Patch in das Merge-Fenster des Linux-6.7-Kernels eingereicht wird und ob er es in die nächste Linux-Version schafft.
