
OPNsense 26.7.6 - Alta - Remoto - Injeção de linha de configuração - NTP GPS fudge
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
Classe: Injeção de linha de configuração Alcance: Remoto
OPNsense core 26.7.6 (a842fe48) - opnsense.org
Resquício do GHSA-fq94. GPS/PPS fudge1 / fudge2 / refid ainda são concatenados em /var/etc/ntpd.conf depois que os hosts do timeserver foram removidos. A sobrescrita de caminho da CVE-2026-53581 está na allowlist (^cua[a-z0-9.,{}]+$ mais um dispositivo de caractere). A página geral do NTP já trata texto extra no ntpd.conf como escalação (userIsAdmin). As ACLs de GPS/PPS são separadas. Salvar configd_run('service restart ntpd'). O ntpd é executado como root sem -u.
| ID | ainda sem CVE |
| Classe | Injeção de linha de configuração |
| 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 |
| Produto | OPNsense core (Deciso B.V.) |
| Afetado | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) NTP GPS/PPS fudge |
| Autenticação | Sessão WebGUI com page-services-ntp-gps e/ou page-services-ntp-pps |
| Licença | GNU Affero GPL v3.0 |
| Lab | somente 127.0.0.1 |
Fixe a tag 26.7.6. O lab é um gadget PHP do ntpd_configure_do fixado, identidade de loopback 127.0.0.1:18830. O CR/LF do fudge de GPS escreveu uma linha logfile extra. O CR/LF do host do timeserver colapsou em um único token.
| Método | Sink | Privilégio |
|---|---|---|
GPS fudge1 CR/LF | fixar ntpd_configure_do logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS extra após fudge 127.127.20.0 | Integridade (comprovada em lab): linha extra no ntpd.conf. Lab: fudge-newline=yes. |
honra de includefile / driftfile / statsdir | ntpd como root, sem -u | Integridade (inferida): política extra do ntpd / escrita de arquivo em um caminho gravável pelo ntpd. ntpd não iniciado no gadget. |
| host do timeserver CR/LF | remoção em ntpd.inc:327-329 | Negativo (comprovado em lab): timeserver colapsado em um único token. timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | bloco PPS fudge 127.127.22.0 | Integridade (inferida): mesma classe. O gadget executou o caminho do GPS. |
| diretiva extra inválida | inicialização do ntpd | Disponibilidade (inferida): o ntpd pode falhar ao iniciar. |
| este caminho | nenhum | Recon: nenhuma leitura extra de segredos do config.xml. |
Comprovado em lab vs inferido: nova linha do fudge de GPS e remoção do timeserver são SUCESSO em lab. O irmão PPS e o ntpd ativo como root são inferidos.
Requer: page-services-ntp-gps (lab) e/ou page-services-ntp-pps. Não page-all. Nó de caractere /dev/cua* ativo para que configure_gps/pps retorne true. NTP habilitado. Token CSRF. O <input type="text"> do navegador não manterá CR/LF; um POST direto a partir dessa sessão manterá.
| Superfície | Lab |
|---|---|
| Sobrescrita de caminho arbitrário da CVE-2026-53581 | ../ não sai mais de /dev/ (gps-char=char) |
| XSS de GPS do GHSA-h793 | sem cadeia para este resquício |
| Host do timeserver CR/LF | removido (timeserver-stripped=yes) |
custom_options na página geral do NTP | somente page-all / userIsAdmin |
| Não autenticado | fechado |
Sem não autenticado. Sem sobrescrita de caminho da 53581. Os hosts do timeserver já receberam a remoção.
cd lab
./run.sh
Loopback 127.0.0.1:18830. Projeto Compose opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. Última linha:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
Remova CR/LF (e trate aspas) em GPS/PPS fudge1 / fudge2 / refid da mesma forma que os hosts do timeserver já fazem em ntpd.inc:327-329. Ou restrinja esses campos a uma classe numérica / de token. Mantenha texto extra no ntpd.conf atrás de userIsAdmin.
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php