
مكرر لـ CVE-2026-46592: حقن عنوان operationName في Apache Camel camel-cxf يعيد توجيه عملية SOAP المستدعاة (نائب مرتبك) من عملية قراءة إلى عملية تخريبية (تم إصلاحه في 4.14.8/4.18.3/4.21.0)
operationName في camel-cxf (إعادة توجيه عملية SOAP)مكررات إثبات مفهوم قابلة للتشغيل لنفس ثغرة Apache Camel، واحدة لكل بيئة تشغيل:
| بيئة التشغيل | الدليل | الرصة | خدمة SOAP الخلفية |
|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | CXF ServerFactoryBean على منفذ خاص :9000 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (يحتوي على Camel 4.20.0) | quarkus-cxf على الخادم المُدار، /soapservice/account |
كلا الإصدارين متأثران (تم إصلاحهما في 4.14.8 / 4.18.3 / 4.21.0)، وكلاهما يوضح نفس الخلل:
يقوم CxfProducer#getBindingOperationInfo أولاً بالبحث عن رأس رسالة operationName ويعود فقط إلى defaultOperationName الخاص بنقطة النهاية عندما يكون غائبًا. قيمة ذلك الثابت الرأسي هي السلسلة النصية operationName — وليست CamelCxfOperationName — لذلك يسمح مرشح حدود HTTP (الذي يزيل فقط Camel*) برأس HTTP وارد بهذا الاسم بالمرور مباشرة. يضيف عميل غير موثوق operationName: deleteAccount ويصبح استدعاء getBalance الثابت القابل للقراءة فقط استدعاءً تدميريًا (CWE-441، وكيل مُربك).
يختلف المتغيران فقط في كيفية إعداد خدمة SOAP الخلفية: ينشر متغير Quarkus الخدمة باستخدام quarkus-cxf على خادم Quarkus HTTP المُدار (لذا يحمل العقد تعليقات JAX-WS
@WebService)، بينما يقوم متغير Spring Boot بإنشائها برمجيًا باستخدام CXFServerFactoryBeanعلى منفذ منفصل. الخلل غير متأثر.
كل دليل فرعي هو مشروع مستقل بذاته مع Dockerfile و docker-compose.yml و README خاصة به. باختصار، لكل منهما:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
الإعلان: https://camel.apache.org/security/CVE-2026-46592.html
تُقدم هذه المكررات للبحث الأمني والاختبار المصرح به فقط، لثغرة مفصح عنها علنًا ومصلحة. لا تستخدمها ضد أنظمة دون إذن صريح.
| الخاصية | القيمة |
|---|
| المكون | camel-cxf (camel-cxf-soap; الثابت موجود في camel-cxf-common، لذا camel-cxfrs متأثر أيضًا) |
| الفئة المتأثرة | org.apache.camel.component.cxf.jaxws.CxfProducer#getBindingOperationInfo يقرأ CxfConstants.OPERATION_NAME ("operationName") |
| CWE | CWE-20 (التحقق غير السليم من المدخلات) / CWE-441 (وكيل أو وسيط غير مقصود — وكيل مُربك) |
| التأثير | يقوم عميل HTTP بتعيين operationName ← يقوم المنتج باستدعاء عملية SOAP مختلفة (مثل عملية تدميرية) |
| الإصدارات المتأثرة | من 4.0.0 قبل 4.14.8، من 4.15.0 قبل 4.18.3، من 4.19.0 قبل 4.21.0 |
| الإصدارات المُصلحة | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23526 (PR apache/camel#23326) |
| الإسناد | Yu Bao (PayPal) |