Linux пытается избавиться от известно небезопасного протокола RNDIS в Windows

Linux is trying to eliminate the known insecure RNDIS protocol in Windows.

Проприетарный протокол Microsoft Remote Network Driver Interface Specification (RNDIS) начался с хорошей идеи. Он позволял производителям аппаратного обеспечения добавлять поддержку сетевого соединения к устройствам USB, не создавая его с нуля. Но возникла одна маленькая проблема. RNDIS не обеспечивает достаточную безопасность.

Как писал Грег Кроа-Хартман, старший сотрудник Фонда Linux, ответственный за стабильные выпуски ядра Linux, в ноябре 2022 года на Linux Kernel Mailing List (LKML): “Протокол Microsoft RNDIS по своей природе небезопасен и уязвим на любой системе, использующей его с недоверенными хостами или устройствами. Так как протокол невозможно сделать безопасным, просто отключите все драйверы RNDIS, чтобы никто больше не смог их использовать.”

Также: Лучшие VPN-сервисы: экспертное тестирование и обзоры

Он добавил в другом сообщении: “Протокол не разрабатывался для использования с недоверенными устройствами. Он был создан, и мы реализовали его поддержку, когда мы доверяли устройствам USB, которые мы подключали к нашим системам, И мы доверяли системам, в которые мы подключали наши устройства USB.”

Ситуация изменилась. Кроа-Хартман заключает: “Сегодня, с недоверенными хостами и устройствами, пора просто отказаться от этого протокола. Как я уже упоминал в комментариях к патчу, Android отключил его много лет назад на своих устройствах без потери функциональности.”

Что ж, это достаточно просто. Тогда почему мы до сих пор об этом говорим?

Проблема заключается в том, что пользователи начали беспокоиться о том, что это нарушит поддержку сетевого USB-тетеринга. Оказалось, что больше людей, чем вы думаете, используют сетевое подключение через USB-кабель сотовых, Ethernet- и Wi-Fi-устройств.

Безопасность? Что это такое?

Также: Два трюка, которые существенно упрощают использование командной строки Linux

Как сказал Кроа-Хартман в последующем сообщении на LKML в январе 2023 года: “Предполагается, что такие системы всегда будут доверять, что подключенное к ним устройство является “доверенным”. Кажется, это легкий способ получить доступ к “заблокированной” системе, если вам когда-нибудь понадобится.”

Он прав. Есть причины, по которым организации, обеспокоенные безопасностью, не разрешают использование устройств, подключаемых через USB, на своих предприятиях, и это одна из них.

Но теперь, устав от наличия в Linux встроенной уязвимости безопасности Windows, Кроа-Хартман решил, что это уже слишком. Он отключил все драйверы протокола RNDIS в репозитории Git Linux.

Это означает, что хотя код RNDIS все еще присутствует в ядре Linux, если вы попытаетесь собрать Linux с использованием этого нового патча, все ваши драйверы RNDIS будут неработоспособными и не соберутся. Это шаг, предшествующий полному удалению RNDIS из Linux.

Также: Лучшие ноутбуки с Linux прямо сейчас

Есть другой способ поддержки сетевого подключения через USB. Это протокол Network Control Model (NCM). Он имеет преимущество в том, что он безопасен и уже поддерживается в Linux.

Однако Мацей Женчыковски, разработчик сетевого ядра Linux в Google, опасается этого подхода. Это связано с тем, что протокол CDC-ECM не получил должной поддержки в телефонах Android. Единственные телефоны Android, о которых он знает, “которые перешли на NCM вместо RNDIS для USB-тетеринга, это Google Pixel 6+” и новые смартфоны Pixel.

И это проблема, потому что люди используют драйвер RNDIS в Linux-ноутбуках для подключения к телефонам Android через USB. Так что, по словам Женчыковского, “это нарушит возможность USB-тетеринга с *огромного* большинства телефонов Android, вероятно, включая большинство тех, которые в настоящее время производятся и продаются.”

Итак, с одной стороны есть проблемы безопасности, а с другой – проблемы совместимости. Что произойдет дальше? Ждите, чтобы узнать, будет ли этот патч представлен в окно слияния ядра Linux 6.7 и будет ли он включен в следующую версию Linux.