CVE-2026-79985
Apache Camel: قام camel-smb بحل المسار البعيد لملف تم استطلاعه من الاسم المُبلَّغ عنه في قائمة دليل الخادم دون تقييده بالدليل الذي تتم استطلاعه، لذا يمكن نقل إدخال في القائمة يحتوي على مقاطع اجتياز المسار إلى خارج
- تم النشر
- 19/10/2026
- محدث
- 19/10/2026
- تخصيص CNA
- apache
- الأدلة المرصودة
- 17/10/2026
CVSS الأساسي
cvelist · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:Nملخص
ثغرة "التقييد غير السليم لاسم مسار إلى دليل محظور" ('Path Traversal') في مكوّن Apache Camel SMB. تؤثر هذه المشكلة على Apache Camel: من 4.2.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1. تقوم مستهلكات الملفات البعيدة في Camel بالاستعلام الدوري عن دليل على خادم بعيد وبناء المسار البعيد المطلق لكل ملف عبر دمج الدليل المُهيَّأ مع اسم الملف المُبلَّغ عنه في قائمة محتويات الدليل الخاصة بالخادم. لم يُطبِّق هذا الدمج (FtpUtils.absoluteFilePath وGenericFileConsumer) أي تطبيع معجمي ولا أي تحقق من بقاء الناتج داخل الدليل الذي تتم الاستعلامات الدورية عنه، وأصبح المسار الناتج هو المعامل لكل عملية بعيدة لاحقة على الملف: الاسترجاع (FtpOperations.retrieveFile / SftpOperations، الذي يُوصَل إليه من GenericFileConsumer حيث يُؤخذ اسم الاسترجاع حرفيًا من GenericFile.getAbsoluteFilePath)، والحذف عند delete=true (GenericFileDeleteProcessStrategy)، وإعادة التسمية عند تهيئة move أو preMove أو moveFailed أو readLock=rename (GenericFileProcessStrategySupport وGenericFileRenameExclusiveReadLockStrategy). لم يُجرِ أيٌّ من isValidFile أو isMatched أي فحص للاحتواء. لذلك فإن أي مدخل في قائمة المحتويات ليس مقطع مسار واحدًا كان يُحلّ إلى مسار خارج دليل الاستعلام الدوري المُهيَّأ، مما يجعل Camel يقرأ أو يحذف أو يعيد تسمية ملفات خارجه باستخدام بيانات اعتماد نقطة النهاية نفسها. اسم قائمة المحتويات ليس بيانات يتحكم فيها المسار. بل يوفره الخادم البعيد، وقناة التحكم في FTP لا تحمل أي حماية للتكامل على الإطلاق، لذا يمكن لمهاجم على المسار إعادة كتابة استجابة LIST دون امتلاك أي بيانات اعتماد؛ كما يمكن لخادم مخترق أو خبيث أو متعدد المستأجرين، أو خادم مدعوم بنظام ملفات افتراضي، أن يُصدر مثل هذا الاسم مباشرة. الاسترجاع قابل للوصول في تهيئة المستهلك الافتراضية، لأن المستهلكات البعيدة تنزّل كل ملف مُدرَج؛ أما الحذف وإعادة التسمية فيتطلبان إضافةً إلى ذلك أحد خيارات التصرف المذكورة أعلاه، وكلها شائعة. الهروب من الدليل الذي هُيِّئ Camel للاستعلام الدوري عنه غير مشروط، بينما يعتمد الهروب من حدود حساب الخادم نفسه إضافةً إلى ذلك على ما إذا كان ذلك الخادم يحصر الحساب. خيار jailStartingDirectory، المُوثَّق بأنه يقيّد Camel على دليل البداية والمُفعَّل افتراضيًا، كان يحكم عمليات الكتابة من المنتج، ومنذ عمل احتواء localWorkDirectory، عمليات تنزيل المستهلك إلى دليل العمل المحلي - لكنه لم يقيّد هذا المعامل البعيد، لذا ادّعى اسمه ووصفه حدًّا لم يُفرَض هنا. كان قد جرى التعرف على نقطة الدخول نفسها على الجانب المحلي: فقد قُيِّد مسار التنزيل localWorkDirectory بحيث لا يمكن لاسم ملف بعيد يحتوي على مقاطع دليل أب أن يُحلّ إلى خارج دليل العمل المحلي. وكان المعامل البعيد هو النصف المتبقي من ذلك السطح. يوفّر هذا الأثر مخطط smb. يتجول مستهلكه في قائمة محتويات المشاركة بنفسه بدلًا من المرور عبر RemoteFileConsumer، متجاوزًا فقط المدخلين "." و".." بالضبط، لذا فإن أي اسم يحمل مقاطع اجتياز بأي شكل آخر كان يُدمَج دون فحص. يتطلب الوصول إليه خادمًا يُصدر اسم قائمة محتويات ليس مقطع مسار واحدًا، وهو ما لا يفعله تطبيق SMB2 المطابق للمعايير؛ وقد صُحِّح التعرض على الأساس نفسه الذي صُحِّحت به مستهلكات الملفات البعيدة الأخرى بدلًا من الاستناد إلى إثبات مفهوم مُبرهَن ضد هذا المخطط. قم بالترقية إلى Apache Camel 4.23.0، الذي يُصلح المشكلة. يجب على المستخدمين على سلسلة إصدارات 4.22.x الترقية إلى 4.22.1. يجب على المستخدمين على سلسلة إصدارات LTS 4.18.x الترقية إلى 4.18.5. وصلت سلسلة 4.14.x إلى نهاية العمر الافتراضي ولا تتلقى هذا الإصلاح؛ يجب على المستخدمين عليها الانتقال إلى سلسلة إصدارات مدعومة.
الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.