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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-40047 — مستنسخ لـ CVE-2026-40047: Apache Camel camel-docling حقن وسائط سطر الأوامر / تجاوز المسار | Kitploit
أدوات/GitHubGitHub/oscerd/cve-2026-40047
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHuboscerd/cve-2026-40047

CVE-2026-40047

مستنسخ لـ CVE-2026-40047: Apache Camel camel-docling حقن وسائط سطر الأوامر / تجاوز المسار

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

الأكثر شعبية

عرض الكل →

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

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

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

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

أداة إعادة إنتاج حقن وسيطات سطر الأوامر/اجتياز المسار في camel-docling (CVE-2026-40047)

يوضح هذا المشروع ثغرة حقن وسيطات سطر الأوامر واجتياز المسار في مكون camel-docling من Apache Camel، والمتتبعة باسم CVE-2026-40047. يقوم DoclingProducer ببناء استدعاء الأداة الخارجية docling من رؤوس الرسائل؛ حيث كانت الوسائط المخصصة المُقدَّمة عبر رأس CamelDoclingCustomArguments تُلحق دون تحقق كافٍ (قائمة حظر بالإضافة إلى التحقق من ../ الحرفي)، لذا يمكن للمهاجم الذي يؤثر على تلك الرؤوس حقن أعلام docling عشوائية وقيم مسار تحمل اجتيازًا في العملية الفرعية.

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

ملخص الثغرة

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

يقوم DoclingProducer بتجميع استدعاء docling وتشغيله عبر java.lang.ProcessBuilder (صيغة قائمة — لا قشرة). يتم إلحاق وسائط CLI المخصصة من رأس CamelDoclingCustomArguments بالأمر:

root@kitploit:~
// DoclingProducer.addCustomArguments(...) - الإصدار المتأثر
List<String> customArgs = exchange.getIn().getHeader(DoclingHeaders.CUSTOM_ARGUMENTS, List.class);
if (customArgs != null && !customArgs.isEmpty()) {
    validateCustomArguments(customArgs);   // قائمة حظر + التحقق من "../" الحرفي (ضعيف)
    command.addAll(customArgs);
}

في الإصدارات المتأثرة، اعتمدت validateCustomArguments على قائمة حظر من الأعلام غير المسموح بها ورفضت فقط قيم المسار التي تحتوي على ../ حرفيًا. ونتيجة لذلك:

  • الأعلام غير المعترف بها (غير الموجودة في قائمة الحظر) تُمرر مباشرة إلى docling.
  • القيم الشبيهة بالمسار التي تجتاز بدون ../ حرفيًا (المسارات المطلقة، أو التسلسلات المُطبَّعة) لا يتم اكتشافها.

نظرًا لأن Camel يبني استدعاء docling، فإن المكون مسؤول عن تقييد هذه القيم. الإصلاح (CAMEL-23212) يستبدل قائمة الحظر بـ قائمة سماح صارمة من الأعلام المعترف بها، ويرفض الأعلام التي يديرها المنتج (--output/-o) والرموز الوصفية للقشرة (دفاع في العمق)، ويطبع قيم المسار باستخدام Path.normalize() قبل التحقق.

يستخدم الاستدعاء صيغة القائمة من ProcessBuilder، لذا فإن القشرة لا تفسر القيم — حقن أوامر نظام التشغيل عبر الرموز الوصفية للقشرة غير ممكن؛ رفض الرموز الوصفية في الإصلاح هو دفاع في العمق.

المسار

root@kitploit:~
from("direct:convert")
    .to("docling:convert?operation=CONVERT_TO_MARKDOWN&contentInBody=true");

كيف تلاحظ أداة إعادة الإنتاج الحقن

docling هي أداة خارجية. تشحن أداة إعادة الإنتاج هذه نموذجًا بديلاً لـ docling (على PATH داخل الحاوية) يسجل وسائط argv التي يتلقاها ويكتب ملفًا بتنسيق markdown، بحيث تكون الوسائط المحقونة مرئية في استجابة HTTP وفي /tmp/docling-invocations.log. كل شيء يعمل داخل صورة Docker (التطبيق + النموذج البديل) — لذلك لا حاجة لتثبيت docling حقيقي.

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

  • Java 17+ و Maven 3.8+ (لبناء jar)
  • Docker (لتشغيل التطبيق + النموذج البديل لـ docling)

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

الخطوة 1: بناء jar والصورة

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

الخطوة 2: تحويل عادي (آمن)

root@kitploit:~
curl http://localhost:8080/exploit/normal
# النموذج البديل لـ docling يستقبل: docling --to md --ocr-lang en --output <tmp> /tmp/input.txt

الخطوة 3: حقن وسائط CLI عشوائية

root@kitploit:~
curl "http://localhost:8080/exploit/attack"
# يحقن CamelDoclingCustomArguments = [--injected-by-attacker, arbitrary-value]
# -> النموذج البديل لـ docling يستقبل:
#    docling --injected-by-attacker arbitrary-value --to md --ocr-lang en --output <tmp> /tmp/input.txt

# قيمة مسار بدون "../" حرفي (مسار مطلق) تمر أيضًا:
curl "http://localhost:8080/exploit/attack?flag=--artifacts-path&value=/etc/attacker-controlled"

على إصدار متأثر (تثبّت أداة إعادة الإنتاج هذه الإصدار 4.18.2) ينجح المسار وتصل الوسائط المحقونة إلى العملية الفرعية. على إصدار مُصحَّح (4.18.3 / 4.19.0) ترفض قائمة السماح --injected-by-attacker مع IllegalArgumentException ويفشل المسار.

التنظيف

root@kitploit:~
docker compose down

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

  1. مسار Camel يمرر بيانات متأثرة خارجيًا إلى CamelDoclingCustomArguments (أو الرؤوس الحاملة للمسار) لمنتج docling:.
  2. عدم إزالة الرؤوس الداخلية لـ Camel من الرسائل الواردة من منتجين غير موثوقين.

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

الترقية إلى 4.18.3 / 4.19.0. يستخدم الإصلاح قائمة سماح صارمة من أعلام docling المعترف بها، ويرفض الأعلام التي يديرها المنتج والرموز الوصفية للقشرة، ويطبع قيم المسار باستخدام Path.normalize() قبل التحقق منها.

الإجراءات التخفيفية

حتى الترقية:

  1. لا تقم بتعيين محتوى غير موثوق في CamelDoclingCustomArguments أو الرؤوس الحاملة للمسار.
  2. قم بإزالة الرؤوس الداخلية لـ Camel (removeHeaders("Camel*")) من الرسائل الواردة من منتجين غير موثوقين قبل منتج docling:.

الملفات

root@kitploit:~
CVE-2026-40047/
├── pom.xml
├── Dockerfile                       # تطبيق + نموذج بديل 'docling' على PATH
├── docker-compose.yml
├── docling-stub.sh                  # النموذج البديل 'docling' (يسجل argv، يكتب markdown)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── DoclingRoute.java         # from(direct:convert).to(docling:convert)
    │   └── ExploitController.java    # يحقن CamelDoclingCustomArguments
    └── resources/
        └── application.properties

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

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

تنزيل الأداة
الخاصيةالقيمة
المكونcamel-docling
الفئة المتأثرةorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
السبب الجذريCamelDoclingCustomArguments (قائمة List<String>) تُلحق إلى وسائط docling CLI مع قائمة حظر ضعيفة + التحقق من ../ الحرفي
CWECWE-88 (حقن وسيطات) / CWE-22 (اجتياز المسار)
التأثيرحقن أعلام سطر أوامر docling عشوائية/غير مقصودة وقيم مسار خارج الدليل في الأداة الخارجية. ليس حقن أوامر نظام التشغيل (ProcessBuilder قائم على قائمة، لا قشرة).
الإصدارات المتأثرةمن 4.15.0 قبل 4.18.3
الإصدارات المُصحَّحة4.18.3, 4.19.0
JIRACAMEL-23212
المبلِّغAndrea Cosentino (مؤسسة Apache للبرمجيات)