
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 | High: 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 ガジェットで、ループバック ID は 127.0.0.1:18830。GPS fudge の CR/LF により、追加の logfile 行が書き込まれた。timeserver ホストの CR/LF は 1 トークンに折りたたまれた。
| 手法 | シンク | 権限 |
|---|---|---|
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 の尊重 | root としての ntpd、-u なし | 整合性(推定): 追加の ntpd ポリシー / ntpd 書き込み可能パスへのファイル書き込み。ガジェットでは ntpd は起動されない。 |
| timeserver ホスト CR/LF | ntpd.inc:327-329 の除去 | ネガティブ(ラボ実証): timeserver は 1 トークンに折りたたまれた。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。ウィットネス OPNSENSE-NTP-GPS-FUDGE-WITNESS。最終行:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
timeserver ホストが ntpd.inc:327-329 ですでに行っているのと同じ方法で、GPS/PPS の fudge1 / fudge2 / refid の CR/LF を除去する(およびクォートを処理する)。または、これらのフィールドを数値 / トークンクラスに制約する。追加の ntpd.conf テキストは userIsAdmin の背後に保つ。
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php