
مُعيد إنتاج وتحليل لـ CVE-2026-79985، وهو اجتياز مسار في Apache Camel camel-smb حيث تتجاوز أسماء قوائم المشاركة احتواء الدليل، مع المسارات المتأثرة وتفاصيل الإصلاح.
مستودع إعادة إنتاج لثغرة Apache Camel حيث يبني مستهلك smb المسار البعيد لكل ملف يتم استطلاعه عبر دمج الدليل
المُهيأ مع الاسم المُبلَّغ عنه في قائمة المشاركة الخاصة بـ SMB، دون أي فحص للاحتواء. يتنقل SmbConsumer في
القائمة بنفسه (وليس عبر RemoteFileConsumer)، متجاوزًا فقط المدخلين . و .. بالضبط، لذا فإن أي اسم يحمل مقاطع
اجتياز بأي شكل آخر كان يُدمج دون فحص — مما يؤدي إلى مسار خارج الدليل المستطلع لاسترجاعه، ومع
delete/move/preMove/moveFailed/readLock=rename، إلى الحذف أو إعادة التسمية.
إعادة الإنتاج هذه للمؤلف فقط — انظر أدناه — وهي النظير الخاص بـ SMB لإعادة الإنتاج القابلة للتشغيل CVE-2026-79983 (
camel-ftp) و CVE-2026-79984 (camel-mina-sftp)، اللتين تُظهران السبب الجذري والإصلاح المتطابقين من البداية إلى النهاية مقابل خادم خبيث مضمَّن.
كما ينص الاستشارة الأمنية نفسها، فإن الوصول إلى المشكلة عبر SMB
"يتطلب خادمًا يُصدر اسم قائمة ليس مقطع مسار واحد، وهو ما لا يفعله تنفيذ SMB2 المتوافق؛ وقد صُحِّح التعرض على الأساس نفسه الذي صُحِّحت به مستهلكات الملفات البعيدة الأخرى بدلًا من إثبات مفهوم مُبرهن ضد هذا المخطط."
لا يوجد خادم SMB خبيث قابل للتضمين يُصدر مثل هذا الاسم (على عكس FTP، حيث يمكن جعل VFS الخاص بـ Apache MINA
FtpServer يفعل ذلك، وSFTP، حيث يمكن تجاوز getShortName الخاص بـ Apache MINA SSHD). لذلك يحمل هذا المستودع
ربط المستهلك المتأثر بالضبط (مسار camel-smb حقيقي، انظر SmbRoute.java / SmbRoutes.java) ويوثّق
الآلية والإصلاح، ويؤجل العرض التوضيحي القابل للتشغيل من البداية إلى النهاية إلى إعادات إنتاج FTP وSFTP أعلاه.
| بيئة التشغيل | الدليل | الحزمة |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-smb 4.22.0 (متأثر؛ مُصلَح في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-smb 3.29.0 (Camel 4.15.0، متأثر) |
كلا الوحدتين تُترجم وتُشغَّل بنظافة دون خادم SMB (المسار مُعرَّف بـ autoStartup=false). اضبط
-Dsmb.enabled=true مع smb.host/smb.share/smb.username/smb.password لتوجيه المسار المتأثر بالضبط إلى
خادم SMB خاص بك.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # prints the explanation + links to the runnable PoCs
docker compose down
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-smb (مخطط smb) |
| CWE | CWE-22 (القيد غير الصحيح لاسم المسار إلى دليل محظور) |
| الخطورة | عالية |
| ناقل الهجوم | اسم قائمة مشاركة (يوفّره الخادم) ليس مقطع مسار واحدًا |
| التأثير | القراءة — ومع delete/move/readLock=rename، الحذف أو إعادة التسمية — لملفات خارج الدليل المُستقصى، باستخدام بيانات اعتماد نقطة النهاية |
| الإصدارات المتأثرة | من 4.2.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24487 |
| الفضل | Dilrevx من NSSL، SJTU |
الإشعار الأمني: https://camel.apache.org/security/CVE-2026-79985.html
يطبّق SmbConsumer الآن نفس فحص الاحتواء الذي تطبّقه مستهلكات الملفات البعيدة الأخرى: يُتخطّى أي مسار مُحلَّل يقع
خارج الدليل المُستقصى مع تسجيل تحذير، بحيث لم يعد اسم قائمة يحمل مقاطع اجتياز مسار
يصل إلى معامل الاسترداد/الحذف/إعادة التسمية.
قيّد المستهلك باستخدام filter/antInclude/include لقبول الأسماء ذات المقطع الواحد فقط، وتجنّب
delete/move/preMove/moveFailed/readLock=rename مع الخوادم التي لا تكون قوائمها موثوقة بالكامل. وحيثما
أمكن، احصر حساب الخادم في الدليل المُستقصى.
نُشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلّها. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.