
OPNsense 26.7.6 - Hoch - Remote - Konfigurationszeilen-Injektion - WLAN WPA-Identität
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-wlan-wpa-line
Klasse: Config-Zeilen-Injection Reichweite: Remote
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Überbleibsel von GHSA-fq94. Wireless-SSID erhielt AllowNewlines=N. identity, passphrase und RADIUS auth_server_shared_secret blieben einfache TextField (Zeilenumbrüche standardmäßig aktiviert) und werden in /var/etc/wpa_supplicant_*.conf und /var/etc/hostapd_*.conf ausgegeben. interfaces.inc interpoliert identity="{identity}" in die wpa_supplicant-Stanza. Ein Zeilenumbruch oder Anführungszeichen-Abbruch fügt zusätzliche Direktiven als root hinzu. Die Berechtigung ist page-interfaces-wireless-edit, nicht page-all.
| ID | noch keine CVE |
| Klasse | Config-Zeilen-Injection |
| Reichweite | Remote (authentifiziertes WebGUI) |
| CWE | CWE-93 |
| CVSS | Hoch: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Produkt | OPNsense core (Deciso B.V.) |
| Betroffen | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Wlan.xml identity / passphrase |
| Auth | WebGUI-Sitzung mit page-interfaces-wireless-edit |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Ich habe den Tag 26.7.6 gepinnt. Das Lab ist ein PHP-Gadget des gepinnten interfaces_wlan_configure, Loopback-HTTP auf 127.0.0.1:18840. Identity CR/LF schrieb eine zusätzliche # OPNSENSE-WLAN-WPA-LINE-WITNESS. SSID blieb eine Zeile.
| Methode | Sink | Berechtigung |
|---|---|---|
| identity CR/LF | pin interfaces_wlan_configure zusätzliche Direktive in wpa_supplicant conf | Integrität (lab-belegt): zusätzliche # OPNSENSE-WLAN-WPA-LINE-WITNESS nach identity. Lab: identity-newline=yes extra-directive=yes. |
Beachtung von zusätzlichem network / ssid / ap_scan / ctrl_interface | wpa_supplicant / hostapd als root | Integrität (abgeleitet): zusätzliche Daemon-Direktiven. wpa_supplicant im Gadget nicht gestartet. |
| SSID CR/LF | AllowNewlines=N | Negativ (lab-belegt): SSID blieb eine Zeile. ssid-control=single-line. |
| passphrase / RADIUS secret CR/LF | hostapd_*.conf / wpa_supplicant | Integrität (abgeleitet): gleiche Klasse. Gadget führte den identity-Pfad aus. |
| ungültige zusätzliche Direktive | Wireless-Daemons | Verfügbarkeit (abgeleitet): hostapd / wpa_supplicant können beim Start fehlschlagen. |
| dieser Pfad | keine | Recon: kein zusätzliches Auslesen von config.xml-Secrets. |
Lab-belegt vs. abgeleitet: identity newline zusätzliche Direktive und SSID single-line control sind Lab-ERFOLG. hostapd und Live-Daemon-Anwendung sind abgeleitet.
Erfordert: page-interfaces-wireless-edit. POST /api/interfaces/wireless_settings/*. Nicht page-all. CSRF-Token. Browser-<input type="text"> behält CR/LF nicht; ein direkter POST aus dieser Sitzung schon.
| Angriffsfläche | Lab |
|---|---|
| SSID newline | eingeschränkt (ssid-control=single-line) |
| Unauth | geschlossen |
page-all wireless admin | beabsichtigte Funkkonfiguration; Überbleibsel sind zusätzliche Direktiven, die ein delegierter Editor nicht erzeugen sollte |
| CVE-2025-50989 bridge span cmdi | jetzt configdRun ohne Request-Token |
| WEP keys | escapeshellarg in ifconfig |
Kein Unauth. SSID lehnt CR/LF bereits ab. Vollständiger Admin hat bereits per Design root.
cd lab
./run.sh
Loopback 127.0.0.1:18840. Compose-Projekt opnsense-wlan-wpa-line. Witness OPNSENSE-WLAN-WPA-LINE-WITNESS. Letzte Zeile:
SUCCESS opnsense-wlan-wpa-line identity-newline=yes extra-directive=yes ssid-control=single-line OPNSENSE-WLAN-WPA-LINE-WITNESS
Setze AllowNewlines=N auf identity, passphrase und RADIUS-Secrets, genau wie bei SSID. Entferne CR/LF und Anführungszeichen innerhalb von interfaces_wlan_configure, damit jeder Aufrufer abgedeckt ist. Zusätzliche hostapd- / wpa_supplicant-Direktiven gehören hinter page-all.
a842fe48c21288d11a422cb944678e8eb308becfWlan.xmlinterfaces.inc interfaces_wlan_configureAllowNewlines=N