
إثبات المفهوم لـ CVE-2026-30480، وهي ثغرة تضمين ملفات محلي (Local File Inclusion) في وحدة NFSen الخاصة بـ LibreNMS، توضح اجتياز المسار لتضمين ملفات PHP عشوائية وتحليل الأثر.
توجد ثغرة تضمين الملفات المحلي (LFI) في وحدة NFSen الخاصة بـ LibreNMS. يمكن للمهاجم المُصادق استغلال تسلسلات اجتياز المسار لتضمين ملفات PHP عشوائية من نظام ملفات الخادم.
| الحقل | القيمة |
|---|---|
| المنتج | LibreNMS |
| البائع | مشروع LibreNMS |
| نوع الثغرة | تضمين الملفات المحلي (LFI) / اجتياز المسار |
| CWE | CWE-98, CWE-22 |
| درجة CVSS | 7.5 - 8.5 (عالية) |
| المصادقة مطلوبة | نعم |
| تاريخ الاكتشاف | 2026-02-01 |
الملف: includes/html/pages/device/nfsen.inc.php
الأسطر: 46-48
if (is_file('includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
يتم اشتقاق المعامل $vars['nfsen'] من إدخال المستخدم ($_GET/$_POST) ويتم دمجه مباشرة في عبارة include() دون تعقيم مناسب. التحقق الوحيد المُنفَّذ هو فحص is_file()، والذي لا يمنع تسلسلات اجتياز المسار.
../)is_file() يتحقق فقط من الوجود، وليس من سلامة المسارسجّل الدخول إلى LibreNMS كمستخدم مُصادق
انتقل إلى تبويب Netflow لأي جهاز:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow
أضف المعامل الخبيث:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow?nfsen=..%2f..%2fapi-access
لاحظ أنه يتم تحميل محتوى صفحة الوصول إلى API بدلاً من محتوى NFSen
| السيناريو | المتوقع | الفعلي |
|---|---|---|
| طلب عادي | صفحة NFSen العامة (التدفقات، الحزم، الحركة) | صفحة NFSen العامة |
| طلب خبيث | صفحة NFSen العامة | محتوى صفحة الوصول إلى API |
| نوع التأثير | الوصف |
|---|---|
| كشف المعلومات | تضمين وتنفيذ ملفات .inc.php عشوائية |
| تصعيد الامتيازات | الوصول إلى صفحات مخصصة للمسؤولين كمستخدم بصلاحيات منخفضة |
| تنفيذ كود عن بُعد محتمل (RCE) | إذا تمكن المهاجم من التحكم في محتوى أي ملف .inc.php |
الرابط: https://[REDACTED]/about
الإصدار: 22.11.0-23-gd091788f2 (الخميس 15 ديسمبر 2022)
الوصف: معلومات إصدار LibreNMS تُظهر الإصدار المُختبر. هذا الإصدار بعد تصحيح CVE-2021-44278 (v21.12.0)، مما يؤكد أن هذه ثغرة جديدة غير مُصححة.

الرابط: https://[REDACTED]/device/114/tab=netflow
الوصف: صفحة NFSen/Netflow العادية تُظهر أقسام التدفقات والحزم والحركة. هذا هو السلوك المتوقع دون استغلال.

الرابط: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
الحمولة: ..%2f..%2fapi-access (اجتياز مسار مُرمَّز بعنوان URL)
الوصف: عند حقن الحمولة الخبيثة، يتم تحميل محتوى صفحة الوصول إلى API بدلاً من محتوى NFSen. يُظهر هذا نجاح تضمين الملفات المحلي - تم تضمين ملف api-access.inc.php بدلاً من general.inc.php.

الرابط: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
الحمولة: ..%2f..%2fapi-access (اجتياز مسار مُرمَّز بعنوان URL)
الوصف: نفس الاستغلال تمت محاولته مع مستخدم بصلاحيات أقل (قراءة عامة). تعرض الصفحة خطأ "ليس لديك صلاحيات كافية لعرض هذه الصفحة". يؤكد هذا:

showconfig.inc.php وتم تصحيحها في v21.12.0). تؤثر هذه الثغرة على nfsen.inc.php ولا تزال غير مُصححة.تنفيذ تحقق قائم على القائمة البيضاء:
$allowed_pages = ['general', 'stats', 'channel'];
if (in_array($vars['nfsen'], $allowed_pages, true)) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
استخدام basename() لإزالة اجتياز المسار:
$nfsen_page = basename($vars['nfsen']);
if (is_file('includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php';
}
| التاريخ | الإجراء |
|---|---|
| 2026-02-01 | اكتشاف الثغرة |
| 2026-04-14 | نشر CVE، إخطار البائع |
| 2026-04-14 | الكشف العام |
يُقدَّم تقرير الثغرة هذا لأغراض تعليمية وأبحاث أمنية مصرح بها فقط. اتبع الباحث ممارسات الكشف المسؤول من خلال إخطار البائع قبل الكشف العام.
اكتشفها: Ömer Baran Parlak
البريد الإلكتروني: [email protected]
GitHub: parlakbarann