
OPNsense 26.7.6 - Alta - Remota - Injeção de linha de configuração - Identidade WLAN WPA
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-wlan-wpa-line
Classe: Injeção de linha de configuração Alcance: Remoto
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Resquício do GHSA-fq94. O SSID wireless recebeu AllowNewlines=N. identity, passphrase e o auth_server_shared_secret do RADIUS permaneceram como TextField puro (quebras de linha ativadas por padrão) e são despejados em /var/etc/wpa_supplicant_*.conf e /var/etc/hostapd_*.conf. interfaces.inc interpola identity="{identity}" na estrofe do wpa_supplicant. Uma quebra de linha ou de aspas adiciona diretivas extras como root. O privilégio é page-interfaces-wireless-edit, não page-all.
| ID | sem CVE ainda |
| Classe | Injeção de linha de configuração |
| Alcance | Remoto (WebGUI autenticada) |
| CWE | CWE-93 |
| CVSS | Alto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Produto | OPNsense core (Deciso B.V.) |
| Afetado | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Wlan.xml identity / passphrase |
| Autenticação | Sessão WebGUI com page-interfaces-wireless-edit |
| Licença | GNU Affero GPL v3.0 |
| Lab | apenas 127.0.0.1 |
Fixe a tag 26.7.6. O lab é um gadget PHP do interfaces_wlan_configure fixado, HTTP em loopback em 127.0.0.1:18840. O CR/LF na identity escreveu o # OPNSENSE-WLAN-WPA-LINE-WITNESS extra. O SSID permaneceu em uma linha.
| Método | Sink | Privilégio |
|---|---|---|
| identity CR/LF | fixar diretiva extra de interfaces_wlan_configure no conf do wpa_supplicant | Integridade (comprovado em lab): # OPNSENSE-WLAN-WPA-LINE-WITNESS extra após a identity. Lab: identity-newline=yes extra-directive=yes. |
honra de network / ssid / ap_scan / ctrl_interface extras | wpa_supplicant / hostapd como root | Integridade (inferido): diretivas extras do daemon. wpa_supplicant não iniciado no gadget. |
| SSID CR/LF | AllowNewlines=N | Negativo (comprovado em lab): o SSID permaneceu em uma linha. ssid-control=single-line. |
| passphrase / segredo RADIUS CR/LF | hostapd_*.conf / wpa_supplicant | Integridade (inferido): mesma classe. O gadget executou o caminho da identity. |
| diretiva extra inválida | daemons wireless | Disponibilidade (inferido): hostapd / wpa_supplicant podem falhar ao iniciar. |
| este caminho | nenhum | Recon: nenhuma leitura extra de segredos do config.xml. |
Comprovado em lab vs inferido: a diretiva extra de quebra de linha na identity e o controle de linha única do SSID são SUCESSO em lab. A aplicação no hostapd e no daemon em execução é inferida.
Requer: page-interfaces-wireless-edit. POST /api/interfaces/wireless_settings/*. Não page-all. Token CSRF. O <input type="text"> do navegador não manterá CR/LF; um POST direto a partir dessa sessão manterá.
| Superfície | Lab |
|---|---|
| Quebra de linha no SSID | restringida (ssid-control=single-line) |
| Não autenticado | fechado |
Admin wireless page-all | configuração de rádio pretendida; o resquício são diretivas extras que um editor delegado não deveria poder criar |
| cmdi de bridge span CVE-2025-50989 | agora configdRun sem token de requisição |
| Chaves WEP | escapeshellarg para ifconfig |
Sem acesso não autenticado. O SSID já rejeita CR/LF. O admin completo já tem root por design.
cd lab
./run.sh
Loopback 127.0.0.1:18840. Projeto Compose opnsense-wlan-wpa-line. Witness OPNSENSE-WLAN-WPA-LINE-WITNESS. Última linha:
SUCCESS opnsense-wlan-wpa-line identity-newline=yes extra-directive=yes ssid-control=single-line OPNSENSE-WLAN-WPA-LINE-WITNESS
Defina AllowNewlines=N em identity, passphrase e segredos RADIUS, assim como no SSID. Remova CR/LF e aspas dentro de interfaces_wlan_configure para que todos os chamadores sejam cobertos. Diretivas extras de hostapd / wpa_supplicant pertencem atrás de page-all.
a842fe48c21288d11a422cb944678e8eb308becfWlan.xmlinterfaces.inc interfaces_wlan_configureAllowNewlines=N