Wifibox 0.10 - środowisko do korzystania ze sterowników Linux WiFi we FreeBSD

Dostępny jest już projekt Wifibox 0.10, mający na celu rozwiązanie problemu FreeBSD korzystającego z kart bezprzewodowych, dla których brakuje niezbędnych sterowników. Działanie adapterów, które są problematyczne dla FreeBSD, zapewnia uruchomienie systemu gościa z systemem Linux, w którym ładowane są natywne Linuxowe sterowniki dla urządzeń bezprzewodowych.

Instalacja systemu gościa wraz ze sterownikami jest zautomatyzowana, a wszystkie niezbędne komponenty są spakowane w postaci gotowego pakietu Wi-Fibox, który uruchamia się po uruchomieniu systemu za pomocą dołączonej usługi rc. W tym przejście do trybu uśpienia jest obsługiwane poprawnie. Środowisko może potencjalnie zostać wykorzystane dla dowolnych kart WiFi obsługiwanych w systemie Linux, jednak zostało przetestowane głównie na chipach Intela. Prawidłowe działanie zostało również przetestowane na systemach z chipami bezprzewodowymi Qualcomm Atheros i AMD RZ608 (MediaTek MT7921K).

System gościnny uruchamiany jest za pomocą hypervisora ​​Bhyve, który organizuje przekazywanie dostępu do karty bezprzewodowej. Wymaga systemu obsługującego wirtualizację sprzętową (AMD-Vi lub Intel VT-d). System gościnny oparty jest na dystrybucji Alpine Linux, zbudowanej w oparciu o bibliotekę systemową Musl i zestaw narzędzi BusyBox. Rozmiar obrazu zajmuje około 30 MB na dysku i zużywa około 90 MB pamięci RAM.

Do połączenia się z siecią bezprzewodową wykorzystywany jest pakiet wpa_supplicant, którego pliki konfiguracyjne są synchronizowane z ustawieniami z głównego środowiska FreeBSD. Gniazdo kontrolne Uniksa utworzone przez wpa_supplicant jest przekazywane do środowiska hosta, co pozwala na użycie standardowych narzędzi FreeBSD do łączenia się i pracy z siecią bezprzewodową, w tym narzędzi wpa_cli i wpa_gui (net/wpa_supplicant_gui).

W nowej wersji przeprojektowano mechanizm przekazywania WPA do środowiska głównego, co umożliwiło współpracę zarówno z wpa_supplicant, jak i hostapd. Ilość pamięci wymaganej dla systemu gościa została zmniejszona. Zakończono wsparcie dla FreeBSD 13.0-RELEASE.

Dodatkowo możemy odnotować pracę nad udoskonaleniem sterowników oferowanych we FreeBSD dla kart bezprzewodowych na chipach Intel i Realtek. Przy wsparciu Fundacji FreeBSD kontynuowany jest rozwój nowego sterownika iwlwifi zawartego w FreeBSD 13.1. Sterownik oparty jest na sterowniku Linux i kodzie z podsystemu Linux net80211, obsługuje standard 802.11ac i może być używany z nowymi chipami bezprzewodowymi Intel. Sterownik jest pobierany automatycznie podczas uruchamiania systemu, gdy zostanie wykryta wymagana karta bezprzewodowa. Składniki stosu bezprzewodowego systemu Linux są włączane przy użyciu warstwy LinuxKPI. Poprzednio sterownik iwm był przenoszony na FreeBSD w podobny sposób.

Równolegle rozpoczął się rozwój sterowników rtw88 i rtw89 dla układów bezprzewodowych Realtek RTW88 i RTW89, które również są rozwijane poprzez przeniesienie odpowiednich sterowników z Linuksa i pracę z wykorzystaniem warstwy LinuxKPI. Sterownik rtw88 jest gotowy do wstępnych testów, natomiast sterownik rtw89 jest wciąż w fazie rozwoju.

Oprócz tego możemy wspomnieć o publikacji szczegółów i gotowego exploita związanego z luką (CVE-2022-23088) w stosie bezprzewodowym FreeBSD, która została naprawiona w kwietniowej aktualizacji. Luka umożliwia wykonanie kodu na poziomie jądra poprzez wysłanie specjalnie zaprojektowanej ramki, gdy klient znajduje się w trybie skanowania sieci (na etapie przed powiązaniem SSID). Problem jest spowodowany przepełnieniem bufora w funkcji ieee80211_parse_beacon() podczas analizowania ramek beaconów przesyłanych przez punkt dostępowy. Przyczyną przepełnienia był brak sprawdzenia, czy rzeczywisty rozmiar danych odpowiada rozmiarowi podanemu w polu nagłówka. Problem pojawia się w wersjach FreeBSD budowanych od 2009 roku.

Wifibox 0.10 - środowisko do korzystania ze sterowników Linux WiFi we FreeBSD

Ostatnie zmiany we FreeBSD niezwiązane ze stosem bezprzewodowym obejmują: optymalizację czasu uruchamiania, który w systemie testowym został skrócony z 10 do 8 sekund; zaimplementowano moduł modułu GEOM umożliwiający przenoszenie zmian dokonanych na dysku dostępnym w trybie tylko do odczytu na inny dysk; Dla krypto API jądra przygotowano prymitywy kryptograficzne XChaCha20-Poly1305 AEAD i curve25519 niezbędne dla sterownika VPN WireGuard.

Źródło: opennet.ru

Dodaj komentarz