
OPNsense 26.7.6 - उच्च - रिमोट - कॉन्फ़िग लाइन इंजेक्शन - NTP GPS फज
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-ntp-gps-fudge
Class: Config line injection Reach: Remote
OPNsense core 26.7.6 (a842fe48) - opnsense.org
GHSA-fq94 का अवशेष। GPS/PPS fudge1 / fudge2 / refid अभी भी /var/etc/ntpd.conf में जुड़ते हैं, जबकि timeserver hosts हटा दिए गए थे। CVE-2026-53581 path overwrite allowlisted है (^cua[a-z0-9.,{}]+$ तथा एक char device)। सामान्य NTP पृष्ठ पहले से ही अतिरिक्त ntpd.conf टेक्स्ट को escalation मानता है (userIsAdmin)। GPS/PPS ACLs अलग हैं। configd_run('service restart ntpd') सहेजें। ntpd बिना -u के root के रूप में चलता है।
| ID | अभी कोई CVE नहीं |
| Class | Config line injection |
| Reach | Remote (प्रमाणित 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 |
| Product | OPNsense core (Deciso B.V.) |
| Affected | OPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) NTP GPS/PPS fudge |
| Auth | WebGUI सत्र जिसमें page-services-ntp-gps और/या page-services-ntp-pps हो |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
मैंने टैग 26.7.6 पिन किया। लैब pinned ntpd_configure_do का एक PHP gadget है, loopback identity 127.0.0.1:18830। GPS fudge CR/LF ने एक अतिरिक्त logfile पंक्ति लिखी। Timeserver host CR/LF एक टोकन में समाहित हो गया।
| Method | Sink | Privilege |
|---|---|---|
GPS fudge1 CR/LF | fudge 127.127.20.0 के बाद pin ntpd_configure_do अतिरिक्त logfile /oracle/OPNSENSE-NTP-GPS-FUDGE-WITNESS | Integrity (lab-proven): ntpd.conf अतिरिक्त पंक्ति। लैब: fudge-newline=yes. |
includefile / driftfile / statsdir का honor | ntpd root के रूप में, बिना -u | Integrity (inferred): अतिरिक्त ntpd नीति / ntpd-लिखने योग्य पथ पर फ़ाइल लेखन। gadget में ntpd प्रारंभ नहीं हुआ। |
| timeserver host CR/LF | ntpd.inc:327-329 strip | Negative (lab-proven): timeserver एक टोकन में समाहित। timeserver-stripped=yes. |
PPS fudge1 / refid CR/LF | PPS fudge 127.127.22.0 ब्लॉक | Integrity (inferred): समान वर्ग। gadget ने GPS पथ चलाया। |
| अमान्य अतिरिक्त निर्देश | ntpd start | Availability (inferred): ntpd प्रारंभ होने में विफल हो सकता है। |
| यह पथ | कोई नहीं | Recon: config.xml रहस्यों का कोई अतिरिक्त पठन नहीं। |
Lab-proven vs inferred: GPS fudge newline और timeserver strip लैब SUCCESS हैं। PPS sibling और root के रूप में live ntpd inferred हैं।
आवश्यक: page-services-ntp-gps (लैब) और/या page-services-ntp-pps। page-all नहीं। live /dev/cua* char node ताकि configure_gps/pps true लौटाए। NTP सक्षम। CSRF टोकन। ब्राउज़र <input type="text"> CR/LF नहीं रखेगा; उस सत्र से सीधा POST रखेगा।
| Surface | Lab |
|---|---|
| CVE-2026-53581 arbitrary-path overwrite | ../ अब /dev/ नहीं छोड़ता (gps-char=char) |
| GHSA-h793 GPS XSS | इस अवशेष से कोई श्रृंखला नहीं |
| Timeserver host CR/LF | हटाया गया (timeserver-stripped=yes) |
सामान्य NTP पृष्ठ पर custom_options | केवल page-all / userIsAdmin |
| Unauth | बंद |
कोई unauth नहीं। कोई 53581 path overwrite नहीं। Timeserver hosts को पहले ही strip मिल चुका है।
cd lab
./run.sh
Loopback 127.0.0.1:18830. Compose प्रोजेक्ट opnsense-ntp-gps-fudge. Witness OPNSENSE-NTP-GPS-FUDGE-WITNESS. अंतिम पंक्ति:
SUCCESS opnsense-ntp-gps-fudge fudge-newline=yes timeserver-stripped=yes OPNSENSE-NTP-GPS-FUDGE-WITNESS
GPS/PPS fudge1 / fudge2 / refid पर CR/LF हटाएँ (और quotes को संभालें) उसी तरह जैसे timeserver hosts पहले से ntpd.inc:327-329 पर करते हैं। या उन फ़ील्ड्स को numeric / token वर्ग तक सीमित करें। अतिरिक्त ntpd.conf टेक्स्ट को userIsAdmin के पीछे रखें।
a842fe48c21288d11a422cb944678e8eb308becfntpd.inc ntpd_configure_doservices_ntpd_gps.php