È disponibile il rilascio del progetto Wifibox 0.10, mirato a risolvere i problemi con l'uso degli adattatori wireless su FreeBSD per i quali mancano i driver necessari. Il funzionamento degli adattatori problematici per FreeBSD è garantito tramite l'esecuzione di un sistema ospite con Linux, in cui vengono caricati i driver wireless nativi per Linux.
L'installazione del sistema ospite con i driver è automatizzata e tutti i componenti necessari sono forniti come pacchetto pronto wifibox, che si avvia all'avvio tramite il servizio rc fornito in dotazione. Inoltre, viene gestito correttamente il passaggio in modalità sospensione. L'ambiente può essere potenzialmente utilizzato per qualsiasi scheda WiFi supportata in Linux, ma è stato testato principalmente su chip Intel. È stata verificata anche la corretta funzionalità su sistemi con chip wireless Qualcomm Atheros e AMD RZ608 (MediaTek MT7921K).
Il sistema ospite viene avviato tramite il hypervisor Bhyve, che consente il passaggio dell'accesso alla scheda wireless. È necessaria una macchina con supporto per la virtualizzazione hardware (AMD-Vi o Intel VT-d). Il sistema ospite si basa su una distribuzione di Alpine Linux, costruita sulla libreria di sistema Musl e su un insieme di utilità BusyBox. L'immagine occupa circa 30 MB su disco e consuma circa 90 MB di memoria RAM.
Per connettersi a una rete wireless, si utilizza il pacchetto wpa_supplicant, i cui file di configurazione vengono sincronizzati con le impostazioni dell'ambiente principale di FreeBSD. Il socket Unix di controllo creato da wpa_supplicant viene passato all'ambiente host, consentendo l'uso delle utilità standard di FreeBSD per la connessione e l'interazione con la rete wireless, inclusi wpa_cli e wpa_gui (net/wpa_supplicant_gui).
Nel nuovo rilascio è stato rielaborato il meccanismo di passaggio WPA nell'ambiente principale, consentendo il funzionamento con sia wpa_supplicant che hostapd. È stata ridotta la quantità di memoria necessaria per il sistema ospite. Non è più supportato FreeBSD 13.0-RELEASE.
Si segnala inoltre il lavoro per migliorare i driver wireless per schede basate su chip Intel e Realtek offerti da FreeBSD. Con il supporto della FreeBSD Foundation, continua lo sviluppo del nuovo driver iwlwifi, incluso in FreeBSD 13.1. Questo driver è basato su un driver Linux e su codice del sottosistema Linux net80211, supporta lo standard 802.11ac e può essere utilizzato con nuovi chip wireless Intel. Il driver viene caricato automaticamente durante l'avvio al rilevamento di una scheda wireless supportata. Il funzionamento dei componenti dello stack wireless Linux è garantito tramite il layer LinuxKPI. Precedentemente, un driver simile era stato portato per FreeBSD.
Parallelamente, è iniziato lo sviluppo di driver rtw88 e rtw89 per chip wireless Realtek RTW88 e RTW89, anch'essi sviluppati tramite il trasferimento di driver corrispondenti da Linux e funzionano tramite il layer LinuxKPI. Il driver rtw88 è già pronto per i test iniziali, mentre il driver rtw89 è ancora in fase di sviluppo.
Inoltre, è opportuno menzionare la pubblicazione di dettagli e di un exploit pronto, relativo a una vulnerabilità (CVE-2022-23088) nello stack wireless di FreeBSD, corretta nell'aggiornamento di aprile. La vulnerabilità consente di eseguire codice a livello di kernel inviando un pacchetto appositamente formattato mentre il client è in modalità di scansione della rete (in attesa di collegamento SSID). Il problema è causato da un overflow del buffer nella funzione ieee80211_parse_beacon() durante l'analisi dei pacchetti beacon trasmessi dal punto di accesso. L'overflow si è reso possibile per l'assenza di un controllo tra la dimensione effettiva dei dati e la dimensione indicata nel campo dell'intestazione. Il problema si manifesta in versioni di FreeBSD create dal 2009.

Tra le recenti modifiche non correlate allo stack wireless in FreeBSD: è stata ottimizzata la velocità di avvio, che è stata ridotta su un sistema di test da 10 a 8 secondi; è stato implementato il modulo GEOM gunion per il trasferimento delle modifiche effettuate su un disco disponibile solo in modalità lettura; per l'API crittografica del kernel sono stati preparati i primitivi crittografici XChaCha20-Poly1305 AEAD e curve25519, necessari per i driver. VPN WireGuard.
Fonte: opennet.ru
