CVE-2026-79986
Apache Camel: قام camel-azure-files بحل المسار البعيد لملف تم استطلاعه من الاسم المُبلَّغ عنه في قائمة دليل الخادم دون تقييده بالدليل الذي تتم استطلاعه، لذا يمكن نقل إدخال في القائمة يحتوي على مقاطع اجتياز إلى خارج
- تم النشر
- 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 Azure Files. تؤثر هذه المشكلة على Apache Camel: من 4.0.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 بحيث لا يمكن لاسم ملف بعيد يحتوي على مقاطع دليل أب أن يُحلّ خارج دليل العمل المحلي. وكان المعامل البعيد هو النصف المتبقي من ذلك السطح. يوفّر هذا الأثر مخطط azure-files. يستمد مستهلكه من فئة الأساس RemoteFileConsumer نفسها ويركّب المسار البعيد عبر مساعد دمج بسيط، لذا ورث نفس الحل غير المقيّد. يتطلب الوصول إليه اسم قائمة محتويات ليس مقطع مسار واحد، وهو ما لا تعيده خدمة Azure Files REST عادةً؛ وقد صُحّح التعرّض على الأساس نفسه الذي صُحّحت به مستهلكات الملفات البعيدة الأخرى بدلًا من إثبات مفهوم مُبرهن ضد هذا المخطط. قم بالترقية إلى Apache Camel 4.23.0، الذي يصلح المشكلة. يجب على المستخدمين على سلسلة إصدارات 4.22.x الترقية إلى 4.22.1. يجب على المستخدمين على سلسلة إصدارات 4.18.x LTS الترقية إلى 4.18.5. بلغت سلسلة 4.14.x نهاية عمرها الافتراضي ولا تتلقى هذا الإصلاح؛ ويجب على المستخدمين عليها الانتقال إلى سلسلة إصدارات مدعومة.
الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.