
مُعيد إنتاج قابل للتشغيل بـ Spring Boot وQuarkus لـ CVE-2026-85248، وهو سباق توقيع متزامن في camel-pqc يؤدي إلى تجاوز التحقق من توقيع ML-DSA، مع نسخ البناء المتأثرة والمُصلحة.
Signature المتزامن (تجاوز التحقق من التوقيع)مُعيد إنتاج قابل للتشغيل لإثبات المفهوم لثغرة Apache Camel حيث كان منتج PQC يحتفظ بـنسخة java.security.Signature واحدة
ويستخدمها لكل عملية تبادل دون مزامنة. إن Signature ذو حالة
وليس آمنًا للخيوط: تُراكم update() البيانات المطلوب توقيعها أو التحقق منها، وتستهلك verify()/sign() تلك
الحالة المتراكمة. مع عمليات التبادل المتزامنة التي تتشارك نسخة واحدة، تتداخل استدعاءات التحديث والتحقق الخاصة برسائل مختلفة،
لذا قد يكتمل التحقق مقابل بيانات تنتمي إلى عملية تبادل أخرى، أو مقابل مخزن مؤقت
متراكم جزئيًا. النتيجة غير حتمية وتشمل تحققًا يُبلّغ عن النجاح لرسالة
لم يُفحص توقيعها فعليًا قط، مما يُبطل الضمان الذي وُجد المكوّن لتقديمه. ولا يتطلب الوصول إليها
سوى حركة مرور متزامنة عبر نفس نقطة النهاية — وهي الحالة العادية لمسار Camel تحت الحمل.
| بيئة التشغيل | الدليل | الحزمة |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-pqc 4.22.0 (متأثر؛ مُصلح في 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-pqc (Camel 4.22.0، متأثر؛ ضابط مُصلح CQ 3.40.0 / Camel 4.22.1) |
كلا الوحدتين تُظهران السلوك المتأثر والمُصلح.
يقوم المسار بتوقيع كل رسالة بمفتاح ML-DSA ما بعد كمي ثم يتحقق فورًا من التوقيع الذي
أنتجه للتو، لذا يجب أن يتحقق كل رسالة موقّعة بشكل مشروع بـ true. يقود برنامج التشغيل 1024 من دورات
التوقيع→التحقق هذه بشكل متزامن (16 خيطًا) عبر منتجات pqc: المشتركة.
true — بعضها يُعيد false، وبعضها يرفع
أخطاء محرك التوقيع — لأن Signature الواحد ذا الحالة المشترك عبر عمليات التبادل المتزامنة يتعرض للتلف
بسبب التداخل. لم يعد الحكم يتوافق مع الرسالة التي حُسب من أجلها. (نفس التسابق، في الاتجاه الخطير،
يسمح لـ verify() بالنجاح لبيانات لم يغطها قط.)Signature الخاصة بها.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: many of 1024 broken; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85248-pqc-signature-race-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: 0 broken; >>> 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): many broken
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: 0 broken
السباق، بطبيعته، يعتمد على التوقيت؛ يقود برنامج إعادة الإنتاج قدرًا كافيًا من التزامن (1024 رحلة ذهاب وإياب) بحيث يظهر بشكل موثوق على البناء المتأثر. إذا أظهر تشغيل متأثر 0 مكسور في أي وقت، فأعد تشغيله.
| الخاصية | القيمة |
|---|---|
| المكوّن | camel-pqc (توقيع/تحقق PQCProducer) |
| CWE | CWE-362 (التنفيذ المتزامن باستخدام مورد مشترك مع مزامنة غير صحيحة) |
| الخطورة | متوسطة |
| ناقل الهجوم | حركة مرور متزامنة عبر نفس نقطة النهاية pqc: تشترك في java.security.Signature واحد يحمل حالة |
| التأثير | تحقق غير حتمي من التوقيع؛ قد يُبلّغ التحقق عن نجاح لرسالة لم يتم التحقق من توقيعها قط |
| الإصدارات المتأثرة | من 4.12.0 قبل 4.18.5، ومن 4.19.0 قبل 4.22.1 |
| الإصدارات المُصلحة | 4.18.5، 4.22.1، 4.23.0 |
| JIRA | CAMEL-24445 |
| الفضل | Claude Security Scan Tool |
الإشعار الأمني: https://camel.apache.org/security/CVE-2026-85248.html
لم يعد PQCProducer يشارك Signature عبر التبادلات المتزامنة.
عندما أنشأ المنتج النسخة بنفسه، فإنه ينشئ الآن نسخة جديدة لكل تبادل
(signerForExchange())؛ وعندما قام المستخدم بتهيئة نسخة (على مستوى JVM public static final)، فإن الوصول إليها
يكون synchronized. في كلتا الحالتين، لا يتداخل أي تبادلين في تسلسلات التهيئة/التحديث/التحقق الخاصة بهما على نسخة واحدة.
قيّد المسار المتأثر بمستهلك متزامن واحد بحيث لا يستخدم أي تبادلين نسخة Signature في
الوقت نفسه.
يُنشر هذا المستودع لأغراض تعليمية ودفاعية: لمساعدة مستخدمي Apache Camel على فهم الثغرة الأمنية، والتحقق مما إذا كانوا متأثرين بها، وتأكيد أن الترقية تحلها. الرسائل والمفاتيح عبارة عن عناصر اختبار محلية خاملة. لا تستخدم هذه المواد ضد أنظمة لا تملكها أو لا تديرها.