Die Version 0.10 des Wifibox-Projekts ist verfügbar, die darauf abzielt, das Problem mit der Verwendung von Wireless-Adaptern unter FreeBSD zu lösen, für die die erforderlichen Treiber fehlen. Die problematischen Adapter für FreeBSD funktionieren durch das Starten eines Gastsystems mit Linux, in dem die nativen Wireless-Gerätetreiber für Linux geladen werden.
Die Installation des Gastsystems mit Treibern ist automatisiert, und alle erforderlichen Komponenten sind in einem gebrauchsfertigen Wifibox-Paket organisiert, das beim Booten mit dem mitgelieferten rc-Dienst gestartet wird. Auch der Übergang in den Standby-Modus wird korrekt verarbeitet. Die Umgebung kann potenziell für alle WiFi-Karten verwendet werden, die in Linux unterstützt werden, wurde jedoch hauptsächlich auf Intel-Chips getestet. Zudem wurde die korrekte Funktionsweise auf Systemen mit drahtlosen Chips von Qualcomm Atheros und AMD RZ608 (MediaTek MT7921K) überprüft.
Das Gastsystem wird mit dem Hypervisor Bhyve gestartet, der den Zugriff auf die Wireless-Karte weiterleitet. Für den Betrieb ist ein System mit Unterstützung für Hardware-Virtualisierung (AMD-Vi oder Intel VT-d) erforderlich. Die Grundlage des Gastsystems basiert auf der Alpine Linux-Distribution, die auf der Musl-Systembibliothek und dem BusyBox-Toolkit aufgebaut ist. Die Image-Größe beträgt auf der Festplatte etwa 30 MB und verbraucht rund 90 MB RAM.
Für die Verbindung zu einem drahtlosen Netzwerk wird das Paket wpa_supplicant verwendet, dessen Konfigurationsdateien mit den Einstellungen aus der Hauptumgebung FreeBSD synchronisiert werden. Der erzeugte wpa_supplicant-Steuerungs-Unix-Socket wird in die Host-Umgebung weitergeleitet, wodurch die Standard-Utilities von FreeBSD für die Verbindung und Arbeit mit dem drahtlosen Netzwerk verwendet werden können, darunter können die Utilities wpa_cli und wpa_gui (net/wpa_supplicant_gui) verwendet werden.
In der neuen Version wurde der Mechanismus zur Integration von WPA in die Hauptumgebung überarbeitet, was die Funktion sowohl mit wpa_supplicant als auch mit hostapd ermöglicht. Der erforderliche Speicherbedarf für das Gastsystem wurde reduziert. Die Unterstützung für FreeBSD 13.0-RELEASE wurde eingestellt.
Zusätzlich kann die Arbeit an der Verbesserung der in FreeBSD angebotenen Treiber für Wireless-Karten mit Intel- und Realtek-Chips erwähnt werden. Mit Unterstützung der FreeBSD Foundation geht die Entwicklung des neuen iwlwifi-Treibers, der in FreeBSD 13.1 enthalten ist, weiter. Der Treiber basiert auf dem Linux-Treiber und dem Code aus dem Linux-Subsystem net80211, unterstützt den Standard 802.11ac und kann mit neuen Wireless-Chips von Intel verwendet werden. Der Treiber wird beim Booten automatisch geladen, wenn die erforderliche Wireless-Karte erkannt wird. Die Funktionalität der Komponenten des Linux-Wireless-Stacks wird durch die Schicht LinuxKPI sichergestellt. Früher wurde auf ähnliche Weise der iwm-Treiber für FreeBSD portiert.
Parallel dazu begann die Entwicklung der Treiber rtw88 und rtw89 für die Wireless-Chips Realtek RTW88 und RTW89, die ebenfalls durch den Port entsprechender Treiber aus Linux entwickelt werden und mit der Schicht LinuxKPI funktionieren. Der Treiber rtw88 ist bereits bereit für erste Tests, während sich der Treiber rtw89 noch in der Entwicklungsphase befindet.
Darüber hinaus kann die Veröffentlichung von Einzelheiten und einem funktionierenden Exploit im Zusammenhang mit der Sicherheitsanfälligkeit (CVE-2022-23088) im Wireless-Stack von FreeBSD erwähnt werden, die im April-Update behoben wurde. Diese Sicherheitsanfälligkeit ermöglicht es, eigenen Code im Kernel auszuführen, indem ein speziell gestalteter Frame während der Netzwerk-Scans (in der Phase vor der SSID-Bindung) gesendet wird. Das Problem wird durch einen Pufferüberlauf in der Funktion ieee80211_parse_beacon() beim Parsen von Beacon-Frames, die von Access Points gesendet werden, verursacht. Der Pufferüberlauf wurde durch das Fehlen einer Überprüfung der Übereinstimmung zwischen der tatsächlichen Datenmenge und der im Headerfeld angegebenen Größe ermöglicht. Das Problem tritt in Versionen von FreeBSD auf, die seit 2009 erstellt wurden.

Unter den jüngsten Änderungen in FreeBSD, die nicht mit dem Wireless-Stack zusammenhängen: Es wurde eine Optimierung der Boot-Zeit durchgeführt, die auf dem Testsystem von 10 auf 8 Sekunden verkürzt wurde; das GEOM-Modul gunion wurde implementiert, um Änderungen, die auf einer im Nur-Lese-Modus verfügbaren Festplatte gemacht werden, auf eine andere Festplatte zu übertragen; für die Crypto-API des Kernels wurden die kryptografischen Primitiven XChaCha20-Poly1305 AEAD und curve25519 vorbereitet, die für den Treiber erforderlich sind. VPN für WireGuard.
Quelle: opennet.ru
