
تقرير مفصل عن ثغرة CVE-2026-39938 في Cacti ≤1.2.30، يوضح LFI دون مصادقة متسلسل إلى حقن أوامر نظام التشغيل RCE مع PoC وتحليل السبب الجذري وإرشادات المعالجة.
| الحقل | القيمة |
|---|
| المنتج | Cacti — حل الرسم البياني الكامل المعتمد على RRDtool |
| الإصدار(ات) المتأثرة | ≤ 1.2.30 |
| فئة الثغرة | CWE-22: اجتياز المسار (LFI) → CWE-78: حقن أوامر نظام التشغيل |
| متجه الهجوم | الشبكة |
| المصادقة | غير مطلوبة (تجاوز حساب الضيف) |
| تفاعل المستخدم | لا شيء |
| درجة CVSSv3.1 | 9.8 — حرجة |
| المتجه | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Cacti ≤ 1.2.30 معرض لـ تضمين ملفات محلية غير مصادق عليه (LFI) عبر المعامل graph_theme في graph_image.php، متسلسل إلى تنفيذ تعليمات برمجية عن بعد (RCE) من خلال حقن أوامر نظام التشغيل عبر cacti_escapeshellarg() على Windows.
HTTP Request
│
▼
graph_image.php
│
├── $guest_account = true → Auth bypass (no login needed)
│
├── graph_theme param → LFI (CWE-22)
│ └── Path traversal via basename() bypass
│
└── Other params (graph_height, etc.)
└── cacti_escapeshellarg() → OS injection (CWE-78)
└── proc_open() → RCE
graph_themeالمعامل graph_theme غير معقم بشكل كافٍ. حاول الإصلاح استخدام basename() ولكن يمكن تجاوز ذلك بسهولة — مسار مثل themes/../../etc/passwd يجتاز التحقق من basename() مع الاستمرار في اجتياز الدلائل.
مسار الكود الثغرة في graph_image.php:
$theme = basename($_GET['graph_theme']); // basename() is NOT sufficient
include_once("./include/theme_" . $theme . ".php"); // LFI
يستبدل الإصلاح في الإصدار 1.2.31 دالة basename() بـ cacti_validate_theme()، والتي تستخدم قائمة السماح بنظام الملفات.
| الشرط | الاحتمالية | ملاحظات |
|---|---|---|
| Cacti يعمل على Windows | شائع في المؤسسات | خلل في هروب cmd.exe يمكّن RCE |
| حساب الضيف مفعل | شائع — غالبًا افتراضي | مستخدم الضيف يسمح بعرض الرسوم البيانية علنًا |
| وجود رسم بياني واحد على الأقل | تقريبا عالمي | local_graph_id=1 موجود بعد التثبيت |
| RRDtool مثبت | مطلوب من قبل Cacti | دائمًا موجود |
GET /cacti/graph_image.php?local_graph_id=1&graph_theme=../../../../etc/passwd
GET /cacti/graph_image.php?local_graph_id=1&graph_height=100" & whoami & "&action=view
حقن أوامر نظام التشغيل يوفر بالفعل تنفيذ تعليمات برمجية عن بعد مباشر (RCE)، لذا فإن LFI ليس ضروريًا لتحقيق الاختراق.
ومع ذلك، من منظور الباحث، إذا تم النظر إلى كلتا المشكلتين معًا:
يظهر هذا أن الجمع بين ثغرات متعددة يزيد من التأثير العام ويجعل الاستغلال أسهل وأكثر موثوقية.
| الركيزة | التقييم | الوصف |
|---|---|---|
| السرية | عالية | وصول قراءة كامل لنظام ملفات خادم الويب (التكوين، بيانات اعتماد قاعدة البيانات) |
| النزاهة | عالية | تنفيذ أوامر عشوائية، نشر شيل ويب |
| التوفر | عالية | إنهاء العمليات، إتلاف الملفات، رفض الخدمة |
| المقياس | القيمة |
|---|---|
| متجه الهجوم | الشبكة |
| تعقيد الهجوم | منخفض |
| الصلاحيات المطلوبة | لا شيء |
| تفاعل المستخدم | لا شيء |
| النطاق | لم يتغير |
| السرية | عالية |
| النزاهة | عالية |
| التوفر | عالية |
الدرجة: 9.8 — حرجة
| الأولوية | الإجراء |
|---|---|
| فوري | الترقية إلى Cacti 1.2.31 أو أحدث |
MENG HOKSENG
باحث أمني مستقل
المراجع: