
إثبات مفهوم قابل للتشغيل لـ CVE-2026-80343، وهو تجاوز لحساسية حالة الأحرف في قيد الأمان camel-netty-http، مع أدوات إعادة إنتاج لـ Spring Boot وQuarkus والتحقق من الإصلاح.
مُعيد إنتاج عملي قابل للتشغيل (proof-of-concept) لثغرة Apache Camel حيث كان قيد الأمان في camel-netty-http يقارن مسار الطلب مع مسار السياق المُهيأ باستخدام مطابقة حساسة لحالة الأحرف، بينما التوجيه الذي يوزّع الطلب إلى نقطة النهاية لم يطبّق القاعدة نفسها. تختلف المقارنتان لأي مسار تختلف فيه حالة الأحرف عن القيمة المُهيأة: يمكن للمتصل الخارجي تغيير حالة حرف في مقطع مسار السياق بحيث لا يعود قيد الأمان يتعرّف على المسار كمحمي، بينما يظل الطلب يُوزّع إلى نقطة النهاية نفسها. يُتخطّى القيد ويُبلَغ المسار المحمي دون استيفائه — دون الحاجة إلى بيانات اعتماد أو وصول سابق أو تهيئة خاصة.
| بيئة التشغيل | الدليل | المكدّس |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-netty-http 4.22.0 (متأثر؛ مُصلَح في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-netty-http 3.29.0 (Camel 4.15.0، متأثر؛ ضابط مُصلَح 3.40.0 / Camel 4.22.1) |
يستمع مستهلك netty-http على مسار السياق /app ويُحمى بواسطة SecurityConstraintMapping يحمي /secret (نسبةً إلى نقطة النهاية) بمُصادِق يرفض الطلبات. كلا الطلبين أدناه لا يحملان أي بيانات اعتماد:
GET /app/secret (الحالة المُهيأة) → يتعرّف القيد عليه كمحمي → 401.GET /App/secret (حالة مسار السياق مُعدّلة) → تقوم دالة extractTarget في المعالج بإزالة مسار السياق فقط عند مطابقة startsWith الحساسة لحالة الأحرف، لذا تُتخطّى الإزالة ولا يتعرّف القيد على المسار كمحمي → يظل الموجّه يوزّعه إلى نقطة النهاية /app → 200 والمحتوى المحمي، دون مصادقة.في البناء المُصلَح يعيد كلا الطلبين 401.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
المخرجات المتوقعة في البناء المتأثر:
Configured case GET /app/secret -> status 401, body:
Altered case GET /App/secret -> status 200, body: PROTECTED-ADMIN-DATA: reached the protected endpoint
>>> PROVEN: /app/secret is correctly rejected (401), but /App/secret bypassed the security constraint ...
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-netty-http |
| CWE | CWE-178 (معالجة غير صحيحة لحساسية حالة الأحرف) |
| الخطورة | عالية |
| ناقل الهجوم | طلب تختلف فيه حالة مسار السياق عن مسار نقطة النهاية المُهيأ |
| التأثير | تخطّي قيد الأمان؛ الوصول إلى المسار المحمي دون مصادقة |
| الإصدارات المتأثرة | من 4.0.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلَحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24412 |
| الفضل | Claude Security Scan Tool |
الإشعار الأمني: https://camel.apache.org/security/CVE-2026-80343.html
أصبح قيد الأمان ومعالجة مسار السياق الآن يقارنان المسار بشكل متّسق (دون حساسية لحالة الأحرف على مسار السياق)، لذا يُتعرَّف على الطلب المُعدَّل الحالة كمحمي تمامًا كما في صيغته المُهيأة ويخضع للمصادقة نفسها.
فرض التفويض داخل المسار نفسه بدلًا من الاعتماد فقط على قيد الأمان في netty-http، أو تطبيع حالة أحرف مسار الطلب قبل فحص الأمان، إلى أن تتمكّن من الترقية.
نُشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلّها. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.