
نموذج إثبات مفهوم قابل للتشغيل بـ Spring Boot يعيد إنتاج CVE-2026-84176، وهو ثغرة CORS تسمح ببيانات الاعتماد من أي أصل في Apache Camel camel-platform-http-vertx، مع خطوات التحقق.
مُعيد إنتاج عملي قابل للتشغيل لثغرة Apache Camel حيث كانت VertxPlatformHttpServerSupport. createCorsHandler() تضبط Access-Control-Allow-Credentials: true خارج فحص الأصل — لذا كانت تُرسَل في
كل استجابة لطلب يحمل ترويسة Origin، بما في ذلك الاستجابات لأصول قرّر المعالج للتوّ
عدم السماح بها. عندما يكون camel.server.cors.origins غير مضبوط، يعامل المعالج كل أصل على أنه مسموح ويعكس
Origin الخاص بالمُتصل نفسه في Access-Control-Allow-Origin. معًا ينتج عن ذلك إعداد بيانات اعتماد من أي أصل
الذي ترفض مواصفة fetch التعبير عنه كحرف بدل صريح — وهو بالضبط سبب كون انعكاس الأصل
هو الطريقة المعتادة للالتفاف على تلك القاعدة. لذلك يمكن لصفحة على أي أصل إجراء طلبات عبر الأصول تحمل بيانات اعتماد إلى
نقطة نهاية Camel وقراءة الاستجابات.
| بيئة التشغيل | الدليل | الحزمة التقنية |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (متأثرة؛ مُصلحة في 4.22.1) |
Camel Quarkus: لا ينطبق. المعالج المصاب موجود في خادم platform-http المستقل الخاص بـ Vert.x في Camel (
camel-platform-http-vertx). في Camel Quarkus، تُقدَّمplatform-httpبواسطة خادم Quarkus HTTP وتُعالَج CORS بواسطة Quarkus (quarkus.http.cors.*)، وليس بواسطةcreateCorsHandler()، لذا فإن هذا العيب تحديدًا غير قابل للوصول هناك. (لا يوجد أيضًاcamel-platform-http-vertx-starter؛ تستخدم وحدة Spring Boot الأداة العاديةcamel-platform-http-vertx، التي تشغّل خادم Vert.x خاصًا بها مستقلًا عن خادم الويب Spring Boot.)
يشغّل التطبيق خادم platform-http الخاص بـ Vert.x في Camel على المنفذ 8081 مع تمكين CORS ودون أصول مُهيّأة، و
مسار platform-http:/api. يرسل المهاجم GET /api مع Origin: https://evil.example (أصل لم يُدرَج في قائمة
السماح قط) ويفحص الاستجابة:
Access-Control-Allow-Origin: https://evil.example (منعكس) و
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials لهذا الأصل.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
الناتج المتوقع على البناء المتأثر:
Response CORS headers:
Access-Control-Allow-Origin = https://evil.example
Access-Control-Allow-Credentials = true
>>> PROVEN: the endpoint echoes the attacker's Origin ... and sends Access-Control-Allow-Credentials: true ...
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-platform-http-vertx |
| CWE | CWE-942 (سياسة نطاقات متقاطعة متساهلة مع نطاقات غير موثوقة) |
| الخطورة | متوسطة |
| ناقل الهجوم | طلب عبر الأصل (مع بيانات اعتماد) يحمل ترويسة Origin إلى نقطة نهاية platform-http-vertx مع تفعيل CORS وعدم تكوين أي أصول |
| التأثير | يمكن لأي أصل إجراء طلبات عبر الأصل مع بيانات اعتماد وقراءة الاستجابات |
| الإصدارات المتأثرة | من 4.0.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24436 |
| الفضل | Claude Security Scan Tool |
الإشعار: https://camel.apache.org/security/CVE-2026-84176.html
لم يعد يتم إرسال Access-Control-Allow-Credentials: true بشكل غير مشروط لكل أصل؛ فلا تُمنح بيانات الاعتماد
لأصل غير مسموح به صراحةً، وبالتالي لم يعد يحدث الجمع بين الأصل المنعكس وبيانات الاعتماد ("بيانات اعتماد
لأي أصل").
قم بتعيين قائمة سماح صريحة camel.server.cors.origins، ولا تعتمد على الوصول عبر الأصل مع بيانات الاعتماد من
أصول عشوائية؛ ضع نقطة النهاية خلف وكيل يفرض سياسة CORS صحيحة.
يُنشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلها. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.