
OPNsense 26.7.6 - Élevée - À distance - Injection de ligne de configuration - Identité WLAN WPA
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-wlan-wpa-line
Classe : Injection de ligne de configuration Portée : Distante
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Reste de GHSA-fq94. Le SSID sans fil a reçu AllowNewlines=N. identity, passphrase et le auth_server_shared_secret RADIUS sont restés de simples TextField (retours à la ligne activés par défaut) et sont déversés dans /var/etc/wpa_supplicant_*.conf et /var/etc/hostapd_*.conf. interfaces.inc interpole identity="{identity}" dans la strophe wpa_supplicant. Un retour à la ligne ou une rupture de guillemet ajoute des directives supplémentaires en tant que root. Le privilège est page-interfaces-wireless-edit, pas page-all.
| ID | pas encore de CVE |
| Classe | Injection de ligne de configuration |
| Portée | Distante (WebGUI authentifiée) |
| CWE | CWE-93 |
| CVSS | Élevé : 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Produit | OPNsense core (Deciso B.V.) |
| Affecté | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Wlan.xml identity / passphrase |
| Auth | Session WebGUI avec page-interfaces-wireless-edit |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement |
J'ai épinglé le tag 26.7.6. Le lab est un gadget PHP du interfaces_wlan_configure épinglé, HTTP en boucle locale sur 127.0.0.1:18840. Un CR/LF dans identity a écrit une directive supplémentaire # OPNSENSE-WLAN-WPA-LINE-WITNESS. Le SSID est resté sur une seule ligne.
| Méthode | Cible | Privilège |
|---|---|---|
| identity CR/LF | épingler une directive supplémentaire de interfaces_wlan_configure dans la conf wpa_supplicant | Intégrité (prouvé en lab) : directive supplémentaire # OPNSENSE-WLAN-WPA-LINE-WITNESS après identity. Lab : identity-newline=yes extra-directive=yes. |
prise en compte de network / ssid / ap_scan / ctrl_interface supplémentaires | wpa_supplicant / hostapd en tant que root | Intégrité (inféré) : directives de démon supplémentaires. wpa_supplicant n'est pas démarré dans le gadget. |
| SSID CR/LF | AllowNewlines=N | Négatif (prouvé en lab) : le SSID est resté sur une seule ligne. ssid-control=single-line. |
| passphrase / secret RADIUS CR/LF | hostapd_*.conf / wpa_supplicant | Intégrité (inféré) : même classe. Le gadget a exécuté le chemin identity. |
| directive supplémentaire invalide | démons sans fil | Disponibilité (inféré) : hostapd / wpa_supplicant peuvent échouer au démarrage. |
| ce chemin | aucun | Recon : aucune lecture supplémentaire des secrets de config.xml. |
Prouvé en lab vs inféré : la directive supplémentaire via retour à la ligne dans identity et le contrôle du SSID sur une seule ligne sont des SUCCÈS en lab. L'application par hostapd et par le démon en production est inférée.
Nécessite : page-interfaces-wireless-edit. POST /api/interfaces/wireless_settings/*. Pas page-all. Jeton CSRF. Le <input type="text"> du navigateur ne conservera pas les CR/LF ; un POST direct depuis cette session le fera.
| Surface | Lab |
|---|---|
| Retour à la ligne dans le SSID | contraint (ssid-control=single-line) |
| Non authentifié | fermé |
Admin sans fil page-all | configuration radio prévue ; le reste correspond à des directives supplémentaires qu'un éditeur délégué n'était pas censé créer |
| cmdi de pont de portée CVE-2025-50989 | désormais configdRun sans jeton de requête |
| Clés WEP | escapeshellarg vers ifconfig |
Pas de non authentifié. Le SSID rejette déjà les CR/LF. Un admin complet dispose déjà de root par conception.
cd lab
./run.sh
Boucle locale 127.0.0.1:18840. Projet Compose opnsense-wlan-wpa-line. Témoin OPNSENSE-WLAN-WPA-LINE-WITNESS. Dernière ligne :
SUCCESS opnsense-wlan-wpa-line identity-newline=yes extra-directive=yes ssid-control=single-line OPNSENSE-WLAN-WPA-LINE-WITNESS
Définir AllowNewlines=N sur identity, passphrase et les secrets RADIUS, comme pour le SSID. Supprimer les CR/LF et les guillemets dans interfaces_wlan_configure afin que tous les appelants soient couverts. Les directives supplémentaires de hostapd / wpa_supplicant doivent être réservées à page-all.
a842fe48c21288d11a422cb944678e8eb308becfWlan.xmlinterfaces.inc interfaces_wlan_configureAllowNewlines=N