
OPNsense 26.7.6 - 높음 - 원격 - 설정 라인 주입 - NTP GPS fudge
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
분류: 설정 라인 주입 도달 범위: 원격
OPNsense core 26.7.6 (a842fe48) - opnsense.org
GHSA-fq94의 잔재. GPS/PPS fudge1 / fudge2 / refid는 timeserver 호스트가 제거된 후에도 여전히 /var/etc/ntpd.conf에 연결됩니다. CVE-2026-53581 경로 덮어쓰기는 허용 목록에 포함되어 있습니다(^cua[a-z0-9.,{}]+$ 및 문자 디바이스). 일반 NTP 페이지는 이미 추가 ntpd.conf 텍스트를 권한 상승(userIsAdmin)으로 취급합니다. GPS/PPS ACL은 별개입니다. configd_run('service restart ntpd')를 저장합니다. ntpd는 -u 없이 root로 실행됩니다.
| ID | 아직 CVE 없음 |
| 분류 | 설정 라인 주입 |
| 도달 범위 | 원격 (인증된 WebGUI) |
| CWE | CWE-93 / CWE-74 |
| 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) NTP GPS/PPS fudge |
| 인증 | page-services-ntp-gps 및/또는 page-services-ntp-pps 권한이 있는 WebGUI 세션 |
| 라이선스 | GNU Affero GPL v3.0 |
| 랩 | 127.0.0.1 전용 |
태그 26.7.6을 고정했습니다. 랩은 고정된 ntpd_configure_do의 PHP 가젯이며, 루프백 아이덴티티는 127.0.0.1:18830입니다. GPS fudge CR/LF는 추가 logfile 라인을 작성했습니다. Timeserver 호스트 CR/LF는 하나의 토큰으로 축소되었습니다.
| 방법 | 싱크 | 권한 |
|---|---|---|
GPS fudge1 CR/LF | fudge 127.127.20.0 뒤에 ntpd_configure_do 추가 logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS 고정 | 무결성 (랩 입증): ntpd.conf 추가 라인. 랩: fudge-newline=yes. |
includefile / driftfile / statsdir 준수 | ntpd가 root로, -u 없음 | 무결성 (추정): 추가 ntpd 정책 / ntpd 쓰기 가능 경로에 파일 쓰기. 가젯에서 ntpd가 시작되지 않음. |
| timeserver 호스트 CR/LF | ntpd.inc:327-329 제거 | 부정 (랩 입증): timeserver가 하나의 토큰으로 축소됨. timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | PPS fudge 127.127.22.0 블록 | 무결성 (추정): 동일 클래스. 가젯은 GPS 경로를 실행함. |
| 잘못된 추가 지시문 | ntpd 시작 | 가용성 (추정): ntpd가 시작에 실패할 수 있음. |
| 이 경로 | 없음 | 정찰: config.xml 시크릿의 추가 읽기 없음. |
랩 입증 vs 추정: GPS fudge 개행과 timeserver 제거는 랩 SUCCESS입니다. PPS 형제 및 root로 실행되는 라이브 ntpd는 추정입니다.
요구 사항: page-services-ntp-gps (랩) 및/또는 page-services-ntp-pps. page-all은 아님. configure_gps/pps가 true를 반환하도록 라이브 /dev/cua* 문자 노드. NTP 활성화. CSRF 토큰. 브라우저 <input type="text">는 CR/LF를 유지하지 않지만, 해당 세션에서 직접 POST하면 유지됩니다.
| 표면 | 랩 |
|---|---|
| CVE-2026-53581 임의 경로 덮어쓰기 | ../는 더 이상 /dev/를 벗어나지 않음 (gps-char=char) |
| GHSA-h793 GPS XSS | 이 잔재로 이어지는 체인 없음 |
| Timeserver 호스트 CR/LF | 제거됨 (timeserver-stripped=yes) |
일반 NTP 페이지의 custom_options | page-all / userIsAdmin 전용 |
| 비인증 | 닫힘 |
비인증 없음. 53581 경로 덮어쓰기 없음. Timeserver 호스트는 이미 제거가 적용됨.
cd lab
./run.sh
루프백 127.0.0.1:18830. Compose 프로젝트 opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. 마지막 라인:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
GPS/PPS fudge1 / fudge2 / refid에서 CR/LF를 제거하고(따옴표도 처리) timeserver 호스트가 ntpd.inc:327-329에서 이미 하는 것과 동일하게 처리하십시오. 또는 해당 필드를 숫자 / 토큰 클래스로 제한하십시오. 추가 ntpd.conf 텍스트는 userIsAdmin 뒤에 유지하십시오.
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php