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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-56139 — أداة إعادة إنتاج (PoC) لثغرة CVE-2026-56139 (Apache Camel camel-undertow Rest DSL): يثبّت ربط Rest DSL القيمة muteException=false في الكود نفسه، لذلك يتم تجاهل muteException=true المُهيأة ويُعاد تتبّع المكدس الكامل (full stack trace) لاستثناء غير مُلتقَط إلى العميل (CWE-209). تم الإصلاح في الإصدارات 4.14.8/4.18.3/4.21.0. | Kitploit
أدوات/GitHubGitHub/oscerd/cve-2026-56139
تحليل الثغرات الأمنيةالاستغلالجمع المعلوماتأمن الويباختبار الاختراقالتعلم والتعليم
GitHuboscerd/cve-2026-56139

CVE-2026-56139

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

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

أداة إعادة إنتاج (PoC) لثغرة CVE-2026-56139 (Apache Camel camel-undertow Rest DSL): يثبّت ربط Rest DSL القيمة muteException=false في الكود نفسه، لذلك يتم تجاهل muteException=true المُهيأة ويُعاد تتبّع المكدس الكامل (full stack trace) لاستثناء غير مُلتقَط إلى العميل (CWE-209). تم الإصلاح في الإصدارات 4.14.8/4.18.3/4.21.0.

مشاركة

مُعيد إنتاج كشف تتبُّع المكدس لـ camel-undertow Rest DSL muteException (CVE-2026-56139)

يوضح هذا المشروع مشكلة كشف المعلومات في مستهلك camel-undertow Rest DSL في Apache Camel، والتي تُتتبَّع باسم CVE-2026-56139. يتحكم خيار muteException في ما إذا كانت تفاصيل أي استثناء معالجة غير ملتقط ستُعاد إلى عميل HTTP. في نقطة نهاية undertow عادية، يعمل الخيار — لكن Rest DSL في undertow يُنشئ ربط استجابته مع muteException مثبّتة على false في الكود المصدري ولا ينسخ القيمة المكوَّنة أبدًا، لذلك يتم تجاهل muteException بصمت في وضع REST ويُعاد تتبُّع مكدس Java الكامل على أي حال:

root@kitploit:~
// UndertowComponent (affected 4.18.2) — the Rest DSL binding is created without the endpoint's muteException
if (!map.containsKey("undertowHttpBinding")) {
    endpoint.setUndertowHttpBinding(new RestUndertowHttpBinding(endpoint.isUseStreaming()));  // muteException stays false
}

نظرًا لأن undertowHttpBinding لنقطة النهاية أصبح الآن غير null، فإن UndertowEndpoint.getUndertowHttpBinding() يُرجع ذلك الربط Rest كما هو ولا يُنفّذ أبدًا الفرع الذي ينسخ muteException الخاص بنقطة النهاية إليه. لذلك فإن المسار الذي يضبط muteException=true صراحةً لا يزال يُسرّب تتبُّعات المكدس عند تقديمه عبر Rest DSL — مما يكشف أسماء مضيفات الواجهة الخلفية الداخلية، وعناوين URL لقواعد البيانات، وتلميحات بيانات الاعتماد/الخزائن، وإصدارات المكتبات، ومواقع الكود المصدري.

يُظهر هذا المثال البرهاني (PoC) التأثير كـ تعرض للمعلومات عبر رسالة خطأ (CWE-209). وهو النظير الخاص بـ Rest DSL لثغرة CVE-2026-49365 (التي صحّحت القيمة الافتراضية لـ muteException لنقاط نهاية camel-netty-http وcamel-undertow العادية)؛ وقد تم إصلاح كلتيهما معًا ضمن CAMEL-23651.

النشرة الأمنية: https://camel.apache.org/security/CVE-2026-56139.html

ملخص الثغرة

الخاصيةالقيمة
المكوّنcamel-undertow (مستهلك Rest DSL)
الفئة المتأثرةorg.apache.camel.component.undertow.UndertowComponent — تُنشئ RestUndertowHttpBinding دون نسخ muteException (وبالتالي تكون قيمتها الافتراضية false)
CWECWE-209 (إنشاء رسالة خطأ تحتوي على معلومات حساسة)
الأثريتم إرجاع تتبُّع مكدس Java الكامل إلى عميل غير مصادق حتى عند ضبط muteException=true
الشروط المسبقةمستهلك Rest DSL عبر undertow؛ أي طلب يُطلق استثناء معالجة
الإصدارات المتأثرةمن 4.0.0 قبل 4.14.8، ومن 4.15.0 قبل 4.18.3، ومن 4.19.0 قبل 4.21.0
الإصدارات المُصلحة4.14.8، 4.18.3، 4.21.0
JIRACAMEL-23651 (PR apache/camel#23913)
الفضليو باو (PayPal)

يجعل الإصلاح مسار Rest DSL ينسخ endpoint.getMuteException() إلى RestUndertowHttpBinding، وبذلك يحترم Rest DSL الإعداد (وبالقيمة الافتراضية المُصححة وهي true).

المسارات المتأثرة

root@kitploit:~
// Both configured with muteException=true (camel.component.undertow.mute-exception=true):
restConfiguration().component("undertow").host("0.0.0.0").port(8888);
rest("/api").get("/orders").to("direct:boom");            // Rest DSL — IGNORES muteException, leaks
from("direct:boom").process(new FailingProcessor());

from("undertow:http://0.0.0.0:8889/plain/orders")         // plain endpoint — HONOURS muteException, empty body
    .process(new FailingProcessor());

تخطيط المستودع

root@kitploit:~
CVE-2026-56139/
├── pom.xml                 # camel-undertow 4.18.2
├── Dockerfile
├── docker-compose.yml      # single self-contained service
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── FailingProcessor.java   # throws an exception carrying sensitive internal detail
    │   ├── RestRoutes.java         # undertow Rest DSL (:8888) + plain undertow endpoint (:8889)
    │   └── ExploitController.java  # attacker: GETs both, shows Rest DSL leaks while plain is muted
    └── resources/
        └── application.properties  # camel.component.undertow.mute-exception=true

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

  • Docker وDocker Compose
  • Java 17+ وMaven 3.8+

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

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

المخرجات المتوقعة (مختصرة)

root@kitploit:~
1) undertow Rest DSL :8888  (muteException=true, but the Rest binding hard-codes false)
     HTTP 500
     response body (NNNN bytes) — LEAKS internal detail:
       | java.lang.IllegalStateException: Inventory lookup failed: cannot connect to
       |   jdbc:postgresql://prod-db.internal:5432/inventory (user=svc_inventory, ...)
       | 	at com.example.FailingProcessor.process(FailingProcessor.java:...)
       | 	...[truncated]

2) plain undertow endpoint :8889  (same muteException=true — honoured)
     HTTP 500
     response body: <empty>

>>> Information disclosure: true

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

قم بالترقية إلى 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23651). بعد الترقية، يحترم Rest DSL في undertow خيار muteException (ويضبطه افتراضيًا على true)، لذلك لا يتم إرجاع تتبُّع المكدس.

التخفيف

حتى يتم الترقية، أضف onException(...).handled(true) (أو معالج خطأ عام) يُرجع رسالة عامة بدلاً من تتبُّع المكدس، ولا تعتمد على خيار muteException وحده لمستهلكي Rest DSL عبر undertow.

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

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

تنزيل الأداة