
OPNsense 26.7.6 - 높음 - 원격 - 설정 줄 주입 - WLAN WPA identity
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-wlan-wpa-line
분류: 설정 라인 주입 도달 범위: 원격
OPNsense core 26.7.6 (a842fe48) - opnsense.org
GHSA-fq94의 잔여 문제. 무선 SSID에는 AllowNewlines=N이 적용되었다. identity, passphrase, RADIUS auth_server_shared_secret은 여전히 순수한 TextField(기본적으로 개행 허용)로 남아 있어 /var/etc/wpa_supplicant_*.conf와 /var/etc/hostapd_*.conf에 그대로 덤프된다. interfaces.inc는 identity="{identity}"를 wpa_supplicant 스탠자에 보간한다. 개행이나 따옴표를 깨면 root 권한으로 추가 지시문이 삽입된다. 권한은 page-all이 아니라 page-interfaces-wireless-edit이다.
| ID | 아직 CVE 없음 |
| 분류 | 설정 라인 주입 |
| 도달 범위 | 원격 (인증된 WebGUI) |
| CWE | CWE-93 |
| CVSS | 높음: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| 제품 | OPNsense core (Deciso B.V.) |
| 영향받음 | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Wlan.xml identity / passphrase |
| 인증 | page-interfaces-wireless-edit 권한의 WebGUI 세션 |
| 라이선스 | GNU Affero GPL v3.0 |
| 랩 | 127.0.0.1 전용 |
태그 26.7.6을 고정했다. 랩은 고정된 interfaces_wlan_configure의 PHP 가젯이며, 127.0.0.1:18840에서 루프백 HTTP를 사용한다. Identity의 CR/LF가 추가 # OPNSENSE-WLAN-WPA-LINE-WITNESS를 기록했다. SSID는 한 줄로 유지되었다.
| 방법 | 싱크 | 권한 |
|---|---|---|
| identity CR/LF | wpa_supplicant conf에 interfaces_wlan_configure 추가 지시문 고정 | 무결성 (랩 입증): identity 뒤에 추가 # OPNSENSE-WLAN-WPA-LINE-WITNESS. 랩: identity-newline=yes extra-directive=yes. |
추가 network / ssid / ap_scan / ctrl_interface 적용 | root 권한의 wpa_supplicant / hostapd | 무결성 (추정): 추가 데몬 지시문. 가젯에서는 wpa_supplicant가 시작되지 않음. |
| SSID CR/LF | AllowNewlines=N | 부정 (랩 입증): SSID는 한 줄로 유지됨. ssid-control=single-line. |
| passphrase / RADIUS secret CR/LF | hostapd_*.conf / wpa_supplicant | 무결성 (추정): 동일 분류. 가젯은 identity 경로를 실행함. |
| 잘못된 추가 지시문 | 무선 데몬 | 가용성 (추정): hostapd / wpa_supplicant가 시작에 실패할 수 있음. |
| 이 경로 | 없음 | 정찰: config.xml 시크릿의 추가 읽기 없음. |
랩 입증 vs 추정: identity 개행 추가 지시문과 SSID 단일 라인 제어는 랩 SUCCESS이다. hostapd와 라이브 데몬 적용은 추정이다.
요구 사항: page-interfaces-wireless-edit. POST /api/interfaces/wireless_settings/*. page-all 아님. CSRF 토큰. 브라우저 <input type="text">는 CR/LF를 유지하지 않지만, 해당 세션에서 직접 POST하면 유지된다.
| 표면 | 랩 |
|---|---|
| SSID 개행 | 제한됨 (ssid-control=single-line) |
| 비인증 | 닫힘 |
page-all 무선 관리자 | 의도된 라디오 설정; 잔여 문제는 위임된 편집자가 생성해서는 안 되는 추가 지시문 |
| CVE-2025-50989 bridge span cmdi | 이제 요청 토큰 없는 configdRun |
| WEP 키 | ifconfig로의 escapeshellarg |
비인증 없음. SSID는 이미 CR/LF를 거부한다. 전체 관리자는 설계상 이미 root를 가진다.
cd lab
./run.sh
루프백 127.0.0.1:18840. Compose 프로젝트 opnsense-wlan-wpa-line. Witness OPNSENSE-WLAN-WPA-LINE-WITNESS. 마지막 줄:
SUCCESS opnsense-wlan-wpa-line identity-newline=yes extra-directive=yes ssid-control=single-line OPNSENSE-WLAN-WPA-LINE-WITNESS
SSID와 마찬가지로 identity, passphrase, RADIUS 시크릿에 AllowNewlines=N을 설정한다. interfaces_wlan_configure 내부에서 CR/LF와 따옴표를 제거하여 모든 호출자가 보호되도록 한다. 추가 hostapd / wpa_supplicant 지시문은 page-all 뒤에 두어야 한다.
a842fe48c21288d11a422cb944678e8eb308becfWlan.xmlinterfaces.inc interfaces_wlan_configureAllowNewlines=N