
أداة إعادة إنتاج وتحليل لـ CVE-2026-79986، وهو اجتياز مسار في Apache Camel camel-azure-files حيث تتجاوز أسماء قوائم المشاركة الدليل الذي تتم استطلاعه.
مستودع إعادة إنتاج لثغرة Apache Camel حيث يقوم مستهلك azure-files — الذي يشتق من نفس الفئة الأساسية RemoteFileConsumer كباقي مستهلكي الملفات البعيدة ويُركّب المسار البعيد عبر مساعد ربط نصي بسيط — ببناء المسار البعيد لكل ملف يتم استطلاعه عبر ربط الدليل المُهيّأ بالاسم المُبلَّغ عنه في قائمة مشاركة Azure File، دون أي فحص للاحتواء. وبالتالي فإن اسم قائمة ليس مقطع مسار واحدًا كان يُحلّ خارج الدليل المستطلع لأغراض الاسترداد، ومع delete/move/preMove/moveFailed/readLock=rename، للحذف أو إعادة التسمية.
إعادة الإنتاج هذه للمؤلف فقط — انظر أدناه — وهي الشقيقة الخاصة بـ Azure-Files لنُسخ إعادة الإنتاج القابلة للتشغيل CVE-2026-79983 (
camel-ftp) و CVE-2026-79984 (camel-mina-sftp)، والتي تُظهر السبب الجذري والإصلاح المتطابقين من البداية إلى النهاية مقابل خادم خبيث مُضمَّن.
لذلك يحمل هذا المستودع توصيلات المستهلك المتأثر الدقيقة (مسار camel-azure-files حقيقي، انظر
AzureFilesRoute.java / AzureFilesRoutes.java)، ويوثّق الآلية والإصلاح، ويُحيل العرض التوضيحي القابل للتشغيل
من البداية إلى النهاية إلى نُسخ إعادة إنتاج FTP وSFTP أعلاه.
| بيئة التشغيل | الدليل | الحزمة |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-files 4.22.0 (متأثر؛ مُصلَح في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-azure-files 3.29.0 (Camel 4.15.0، متأثر) |
كلا الوحدتين تُترجم وتُقلع بنظافة دون بيانات اعتماد Azure (المسار مُعرَّف بـ autoStartup=false). اضبط
-Daz.enabled=true مع az.account/az.share/az.sharedKey لتوجيه المسار المتأثر الدقيق إلى مشاركة Azure File
خاصة بك.
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-azure-files (مخطط azure-files) |
| CWE | CWE-22 (التقييد غير السليم لاسم المسار إلى دليل محظور) |
| الخطورة | عالية |
| ناقل الهجوم | اسم قائمة مشاركة (يوفّره الخادم) ليس مقطع مسار واحدًا |
| التأثير | قراءة — ومع delete/move/readLock=rename، حذف أو إعادة تسمية — ملفات خارج الدليل الذي تتم استطلاعه، باستخدام بيانات اعتماد نقطة النهاية |
| الإصدارات المتأثرة | من 4.0.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-79986.html
يطبّق مستهلك azure-files الآن نفس فحص الاحتواء الذي تطبّقه مستهلكات الملفات البعيدة الأخرى: يتم تخطي أي مسار مُحلَّل يقع خارج الدليل الذي تتم استطلاعه مع تسجيل تحذير، بحيث لا يصل اسم قائمة يحمل مقاطع اجتياز مسار إلى معامل الاسترداد/الحذف/إعادة التسمية.
قيّد المستهلك باستخدام filter/antInclude/include لقبول الأسماء ذات المقطع الواحد فقط، وتجنّب
delete/move/preMove/moveFailed/readLock=rename على المشاركات التي لا تكون قوائمها موثوقة بالكامل.
نُشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلّها. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.