Linux пытается избавиться от общеизвестно небезопасного протокола RNDIS Windows
Это снова мы. Разработчики Linux в очередной раз пытаются избавить Linux от спецификации Microsoft Remote Network Driver Interface. Вот почему это сложно.
Собственный протокол Microsoft, Спецификация интерфейса удаленного сетевого драйвера (RNDIS), начался с хорошей идеи. Это позволит производителям оборудования добавлять сетевую поддержку к USB-устройствам без необходимости создавать их с нуля. Была только одна маленькая проблема. У RNDIS нет никакой безопасности, о которой можно было бы говорить.
Как Грег Кроа-Хартман, научный сотрудник Linux Foundation, ответственный за стабильные выпуски ядра Linux, написал в ноябре 2022 года в списке рассылки ядра Linux (LKML): «Протокол Microsoft RNDIS, как задумано, небезопасен и уязвим в любой системе, которая его использует. с ненадежными хостами или устройствами. Поскольку протокол невозможно обеспечить безопасность, просто отключите все драйверы RNDIS, чтобы никто не мог использовать их снова».
В другом сообщении он добавил: «Протокол никогда не предназначался для использования с ненадежными устройствами. Он был создан, и мы реализовали его поддержку, когда мы доверяли USB-устройствам, которые мы подключали к нашим системам, И мы доверяли системам, которые мы подключили. наши USB-устройства».
Это уже не так. Кроа-Хартман заключил: «Сегодня, когда хосты и устройства ненадежны, пришло время просто удалить этот протокол. Как я упоминал в комментариях к патчу, Android отключил его в своих устройствах много лет назад без потери функциональности».
Ну, это достаточно просто. Итак, почему мы все еще говорим об этом сегодня?
Произошло следующее: пользователи начали беспокоиться, что это нарушит поддержку USB-модема в их сети. Оказывается, больше людей, чем вы думаете, подключались к сети через мобильные устройства USB, Ethernet и Wi-Fi.
Безопасность? Что это такое?
Как сказал Кроа-Хартман в последующем сообщении LKML в январе 2023 года: «Я думаю, что системы, которые используют это, всегда должны будут доверять тому, что подключенное к ним устройство является «доверенным». Это кажется простым способом получить доступ к « заблокированную» систему, если она вам когда-нибудь понадобится».
Он не ошибается. Есть причины, по которым предприятия, заботящиеся о безопасности, не допускают использования устройств, подключенных через USB, на территории, и это одна из них.
Но теперь, когда Кроа-Хартман устал от встроенного в Linux уязвимости безопасности Windows, он решил, что этого достаточно. Он отключил все драйверы протокола RNDIS в репозитории Linux Git.
Это означает, что, хотя код RNDIS все еще находится в ядре Linux, если вы попытаетесь собрать Linux с использованием этого нового патча, все ваши драйверы RNDIS будут сломаны и не будут собираться. Это один шаг до удаления RNDIS из Linux.
Есть еще один способ поддержки сети через USB. Это протокол модели сетевого управления (NCM). Его преимущество заключается в том, что он безопасен и уже поддерживается в Linux.
Однако такой подход беспокоит Мацея Женчиковского, разработчика сетей ядра Google Linux. Это связано с тем, что CDC-ECM плохо поддерживается в телефонах Android. Единственные известные ему телефоны Android, которые «переключились на NCM вместо RNDIS для USB-модема, — это Google Pixel 6+» и более новые смартфоны Pixel.
И это проблема, потому что люди используют ноутбуки Linux с драйвером RNDIS для USB-подключения к телефонам Android. Итак, по словам Женчиковски, «это отключит USB-модем у *подавляющего* большинства телефонов Android, включая, вероятно, большинство из тех, которые в настоящее время производятся и продаются».
Итак, учитывая проблемы безопасности с одной стороны и проблемы совместимости с другой, что будет дальше? Оставайтесь с нами, чтобы узнать, будет ли этот патч добавлен в окно слияния ядра Linux 6.7 и попадет ли он в следующую версию Linux.