Wifibox 0.10 - ambiente per l'utilizzo dei driver WiFi Linux in FreeBSD

È ora disponibile il progetto Wifibox 0.10, volto a risolvere il problema di FreeBSD utilizzando adattatori wireless per i quali mancano i driver necessari. Il funzionamento degli adattatori problematici per FreeBSD è garantito avviando un sistema ospite con Linux, nel quale vengono caricati i driver Linux nativi per i dispositivi wireless.

L'installazione del sistema ospite con i driver è automatizzata e tutti i componenti necessari sono confezionati sotto forma di un pacchetto wifibox già pronto, che viene avviato all'avvio utilizzando il servizio rc incluso. Inclusa la transizione alla modalità sospensione viene gestita correttamente. L'ambiente può essere potenzialmente utilizzato per qualsiasi scheda WiFi supportata in Linux, ma è stato testato principalmente su chip Intel. Il corretto funzionamento è stato testato anche su sistemi dotati di chip wireless Qualcomm Atheros e AMD RZ608 (MediaTek MT7921K).

Il sistema ospite viene avviato utilizzando l'hypervisor Bhyve, che organizza l'inoltro dell'accesso alla scheda wireless. Richiede un sistema che supporti la virtualizzazione hardware (AMD-Vi o Intel VT-d). Il sistema ospite è basato sulla distribuzione Alpine Linux, costruita sulla base della libreria di sistema Musl e del set di utilità BusyBox. La dimensione dell'immagine occupa circa 30 MB su disco e consuma circa 90 MB di RAM.

Per connettersi a una rete wireless, viene utilizzato il pacchetto wpa_supplicant, i cui file di configurazione sono sincronizzati con le impostazioni dell'ambiente principale di FreeBSD. Il socket di controllo Unix creato da wpa_supplicant viene inoltrato all'ambiente host, che consente di utilizzare le utilità standard di FreeBSD per connettersi e lavorare con una rete wireless, incluse le utilità wpa_cli e wpa_gui (net/wpa_supplicant_gui).

Nella nuova versione, il meccanismo per l'inoltro di WPA all'ambiente principale è stato ridisegnato, il che ha permesso di lavorare sia con wpa_supplicant che con hostapd. La quantità di memoria richiesta per il sistema ospite è stata ridotta. Il supporto per FreeBSD 13.0-RELEASE è stato interrotto.

Inoltre, possiamo notare il lavoro per migliorare i driver offerti in FreeBSD per le schede wireless su chip Intel e Realtek. Con il supporto della FreeBSD Foundation, continua lo sviluppo del nuovo driver iwlwifi incluso in FreeBSD 13.1. Il driver si basa sul driver Linux e sul codice del sottosistema Linux net80211, supporta lo standard 802.11ac e può essere utilizzato con i nuovi chip wireless Intel. Il driver viene scaricato automaticamente durante l'avvio quando viene rilevata la scheda wireless richiesta. I componenti dello stack wireless Linux sono abilitati utilizzando il livello LinuxKPI. In precedenza, il driver iwm veniva portato per FreeBSD in modo simile.

Parallelamente è iniziato lo sviluppo dei driver rtw88 e rtw89 per i chip wireless Realtek RTW88 e RTW89, anch'essi in fase di sviluppo trasferendo i driver corrispondenti da Linux e funzionano utilizzando il livello LinuxKPI. Il driver rtw88 è pronto per i test iniziali, mentre il driver rtw89 è ancora in fase di sviluppo.

Inoltre, possiamo menzionare la pubblicazione di dettagli e un exploit già pronto relativo alla vulnerabilità (CVE-2022-23088) nello stack wireless di FreeBSD, che è stata corretta nell'aggiornamento di aprile. La vulnerabilità consente di eseguire il codice a livello di kernel inviando un frame appositamente progettato mentre il client è in modalità di scansione di rete (nella fase precedente all'associazione SSID). Il problema è causato da un buffer overflow nella funzione ieee80211_parse_beacon() durante l'analisi dei frame beacon trasmessi dal punto di accesso. L'overflow è stato causato dal mancato controllo che la dimensione effettiva dei dati corrisponda alla dimensione specificata nel campo dell'intestazione. Il problema si presenta nelle versioni di FreeBSD realizzate a partire dal 2009.

Wifibox 0.10 - ambiente per l'utilizzo dei driver WiFi Linux in FreeBSD

Le recenti modifiche a FreeBSD non correlate allo stack wireless includono: ottimizzazione del tempo di avvio, che è stato ridotto da 10 a 8 secondi sul sistema di test; è stato implementato il modulo GEOM gunion per trasferire le modifiche apportate su un disco accessibile in sola lettura su un altro disco; Per la crypto API del kernel sono state predisposte le primitive crittografiche XChaCha20-Poly1305 AEAD e curve25519, necessarie per il driver VPN WireGuard.

Fonte: opennet.ru

Aggiungi un commento