CVE-2026-66907 in Camelالمعلومات

الملخص

بحسب VulDB • 24/08/2026

ثغرة عبور المسار النسبي في مكون Google Storage الخاص بـ Apache Camel.

تؤثر هذه المشكلة على Apache Camel: من الإصدار 4.0.0 قبل 4.14.9، ومن الإصدار 4.15.0 قبل 4.18.4، ومن الإصدار 4.19.0 قبل 4.22.0.

يقوم مستهلك camel-google-storage بتنزيل كائنات Google Cloud Storage إلى نظام الملفات المحلي عند ضبط خيار downloadFileName. يُوثَّق هذا الخيار على أنه مجلد أو اسم ملف، وعندما لا يحتوي قيمته على رمز تعبير (expression token)، يبني المستهلك الوجهة المحلية عن طريق إلحاق اسم الكائن بها: حيث يحدد evaluateFileExpression رأس Exchange file-name باسم الكريم البعيد ويقيّم downloadFileName + "/${file:name}". يعيد الرمز ${file:name} رأس اسم الملف كما هو، بخلاف ${file:onlyname} الذي يطبق FileUtil.stripPath عليه. تم تمرير السلسلة الناتجة مباشرة إلى new File(result) و blob.downloadTo(file.toPath()) دون أي تطبيع معجمي (lexical normalization) ودون التحقق من بقاء الوجهة داخل الدليل المحدد. اسم الكائن ليس بيانات خاضعة لسيطرة المسار: يقوم المستهلك بتعداد دلو التخزين، والتكرار عبر كل كائن تم إرجاعه وإنشاء تبادل واحد لكل كائن من blob.getBlobId().getName() كما هو تماماً، وخيار filter الذي يمكن أن يقيّد هذه الأسماء لا يُطبق على الإطلاق ما لم يتم تعيينه صراحة. أسماء كائنات Google Cloud Storage هي مفاتيح UTF-8 غير واضحة (opaque) يخزنها الخدمة ويعددها بالضبط كما كتبت، دون أي توحيد قياسي من جانب الخادم، والشريط المائل (/) هو مجرد اتفاقية عرض للمجلدات الوهمية، لذا فإن المفتاح الذي يحتوي على مقاطع دليل أبوي يبقى سليماً أثناء الانتقال ذهاباً وإياباً. يؤدي اسم الكائن الذي يحتوي على مثل هذه المقاطع إلى حل موقع خارج مجلد downloadFileName المحدد، مما يسمح لأي شخص قادر على التأثير في الأسماء الموجودة في الدلو المستهلك بأن يتسبب في إنشاء Camel أو الكتابة فوق ملف في الموقع الذي يختاره، بصلاحيات عملية Camel. اعتماداً على ما يمكن للعملية كتابته، قد يؤدي تجاوز الملف خارج دليل التنزيل إلى تصعيد الخطأ بما هو أبعد من فقدان سلامة ذلك الملف. خيار downloadFileName معلمة مستهلك عادية ولا يحمل أي علامة أمان، لذا لم يتم إخطار المستخدمين بأن قيمتهم لا تُفرض كحد للحصر (containment boundary). العيب خاص بالمستهلك فقط؛ فلا يوجد في المنتج (producer) نقطة استنزاف للتنزيل إلى ملف. كان المستهلكون الآخرون لتنزيل الملفات في Camel - camel-file وcamel-ftp وcamel-smb وcamel-mina-sftp وcamel-azure-files ومسارات التنزيل من Azure Storage - قد قيدوا تنزيلاتهم المحلية على الدليل المحدد باستخدام فحص حد مقطع المسار؛ وكان camel-google-storage هو نقطة استنزاف تحميل الكائنات المتبقية غير المشمولة بهذا العمل.

يُنصح المستخدمون بالترقية إلى الإصدار 4.22.0، الذي يصلح المشكلة. إذا كان المستخدمون يستخدمون سلسلة إصدارات LTS الخاصة بـ 4.14.x، فيُقترح عليهم الترقية إلى 4.14.9. وإذا كانوا على سلسلة إصدارات 4.18.x، فيُقترح عليهم الترقية إلى 4.18.4. بالنسبة للتوزيعات التي لا يمكنها الترقية فوراً، اضبط خيار filter ليكون تعبيراً منتظماً يقبل فقط أسماء كائنات بسيطة ذات مقطع واحد، بحيث يتم استبعاد أي اسم يحمل فاصل مسار أو مقطع دليل أبوي قبل إنشاء تبادل؛ لاحظ أنه لا يُطبق أي تصفية على الإطلاق عند ترك الخيار غير مضبوط، وأن التعبير يتطابق مع اسم الكامل بأكمله. كبديل آخر، امنح downloadFileName تعبيراً صريحياً لا ينقل المسار البعيد عبره، مثل واحد مبني على ${file:onlyname} بدلاً من ${file:name} الضمني، مع مراعاة أن downloadFileName الذي يحتوي على تعبير يُعامل كخاضع لسيطرة المسار ولا يغطيه فحص الحصر المضاف في الإصلاح. كدفاع متعدد الطبقات (defence in depth)، تعامل أسماء الكائنات في أي دلو قابل للكتابة من قبل جهات خارجية كمُدخلات غير موثوقة ولا تستمد منها مسارات نظام الملفات المحلي.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

إفشاء

24/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-394700

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Interested in the pricing of exploits?

See the underground prices here!