
OPNsense 26.7.6 - Alta - Remota - Iniezione di riga di configurazione - NTP GPS fudge
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
Classe: Iniezione di riga di configurazione Portata: Remota
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Residuo di GHSA-fq94. I campi GPS/PPS fudge1 / fudge2 / refid vengono ancora concatenati in /var/etc/ntpd.conf dopo che gli host timeserver sono stati rimossi. Il percorso di sovrascrittura di CVE-2026-53581 è in allowlist (^cua[a-z0-9.,{}]+$ più un char device). La pagina NTP generale tratta già il testo extra in ntpd.conf come escalation (userIsAdmin). Le ACL di GPS/PPS sono separate. Salva configd_run('service restart ntpd'). ntpd viene eseguito come root senza -u.
| ID | nessuna CVE al momento |
| Classe | Iniezione di riga di configurazione |
| Portata | Remota (WebGUI autenticata) |
| CWE | CWE-93 / CWE-74 |
| CVSS | Alto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Prodotto | OPNsense core (Deciso B.V.) |
| Affetto | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) NTP GPS/PPS fudge |
| Auth | Sessione WebGUI con page-services-ntp-gps e/o page-services-ntp-pps |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Ho fissato il tag 26.7.6. Il lab è un gadget PHP di ntpd_configure_do fissato, identità loopback 127.0.0.1:18830. Il CR/LF di GPS fudge ha scritto una riga logfile extra. Il CR/LF dell'host timeserver è collassato in un singolo token.
| Metodo | Sink | Privilegio |
|---|---|---|
GPS fudge1 CR/LF | fissa ntpd_configure_do con logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS extra dopo fudge 127.127.20.0 | Integrità (dimostrata in lab): riga extra in ntpd.conf. Lab: fudge-newline=yes. |
rispetto di includefile / driftfile / statsdir | ntpd come root, senza -u | Integrità (inferita): policy ntpd extra / scrittura file in un percorso scrivibile da ntpd. ntpd non avviato nel gadget. |
| CR/LF dell'host timeserver | strip in ntpd.inc:327-329 | Negativo (dimostrato in lab): timeserver collassato in un singolo token. timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | blocco PPS fudge 127.127.22.0 | Integrità (inferita): stessa classe. Il gadget ha eseguito il percorso GPS. |
| direttiva extra non valida | avvio di ntpd | Disponibilità (inferita): ntpd può non riuscire ad avviarsi. |
| questo percorso | nessuno | Recon: nessuna lettura extra dei segreti di config.xml. |
Dimostrato in lab vs inferito: il newline di GPS fudge e lo strip del timeserver sono SUCCESSO in lab. Il sibling PPS e ntpd live come root sono inferiti.
Richiede: page-services-ntp-gps (lab) e/o page-services-ntp-pps. Non page-all. Un char node live /dev/cua* affinché configure_gps/pps restituisca true. NTP abilitato. Token CSRF. Il <input type="text"> del browser non manterrà CR/LF; un POST diretto da quella sessione sì.
| Superficie | Lab |
|---|---|
| Sovrascrittura di percorso arbitrario CVE-2026-53581 | ../ non esce più da /dev/ (gps-char=char) |
| XSS GPS GHSA-h793 | nessuna catena verso questo residuo |
| CR/LF dell'host timeserver | rimosso (timeserver-stripped=yes) |
custom_options sulla pagina NTP generale | solo page-all / userIsAdmin |
| Non autenticato | chiuso |
Nessuna via non autenticata. Nessuna sovrascrittura di percorso 53581. Gli host timeserver hanno già ricevuto lo strip.
cd lab
./run.sh
Loopback 127.0.0.1:18830. Progetto Compose opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. Ultima riga:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
Rimuovere CR/LF (e trattare le virgolette) sui campi GPS/PPS fudge1 / fudge2 / refid allo stesso modo in cui gli host timeserver già fanno in ntpd.inc:327-329. Oppure vincolare quei campi a una classe numerica / di token. Mantenere il testo extra in ntpd.conf dietro userIsAdmin.
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php