
OPNsense 26.7.6 – Hoch – Remote – Konfigurationszeilen-Injektion – NTP GPS Fudge
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
Klasse: Config-Zeilen-Injection Reichweite: Remote
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Überbleibsel von GHSA-fq94. GPS/PPS fudge1 / fudge2 / refid werden weiterhin in /var/etc/ntpd.conf konkateniert, nachdem Timeserver-Hosts entfernt wurden. Der CVE-2026-53581-Pfad-Overwrite ist allowlisted (^cua[a-z0-9.,{}]+$ plus ein Char-Device). Die allgemeine NTP-Seite behandelt zusätzlichen ntpd.conf-Text bereits als Eskalation (userIsAdmin). GPS/PPS-ACLs sind separat. Speichern configd_run('service restart ntpd'). ntpd läuft als root ohne -u.
| ID | noch keine CVE |
| Klasse | Config-Zeilen-Injection |
| Reichweite | Remote (authentifiziertes WebGUI) |
| CWE | CWE-93 / CWE-74 |
| 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) NTP GPS/PPS fudge |
| Auth | WebGUI-Sitzung mit page-services-ntp-gps und/oder page-services-ntp-pps |
| 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 ntpd_configure_do, Loopback-Identität 127.0.0.1:18830. GPS fudge CR/LF schrieb eine zusätzliche logfile-Zeile. Timeserver-Host CR/LF kollabierte zu einem Token.
| Methode | Sink | Privileg |
|---|---|---|
GPS fudge1 CR/LF | pin ntpd_configure_do extra logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS nach fudge 127.127.20.0 | Integrität (im Lab bewiesen): ntpd.conf zusätzliche Zeile. Lab: fudge-newline=yes. |
Ausnutzung von includefile / driftfile / statsdir | ntpd als root, kein -u | Integrität (abgeleitet): zusätzliche ntpd-Policy / Dateischreiben an einem ntpd-beschreibbaren Pfad. ntpd im Gadget nicht gestartet. |
| Timeserver-Host CR/LF | ntpd.inc:327-329 Strip | Negativ (im Lab bewiesen): Timeserver zu einem Token kollabiert. timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | PPS fudge 127.127.22.0-Block | Integrität (abgeleitet): gleiche Klasse. Gadget führte den GPS-Pfad aus. |
| ungültige zusätzliche Direktive | ntpd-Start | Verfügbarkeit (abgeleitet): ntpd kann beim Start fehlschlagen. |
| dieser Pfad | keiner | Recon: kein zusätzliches Auslesen von config.xml-Secrets. |
Im Lab bewiesen vs. abgeleitet: GPS fudge Newline und Timeserver-Strip sind Lab-ERFOLG. PPS-Geschwister und Live-ntpd als root sind abgeleitet.
Erfordert: page-services-ntp-gps (Lab) und/oder page-services-ntp-pps. Nicht page-all. Live /dev/cua*-Char-Node, damit configure_gps/pps true zurückgibt. NTP aktiviert. CSRF-Token. Browser-<input type="text"> behält CR/LF nicht; ein direkter POST aus dieser Sitzung schon.
| Fläche | Lab |
|---|---|
| CVE-2026-53581 Arbitrary-Path-Overwrite | ../ verlässt /dev/ nicht mehr (gps-char=char) |
| GHSA-h793 GPS XSS | keine Kette zu diesem Überbleibsel |
| Timeserver-Host CR/LF | gestrippt (timeserver-stripped=yes) |
custom_options auf der allgemeinen NTP-Seite | nur page-all / userIsAdmin |
| Unauth | geschlossen |
Kein Unauth. Kein 53581-Pfad-Overwrite. Timeserver-Hosts haben den Strip bereits erhalten.
cd lab
./run.sh
Loopback 127.0.0.1:18830. Compose-Projekt opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. Letzte Zeile:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
CR/LF strippen (und Quotes behandeln) bei GPS/PPS fudge1 / fudge2 / refid auf dieselbe Weise, wie es Timeserver-Hosts bereits bei ntpd.inc:327-329 tun. Oder diese Felder auf eine numerische / Token-Klasse beschränken. Zusätzlichen ntpd.conf-Text hinter userIsAdmin belassen.
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php