
إثبات مفهوم (PoC) لإعادة إنتاج ثغرة CVE-2026-49042 (Apache Camel camel-langchain4j-tools): وسائط استدعاء الأدوات لنموذج لغوي كبير (LLM) مُخترق عبر حقن التلقين تصبح ترويسات Exchange غير مُصفّاة، مما يتيح اختطاف مصبّ exec: في مسار الأداة لتحقيق تنفيذ كود عن بُعد (RCE). أُصلحت الثغرة في 4.14.8/4.18.3/4.21.0.
أدوات إعادة إنتاج قابلة للتشغيل لإثبات المفهوم لنفس ثغرة Apache Camel، واحدة لكل بيئة تشغيل:
| Runtime | Directory | Stack | Hijacked sink | Demonstrated impact |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | exec: عبر CamelExecCommand* | تنفيذ تعليمات برمجية عن بُعد |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (يضمّ Camel 4.20.0) | http عبر CamelHttpUri | SSRF + كشف أسرار |
كلاهما إصدارات متأثرة (تم الإصلاح في 4.14.8 / 4.18.3 / 4.21.0)، وكلاهما يُظهر الخلل ذاته تمامًا:
LangChain4jToolsProducer#invokeTools ينسخ كل حقل من وسائط استدعاء الأدوات JSON الصادرة عن النموذج مباشرةً
إلى ترويسات Exchange، دون أي تحقق من مخطط المعامل المُعلَن. الأداة تُعلن عن معامل واحد
(host)، لكن نموذجًا بحقن أوامر مُوجَّه يُصدر حقولًا إضافية تستقر كترويسات تحكم في Camel وتختطف
أي مُنتِج تستخدمه مسارات الأداة في المراحل النهائية (CWE-20).
لا حاجة إلى LLM حقيقي أو مفتاح API: الحقن بالكامل يقع في وسائط استدعاء الأدوات التي يُصدرها نموذج وهمي، تمامًا كما قد يُنتجه نموذج تم كسره أو حقنه بشكل غير مباشر.
يُثبت متغير Spring Boot RCE عبر هدف exec:. وهذا الهدف غير قابل للوصول افتراضيًا في Camel
4.20.0 (وهو ما يضمّه Camel Quarkus 3.36.0): أضاف CAMEL-23315 خيار allowControlHeaders إلى
camel-exec، بقيمة افتراضية false، وصدر أول مرة في 4.20.0. هذا التحصين مستقل عن هذه الثغرة و
لا يصلحها — الحقول المُحقونة لا تزال تصبح ترويسات Exchange عند 4.20.0 (تم التحقق في سجل المسار)؛
فقط هذا الهدف النهائي الواحد توقف عن تكريم ترويسات التحكم الخاصة به. لذلك يختطف متغير Quarkus
مُنتِج http، الذي يُكرَّم افتراضيًا، ويُهرِّب أيضًا عنصر نائب لخاصية Camel يقوم
المُنتِج بحلّه — مما ينتج SSRF بالإضافة إلى كشف سر تطبيق حقيقي.
كل مجلد فرعي هو مشروع مستقل بذاته يضم Dockerfile وdocker-compose.yml وREADME خاصًا به. باختصار،
لأي منهما:
cd camel-spring-boot # أو: 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-49042.html
أدوات إعادة الإنتاج هذه مقدمة للبحث الأمني والاختبار المصرح به فقط، لثغرة مُعلنة علنًا ومُصلحة. لا تستخدمها ضد أنظمة دون إذن صريح.
| Property | Value |
|---|
| المكوّن | camel-langchain4j-tools (أيضًا camel-langchain4j-agent, camel-spring-ai-tools) |
| الفئة المتأثرة | org.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools |
| CWE | CWE-20 (التحقق غير السليم من المدخلات) — وسائط استدعاء الأدوات غير المُرشَّحة تتحول إلى ترويسات تحكم في Exchange |
| التأثير | RCE / SSRF / كتابة ملفات تعسفية، اعتمادًا على المُنتِج النهائي لمسار الأداة |
| الإصدارات المتأثرة | 4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x |
| الإصدارات المُصلحة | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23621 (PR apache/camel#23535) |
| الاعتماد | Yu Bao (PayPal) |