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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-52618 — يوثّق CVE-2026-52618 مع PoC لحقن أوامر نظام التشغيل في @webfer/mcp-ansible-drupal عبر executeDeployment extraVars، إلى جانب إرشادات الكشف والإجراءات التخفيفية. | Kitploit
أدوات/GitHubGitHub/s1ko/cve-2026-52618
تحليل الثغرات الأمنيةالاستغلالأمن الذكاء الاصطناعي
GitHubs1ko/cve-2026-52618

CVE-2026-52618

يوثّق CVE-2026-52618 مع PoC لحقن أوامر نظام التشغيل في @webfer/mcp-ansible-drupal عبر executeDeployment extraVars، إلى جانب إرشادات الكشف والإجراءات التخفيفية.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-52618 — @webfer/mcp-ansible-drupal: حقن أوامر نظام التشغيل عبر المتغيرات الإضافية لأداة executeDeployment

spawn(cmd[0], cmd.slice(1), { shell: true }) يعيد ضم مصفوفة وسائط في سلسلة /bin/sh -c واحدة دون تهريب (escaping)، ولذلك فإن أي حرف خاص بالصدفة (shell metacharacter) في قيمة extraVars مقدَّمة إلى أداة MCP executeDeployment يُنفَّذ على المضيف الذي يشغّل الخادم.

تم إصلاح هذه المشكلة. قم بالترقية إلى 2.0.3 أو أحدث.

نموذج التهديد

وسائط أدوات MCP متأثرة بالمهاجم. تُنتَج بواسطة نموذج لغوي كبير (LLM) من المحتوى الذي يعالجه الوكيل (agent) — المستندات، صفحات الويب، مخرجات الأدوات — لذلك فإن حقن التعليمات غير المباشر (indirect prompt injection) يمنح المهاجم التحكم في القيم التي يستقبلها معالج الأداة. أي معالج يُدخل أيًا من تلك القيم إلى صدفة يحوّل هذا التأثير إلى تنفيذ تعليمات برمجية على المضيف الذي يشغّل خادم MCP. هذا هو النموذج نفسه للحالة السابقة aws-mcp-server / CVE-2026-5058.

النتيجة هي أن القول «المستدعي هو LLM موثوق» ليس تخفيفًا. وسائط الأدوات هي مدخلات غير موثوقة.

التنفيذ

في الإصدار 2.0.0، كان src/helpers/runAnsible.ts يبني مصفوفة وسائط ثم يشغّلها مع تفعيل الصدفة:

root@kitploit:~
const proc = spawn(ansibleCmd[0], ansibleCmd.slice(1), { shell: true });

مع shell: true، لا تنفّذ Node ansibleCmd[0] مع العناصر المتبقية كـ argv. بل تدمج المصفوفة بأكملها في سلسلة واحدة وتسلّمها إلى /bin/sh -c، دون أي اقتباس (quoting) أو تهريب (escaping) للعناصر. لذلك فإن أي عنصر يحمل ; أو && أو | أو backticks أو $() يخرج من الأمر المقصود.

المسار القابل للوصول هو أداة MCP executeDeployment (src/tools/executeDeployment.ts)، التي تمرّر extraVars المقدَّمة من المستدعي إلى المصفوفة بصيغة --extra-vars key=value. قيمة مثل ; touch /tmp/marker ; تنتج ما يلي:

root@kitploit:~
/bin/sh -c "ansible-playbook -i inv.ini play.yml ... --extra-vars deploy_env=; touch /tmp/marker ; echo INJECTED"

مسار استهلاك ثانوي (sink) في النسخة نفسها كان يُدرج projectRoot داخل execSync('ansible-vault encrypt ' + vaultPath).

إعادة الإنتاج

يستدعي poc/driver.mjs الدالة runAnsible مباشرة بقيمة extraVars مصنوعة بعناية ويتحقق من وجود ملف العلامة. لا يلزم تثبيت ansible-playbook — فالأمر المُحقون يعمل داخل سلسلة /bin/sh -c نفسها بغض النظر عمّا إذا كان الثنائي الأول موجودًا أم لا.

root@kitploit:~
npm pack @webfer/[email protected] && tar xf webfer-mcp-ansible-drupal-2.0.0.tgz
node poc/driver.mjs

الناتج المتوقع على نسخة متأثرة:

root@kitploit:~
{"target":"@webfer/mcp-ansible-drupal 2.0.0","sink":"runAnsible -> spawn(cmd[0], cmd.slice(1), {shell:true})","vector":"executeDeployment extraVars value","marker":"/tmp/PWNED_ansible","created":true,"verdict":"CONFIRMED - command injection executed"}

تم التحقق من صحتها في 2026-06-01 داخل حاوية معزولة، وأُعيد التحقق في 2026-06-13 باستخدام علامة touch غير ضارة. لا تشغّل هذا السيناريو إلا ضد بنية تحتية مخوَّل لك اختبارها.

الاكتشاف

  • أي قيمة --extra-vars تصل إلى ansible-playbook تحتوي على ; أو && أو || أو | أو backtick أو $(. قيم متغيرات Ansible المشروعة لا تحتوي ذلك أبدًا تقريبًا.
  • عملية sh -c يحتوي سطر أوامرها على ansible-playbook و أمر ثانٍ بعد فاصل — وهي إشارة في شجرة العمليات (auditd أو eBPF أو Falco أو EDR) لا تعتمد على تسجيل التطبيق.
  • عمليات فرعية غير متوقعة لعملية خادم MCP. ansible-playbook وgit وansible-vault متوقعة؛ أما الصدفة أو المفسِّر (interpreter) أو عميل الشبكة فليست كذلك.
  • سجلات استدعاءات أدوات MCP حيث تحتوي وسائط executeDeployment على أحرف صدفة خاصة. سجّل وسائط الأدوات — فمعظم عمليات نشر MCP لا تفعل ذلك، وهو المكان الوحيد الذي تكون فيه القيمة المحقونة مرئية من منظور التطبيق.

MITRE ATT&CK T1059.004 مفسِّر الأوامر والبرمجة النصية: Unix Shell.

التخفيف

قم بالترقية إلى @webfer/mcp-ansible-drupal 2.0.3 أو أحدث. يستدعي الكود المصدري الحالي spawn(ansibleCmd[0], ansibleCmd.slice(1), { … }) دون خيار shell، لذا تُمرَّر المصفوفة كـ argv وتفقد أحرف الصدفة الخاصة معناها.

القاعدة العامة لمعالجات أدوات MCP، وما يطبّقه الإصلاح هنا:

  • لا تفعّل shell: true أبدًا عندما تكون مصفوفة الوسائط متاحة أصلًا. صيغة المصفوفة موجودة تحديدًا لتجنّب الصدفة.
  • لا تبْنِ أمرًا أبدًا عبر استيفاء (interpolation) نصّي لوسيط أداة. استخدم execFile/spawn مع متجه وسائط صريح.
  • تحقق من المحتوى، لا من النوع فقط. z.string() من Zod تُثبت أن القيمة نص، ولا تُثبت شيئًا عمّا بداخلها. استخدم قائمة مسموح بها (allowlist) عندما تكون مجموعة القيم معروفة؛ وارفض أحرف الصدفة الخاصة عندما لا تكون كذلك.
  • شغّل خادم MCP كمستخدم غير مميَّز بأضيق نطاق وصول لنظام الملفات والشبكة تحتاجه الأداة فعلًا.

NIST SP 800-53r5 SI-10؛ OWASP ASVS v4 §5.3.8؛ تخفيفات CWE-78 M1 وM2.

الجدول الزمني

التاريخالحدث

المراجع

  • حزمة npm — https://www.npmjs.com/package/@webfer/mcp-ansible-drupal
  • المستودع — https://github.com/webfer/MCP-Ansible-Drupal
  • سابقة لنموذج تهديد MCP — CVE-2026-5058 (aws-mcp-server)

نشرات استشارية مرافقة من نفس جولة البحث: CVE-2026-52616، CVE-2026-52617.

الترخيص

MIT — انظر LICENSE.

تنزيل الأداة
CVECVE-2026-52618
CWECWE-78 (تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر نظام التشغيل)
الحزمة@webfer/mcp-ansible-drupal (npm)
الإصدار المتأثر2.0.0
أُصلح في2.0.3 (نُشر في 2026-06-01)
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 عالية (نقل عبر stdio). AV:N → 9.8 حرجة إذا كان الخادم مغلَّفًا في ناقل شبكي (network transport).
أبلغ عنهs1ko (github.com/s1ko، [email protected])
تاريخ إسناد CVE2026-07-13، MITRE CNA-LR
2026-06-01
التحقق الديناميكي من الثغرة ضد الإصدار 2.0.0
2026-06-01نشر 2.0.3 على npm مع إزالة shell: true
2026-06-13إعادة التحقق على مضيف ثانٍ
2026-07-13MITRE CNA-LR يسند CVE-2026-52618، مع نسب الاكتشاف إلى s1ko
2026-08-22نشر هذا التقرير