
OPNsense 26.7.6 - عالي - عن بُعد - حقن سطر التكوين - محمّل المعاملات القابلة للضبط
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-tunables-loader
الفئة: حقن سطر الإعدادات الوصول: عن بُعد
OPNsense core 26.7.6 (a842fe48) - opnsense.org
System: Advanced: Tunables لا يزال يُدرج الاسم/القيمة في /boot/loader.conf. بقايا شقيقة لـ GHSA-fq94. حقول tunable / value في Tunables.xml هي TextField مجرّدة (الأسطر الجديدة مفعّلة). system_login_configure() يكتب {$param}="{$value}". إعادة تهيئة Tunables تُعيد أيضًا تشغيل login. يمر sysctl(8) الحيّ عبر shell_safe بالإضافة إلى مرشّح OID، لذا تلك القفزة ليست حقن shell. ما تبقّى هو توجيهات loader إضافية عند الإقلاع التالي. الصلاحية هي page-system-advanced-sysctl، وليس page-all.
تبقى حزمة GitHub هذه خاصة حتى الإفصاح المنسّق.
| ID | لا يوجد CVE بعد |
| الفئة | حقن سطر الإعدادات |
| الوصول | عن بُعد (WebGUI / API موثّق) |
| CWE | CWE-93 |
| CVSS | مرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| المنتج | OPNsense core |
| المتأثر | 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) System: Advanced: Tunables |
| المصادقة | جلسة WebGUI أو مفتاح API مع page-system-advanced-sysctl |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | compose exec gadget (hunt slot 18850) |
ثبّتت الوسم 26.7.6 peel a842fe48. المختبر عبارة عن PHP gadget لـ system_login_configure() المثبّتة. مشروع Compose opnsense-tunables-loader. Hunt slot 18850 في عائلة gadget 18800-18860؛ ملف compose هذا يستخدم docker compose exec php، وليس ربط HTTP منشور.
| الطريقة | المخرج | الصلاحية |
|---|---|---|
قيمة Tunables بـ CR/LF (hw.usb.no_boot_wait بالإضافة إلى "\n# witness) | تثبيت سطر إضافي في system_login_configure() داخل /boot/loader.conf | السلامة (مُثبت مختبريًا): # OPNSENSE-TUNABLES-LOADER-WITNESS إضافي على سطر خاص به بعد إسناد مغلق. المختبر: newline-extra-line=yes. |
قيمة نظيفة 1 | نفس الكاتب | سلبي (مُثبت مختبريًا): سطر إسناد واحد، بلا witness. المختبر: clean-value-single-line=yes. |
| نفس أسطر loader الإضافية عند الإقلاع التالي | loader init_path / module_path / *_load / vfs.root.mountfrom / console | السلامة (مُستنتج): loader عند الإقلاع التالي يحترم مفاتيح المهاجم. لم يُعَد التشغيل في هذا gadget. |
أسطر loader غير صالحة / vfs.root.mountfrom خاطئ | /boot/loader.conf | التوافر (مُستنتج): فشل الإقلاع أو جذر خاطئ. |
POST /api/core/tunables/searchItem | واجهة tunables API | استطلاع (مُستنتج): سرد tunables، بما في ذلك الحالي/الافتراضي/النوع. مقصود لهذه ACL. |
sysctl -w الحيّ لـ OID صالح | set_sysctl + مرشّح OID | مهمة الصفحة المقصودة. أسطر loader الإضافية هي البقايا. |
مُثبت مختبريًا مقابل مُستنتج: سطر loader الإضافي بالسطر الجديد والقيمة النظيفة بسطر واحد هما نجاح مختبري. تطبيق loader عند الإقلاع التالي مُستنتج. Gadget، وليس جهاز OPNsense FreeBSD VM كامل.
يتطلب: مستخدم مسجّل الدخول أو مفتاح API المحلي لذلك المستخدم مع page-system-advanced-sysctl وبدون page-all. POST /api/core/tunables/*. CSRF على POST الجلسة. إعادة التهيئة تُعيد تشغيل login؛ rc.reload_all والإقلاع أيضًا يستدعيان system_login_configure.
| السطح | المختبر |
|---|---|
| حقن shell في sysctl الحيّ | shell_safe بالإضافة إلى مرشّح OID |
| قيمة نظيفة | سطر إسناد واحد |
| غير موثّق | 401 |
مستخدم بدون page-system-advanced-sysctl | 403 |
user-config-readonly | save() يرمي استثناءً |
مسؤول tunables بـ page-all يضبط OID حقيقيًا | مقصود |
| حقول نص GUI المُرقّعة في GHSA-fq94 | مخارج مختلفة؛ هذا الحقل لم يُسمَّ |
لا يوجد غير موثّق. لا يوجد shell sysctl حيّ. لا يوجد Diagnostics: Command.
cd lab
./run.sh
مشروع Compose opnsense-tunables-loader. Witness OPNSENSE-TUNABLES-LOADER-WITNESS. السطر الأخير:
SUCCESS opnsense-tunables-loader newline-extra-line=yes clean-value-single-line=yes OPNSENSE-TUNABLES-LOADER-WITNESS
مشغّل الجذر: python3 opnsense-tunables-loader-Abraxas-Labs.py.
أزل CR/LF و " من اسم وقيمة tunables، نفس فئة GHSA-fq94. اكتب الاسم كقناع OID، وليس TextField مجرّدًا. ضع علامات اقتباس باستخدام مساعد لا يمكنه إغلاق الإسناد. لا تكتب tunable في /boot/loader.conf إلا إذا كان مفتاح loader معروفًا.
a842fe48c21288d11a422cb944678e8eb308becfsystem.inc إدراج loader.conf في system_login_configureTunables.xml TextField مجرّد للاسم/القيمة