Wifibox 0.10 - ambiente para usar drivers Linux WiFi no FreeBSD

Já está disponível o projeto Wifibox 0.10, que visa solucionar o problema do FreeBSD utilizando adaptadores wireless para os quais faltam os drivers necessários. A operação de adaptadores problemáticos para o FreeBSD é garantida pelo lançamento de um sistema convidado com Linux, no qual são carregados drivers nativos do Linux para dispositivos sem fio.

A instalação do sistema convidado com drivers é automatizada e todos os componentes necessários são embalados na forma de um pacote wifibox pronto, que é iniciado na inicialização usando o serviço rc incluído. Incluir a transição para o modo de suspensão é feito corretamente. O ambiente pode ser potencialmente usado para qualquer placa WiFi compatível com Linux, mas foi testado principalmente em chips Intel. A operação correta também foi testada em sistemas com chips sem fio Qualcomm Atheros e AMD RZ608 (MediaTek MT7921K).

O sistema convidado é iniciado usando o hipervisor Bhyve, que organiza o encaminhamento de acesso à placa wireless. Requer um sistema que suporte virtualização de hardware (AMD-Vi ou Intel VT-d). O sistema convidado é baseado na distribuição Alpine Linux, construída com base na biblioteca do sistema Musl e no conjunto de utilitários BusyBox. O tamanho da imagem ocupa aproximadamente 30 MB no disco e consome cerca de 90 MB de RAM.

Para conectar-se a uma rede sem fio, é utilizado o pacote wpa_supplicant, cujos arquivos de configuração são sincronizados com as configurações do ambiente principal do FreeBSD. O soquete de controle Unix criado por wpa_supplicant é encaminhado para o ambiente host, que permite usar utilitários padrão do FreeBSD para conectar e trabalhar com uma rede sem fio, incluindo os utilitários wpa_cli e wpa_gui (net/wpa_supplicant_gui).

Na nova versão, o mecanismo de encaminhamento do WPA para o ambiente principal foi redesenhado, o que possibilitou trabalhar tanto com wpa_supplicant quanto com hostapd. A quantidade de memória necessária para o sistema convidado foi reduzida. O suporte para FreeBSD 13.0-RELEASE foi descontinuado.

Adicionalmente, podemos destacar o trabalho de melhoria dos drivers oferecidos no FreeBSD para placas wireless em chips Intel e Realtek. Com o apoio da Fundação FreeBSD, o desenvolvimento do novo driver iwlwifi incluído no FreeBSD 13.1 continua. O driver é baseado no driver Linux e no código do subsistema Linux net80211, suporta o padrão 802.11ac e pode ser usado com os novos chips sem fio Intel. O driver é baixado automaticamente durante a inicialização quando a placa sem fio necessária é detectada. Os componentes da pilha sem fio do Linux são habilitados usando a camada LinuxKPI. Anteriormente, o driver iwm foi portado para o FreeBSD de maneira semelhante.

Paralelamente, iniciou-se o desenvolvimento dos drivers rtw88 e rtw89 para os chips wireless Realtek RTW88 e RTW89, que também estão sendo desenvolvidos transferindo os drivers correspondentes do Linux e trabalhando na camada LinuxKPI. O driver rtw88 está pronto para testes iniciais, enquanto o driver rtw89 ainda está em desenvolvimento.

Além disso, podemos citar a publicação de detalhes e um exploit pronto relacionado à vulnerabilidade (CVE-2022-23088) na pilha wireless do FreeBSD, que foi corrigida na atualização de abril. A vulnerabilidade permite que você execute seu código no nível do kernel, enviando um quadro especialmente projetado enquanto o cliente está no modo de varredura de rede (no estágio anterior à ligação do SSID). O problema é causado por um buffer overflow na função ieee80211_parse_beacon() ao analisar quadros de beacon transmitidos pelo ponto de acesso. O estouro foi causado pela falta de verificação de que o tamanho real dos dados corresponde ao tamanho especificado no campo do cabeçalho. O problema aparece nas versões do FreeBSD construídas desde 2009.

Wifibox 0.10 - ambiente para usar drivers Linux WiFi no FreeBSD

Mudanças recentes no FreeBSD não relacionadas à pilha wireless incluem: otimização do tempo de inicialização, que foi reduzido de 10 para 8 segundos no sistema de teste; o módulo GEOM gunion foi implementado para transferir alterações feitas em cima de um disco acessível em modo somente leitura para outro disco; Para a API criptográfica do kernel, foram preparadas as primitivas criptográficas XChaCha20-Poly1305 AEAD e curve25519, necessárias para o driver VPN WireGuard.

Fonte: opennet.ru

Adicionar um comentário