
OPNsense 26.7.6 - Alta - Remota - Inyección de línea de configuración - NTP GPS fudge
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
Clase: Inyección de línea de configuración Alcance: Remoto
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Residuo de GHSA-fq94. Los fudge1 / fudge2 / refid de GPS/PPS todavía se concatenan en /var/etc/ntpd.conf después de que se eliminaron los hosts de servidor de hora. La sobrescritura de ruta de CVE-2026-53581 está en la lista de permitidos (^cua[a-z0-9.,{}]+$ más un dispositivo de caracteres). La página general de NTP ya trata el texto adicional de ntpd.conf como escalada (userIsAdmin). Las ACL de GPS/PPS son independientes. Guardar configd_run('service restart ntpd'). ntpd se ejecuta como root sin -u.
| ID | aún sin CVE |
| Clase | Inyección de línea de configuración |
| Alcance | Remoto (WebGUI autenticada) |
| 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 |
| Producto | OPNsense core (Deciso B.V.) |
| Afectado | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) NTP GPS/PPS fudge |
| Auth | Sesión WebGUI con page-services-ntp-gps y/o page-services-ntp-pps |
| Licencia | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Fijé el tag 26.7.6. El lab es un gadget PHP de ntpd_configure_do fijado, identidad de loopback 127.0.0.1:18830. El CR/LF de GPS fudge escribió una línea logfile adicional. El CR/LF del host de servidor de hora se colapsó a un solo token.
| Método | Sink | Privilegio |
|---|---|---|
GPS fudge1 CR/LF | fijar ntpd_configure_do línea logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS adicional después de fudge 127.127.20.0 | Integridad (probado en lab): línea adicional en ntpd.conf. Lab: fudge-newline=yes. |
honor de includefile / driftfile / statsdir | ntpd como root, sin -u | Integridad (inferido): política ntpd adicional / escritura de archivo en una ruta escribible por ntpd. ntpd no se inició en el gadget. |
| CR/LF del host de servidor de hora | strip en ntpd.inc:327-329 | Negativo (probado en lab): servidor de hora colapsado a un solo token. timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | bloque PPS fudge 127.127.22.0 | Integridad (inferido): misma clase. El gadget ejecutó la ruta GPS. |
| directiva adicional inválida | inicio de ntpd | Disponibilidad (inferido): ntpd puede fallar al iniciar. |
| esta ruta | ninguna | Recon: sin lectura adicional de secretos de config.xml. |
Probado en lab vs inferido: el newline de GPS fudge y el strip del servidor de hora son ÉXITO en lab. El hermano PPS y ntpd en vivo como root son inferidos.
Requiere: page-services-ntp-gps (lab) y/o page-services-ntp-pps. No page-all. Nodo de caracteres /dev/cua* en vivo para que configure_gps/pps devuelva true. NTP habilitado. Token CSRF. El <input type="text"> del navegador no conservará CR/LF; un POST directo desde esa sesión sí lo hará.
| Superficie | Lab |
|---|---|
| Sobrescritura de ruta arbitraria CVE-2026-53581 | ../ ya no sale de /dev/ (gps-char=char) |
| XSS de GPS GHSA-h793 | sin cadena hacia este residuo |
| CR/LF del host de servidor de hora | eliminado (timeserver-stripped=yes) |
custom_options en la página general de NTP | solo page-all / userIsAdmin |
| Sin autenticación | cerrado |
Sin autenticación. Sin sobrescritura de ruta 53581. Los hosts de servidor de hora ya recibieron el strip.
cd lab
./run.sh
Loopback 127.0.0.1:18830. Proyecto Compose opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. Última línea:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
Eliminar CR/LF (y tratar las comillas) en fudge1 / fudge2 / refid de GPS/PPS de la misma manera que los hosts de servidor de hora ya lo hacen en ntpd.inc:327-329. O restringir esos campos a una clase numérica / de token. Mantener el texto adicional de ntpd.conf detrás de userIsAdmin.
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php