Wifibox 0.10 - оточення для використання WiFi-драйверів Linux у FreeBSD

Доступний випуск проекту Wifibox 0.10, орієнтованого на вирішення проблеми з використанням у FreeBSD бездротових адаптерів, для яких відсутні необхідні драйвери. Робота проблемних для FreeBSD адаптерів забезпечується через запуск гостьової системи з Linux, де завантажуються рідні для Linux драйвери бездротових пристроїв.

Установка гостьової системи з драйверами автоматизована, а всі необхідні компоненти оформлені у вигляді готового пакету wifibox, який запускається при завантаженні за допомогою rc-сервісу, що поставляється в комплекті. У тому числі коректно обробляється перехід у режим сну. Оточення потенційно може застосовуватися для будь-яких WiFi-карток, які підтримуються в Linux, але протестовано в основному на чіпах Intel. Також перевірено коректну роботу на системах з бездротовими чіпами Qualcomm Atheros та AMD RZ608 (MediaTek MT7921K).

Гостьова система запускається за допомогою гіпервізора Bhyve, в якому організується прокидання доступу до бездротової карти. Для роботи потрібна система за допомогою апаратної віртуалізації (AMD-Vi або Intel VT-d). Начинка гостьової системи ґрунтується на дистрибутиві Alpine Linux, побудованого на базі системної бібліотеки Musl та набору утиліт BusyBox. Розмір образу займає на диску приблизно 30МБ та споживає близько 90 МБ оперативної пам'яті.

Для підключення до бездротової мережі використовується пакет wpa_supplicant, конфігураційні файли для якого синхронізуються з налаштуваннями з основного оточення FreeBSD. Створюваний wpa_supplicant керуючий Unix-сокет прокидається в хост-оточення, що дозволяє використовувати штатні утиліти FreeBSD для підключення та роботи з бездротовою мережею, в тому числі можна використовувати утиліти wpa_cli та wpa_gui (net/wpa_supplicant_gui).

У новому випуску перероблено механізм прокидання WPA в основне оточення, що дозволило забезпечити роботу як з wpa_supplicant, так і з hostapd. Знижено необхідний для гостьової системи обсяг пам'яті. Припинено підтримку FreeBSD 13.0-RELEASE.

Додатково можна відзначити роботу з покращення пропонованих у FreeBSD драйверів для бездротових карт на чіпах Intel та Realtek. За підтримки організації FreeBSD Foundation продовжується розвиток нового драйвера iwlwifi, включеного до FreeBSD 13.1. Драйвер заснований на Linux-драйвері та коді з Linux-підсистеми net80211, підтримує стандарт 802.11ac та може використовуватися з новими бездротовими чіпами Intel. Драйвер завантажується автоматично під час завантаження під час виявлення необхідної бездротової карти. Робота компонентів бездротового стека Linux забезпечується за допомогою прошарку LinuxKPI. Раніше схожим чином для FreeBSD було портовано драйвер iwm.

Паралельно розпочалася розробка драйверів rtw88 та rtw89 для бездротових чіпів Realtek RTW88 та RTW89, які також розвиваються шляхом перенесення відповідних драйверів з Linux та працюють за допомогою прошарку LinuxKPI. Драйвер rtw88 вже готовий для початкового тестування, а драйвер rtw89 поки що знаходиться на стадії розробки.

Крім того, можна згадати публікацію деталей та готового експлоїту, пов'язаних з уразливістю (CVE-2022-23088) у бездротовому стеку FreeBSD, усуненому в квітневому оновленні. Вразливість дозволяє виконати свій код на рівні ядра через відправлення спеціально оформленого кадру в момент знаходження клієнта в режимі сканування мережі (на стадії до SSID). Проблема викликана переповненням буфера у функції ieee80211_parse_beacon() при розборі beacon-кадрів, що передаються точкою доступу. Переповнення стало можливим через відсутність перевірки відповідності фактичного розміру даних та розміру, вказаного у полі заголовка. Проблема проявляється у версіях FreeBSD, сформованих із 2009 року.

Wifibox 0.10 - оточення для використання WiFi-драйверів Linux у FreeBSD

Серед не пов'язаних з бездротовим стеком недавніх змін у FreeBSD: проведено оптимізацію часу завантаження, яка на тестовій системі була скорочена з 10 до 8 секунд; реалізований GEOM-модуль gunion для виносу інший диск змін, вироблених поверх диска, доступного як тільки читання; для crypto API ядра підготовлені криптографічні примітиви XChaCha20-Poly1305 AEAD та curve25519, необхідні для драйвера VPN WireGuard.

Джерело: opennet.ru

Додати коментар або відгук