Linux is All Set to Disable Microsoft's RNDIS Drivers

The Linux Kernel will no longer support RNDIS drivers. A good move? What does this mean for you? Find out here.

Linux is All Set to Disable Microsoft's RNDIS Drivers

Microsoft's RNDIS protocol, short for Remote Network Driver Interface Specification, is a proprietary USB protocol for virtual Ethernet functionality on computers.

The most common use case of this would be using your phone's mobile network to connect to the internet on your computer via USB, also known as Tethering.

Even though it mainly works on Windows, it has been part of the Linux kernel for a while now.

But that is set to change soon.

Say Goodbye to RNDIS Protocol?

What is happening?: On Monday, Greg Kroah-Hartman created the usb.git rndis-removal branch, where he mentions disabling the implementation of all RNDIS protocol drivers on Linux.

With the commit, he mentions:

The Microsoft RNDIS protocol is, as designed, insecure and vulnerable on
any system that uses it with untrusted hosts or devices. Because the
protocol is impossible to make secure, just disable all rndis drivers to
prevent anyone from using them again.

Windows only needed this for XP and newer systems, Windows systems older than that can use the normal USB class protocols instead, which do not have these problems.

Android has had this disabled for many years so there should not be any
real systems that still need this.

As initially reported by Phoronix, once this protocol is marked 'BROKEN' in the Kconfig option, it will stay there for a while and ultimately be removed from the kernel.

But why?

The implementation of RNDIS is known to be a mess on platforms apart from Windows and poses quite a few security risks. In addition, RNDIS is not being used as widely as before, and the security risks it presents might be one of the main reasons for this decision.

Does this have an impact on current users? Should you be worried?

If we look at a Reddit thread discussing this upcoming change, we would see that many users remain curious if this would break USB tethering for everyone.

Users seem confused about this move, considering many Android phones still use RNDIS instead of CDC NCM (a newer protocol) 😕 Not just users; a Kernel Networking Developer at Google also flagged this issue, but we do not see a response to that yet.

But not everyone uses mainline Linux Kernel? Should you stick to an LTS version of the kernel if you do not want to be impacted by this change?

Furthermore, users wanted more clarity on how this does not impact everyone.

But, as of now, Greg may not have mentioned a lot of details to convince some of the concerned users.

🤔 Of course, we aren't Linux Kernel maintainers. So, it is best to wait until this commit gets through, and I hope that the Linux Kernel maintainers shed more light on it than we already know.

💭 What are your thoughts on this planned change for the Linux Kernel? Share your thoughts in the comments down below.