Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-52617 — استشارة أمنية وإثبات مفهوم لثغرة حقن أوامر نظام التشغيل في أداة مساعدة ffmpeg لـ MCP، مع تحليل السبب الجذري وإرشادات الكشف وإجراءات التخفيف لحزمة npm غير مصححة. | Kitploit
أدوات/GitHubGitHub/s1ko/cve-2026-52617
تحليل الثغرات الأمنيةتحليل الكودالاستغلالأمن سلسلة التوريد
GitHubs1ko/cve-2026-52617

CVE-2026-52617

استشارة أمنية وإثبات مفهوم لثغرة حقن أوامر نظام التشغيل في أداة مساعدة ffmpeg لـ MCP، مع تحليل السبب الجذري وإرشادات الكشف وإجراءات التخفيف لحزمة npm غير مصححة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-52617 — @sworddut/mcp-ffmpeg-helper: حقن أوامر نظام التشغيل عبر خيارات أداة ffmpeg

تمرّر runFFmpegCommand سلسلة نصية مبنية من معاملات أداة MCP إلى spawn(…, { shell: true })، لذا تُنفَّذ الأحرف الخاصة بالصدفة (shell metacharacters) في options أو format أو codec أو pixelFormat أو extraOptions على المضيف الذي يشغّل الخادم.

⚠ لا يوجد إصدار مُصلَّح

حتى تاريخ 2026-08-22، أحدث إصدار على npm هو 0.2.1، وهو الإصدار المتأثر، ولا يزال موضع الخلل (sink) موجودًا في الفرع الافتراضي للمستودع. لا يوجد إصدار يمكن الترقية إليه. راجع التخفيف لمعرفة ما يمكن للمستخدمين فعله في هذه الأثناء.

CVECVE-2026-52617
CWECWE-78 (عدم تحييد العناصر الخاصة المستخدمة في أمر نظام التشغيل بشكل صحيح)
الحزمة@sworddut/mcp-ffmpeg-helper (npm)
المتأثر0.2.1 وما قبله — جميع الإصدارات المنشورة
مُصلَّح فيلا شيء
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 8.4 High (نقل stdio). AV:N → 9.8 Critical إذا كان الخادم مغلّفًا بنقل شبكي.
أبلغ عنهs1ko (github.com/s1ko، [email protected])
تاريخ تعيين CVE2026-07-13، MITRE CNA-LR

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

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

خادم تحويل الوسائط هدف طبيعي بشكل خاص لهذا النوع من الهجمات: فالملفات التي يُطلب منه معالجتها هي بالضبط المحتوى غير الموثوق الذي يلتقطه الوكيل من مكان آخر.

التنفيذ

src/utils/ffmpeg.ts — يُجمَّع الأمر كسلسلة نصية وتُفعَّل الصدفة صراحةً:

function runProcess(command: string, args: string[], useShell = false) {
  const child = spawn(command, args, { shell: useShell, windowsHide: true });
  …
}

export async function runFFmpegCommand(command: string): Promise<string> {
  const { stdout, stderr, code } = await runProcess(`ffmpeg ${command}`, [], true);
  …
}

spawn("ffmpeg " + command, [], { shell: true }) يمرر السلسلة بأكملها عبر /bin/sh -c. كل ما ساهم به المستدعي في command هو صيغة shell.

يصل src/tools/handlers.ts إلى ذلك المساعد من ثلاث أدوات، مع إدراج معاملات لا يتم التحقق من محتواها أبدًا:

الأداةالمعاملات القابلة للحقن
convert_videooptions
extract_audioformat
create_video_from_imagescodec، pixelFormat، extraOptions

يتم التحقق من inputPath وoutputPath فقط على الإطلاق، ومخططات Zod تتحقق من النوع (z.string())، وليس من المحتوى أبدًا — لذا تمر الأحرف الخاصة مباشرة.

استدعاء convert_video مع تعيين options إلى ; touch /tmp/marker ; ينتج:

/bin/sh -c "ffmpeg -i /tmp/in.mp4 ; touch /tmp/marker ; /tmp/out.mp4"

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

poc/driver.mjs يتحدث MCP عبر stdio: يهيّئ الخادم، ويصدر استدعاءً واحدًا tools/call لـ convert_video بقيمة options مُحقَنة، ويتحقق من وجود ملف علامة. الحمولة هي touch غير ضار.

npm pack @sworddut/[email protected]
tar xf sworddut-mcp-ffmpeg-helper-0.2.1.tgz && cd package && npm install
node ../poc/driver.mjs

متوقع على إصدار مصاب:

==== POC RESULT (@sworddut/mcp-ffmpeg-helper) ====
marker /tmp/PWNED_ffmpeg created: true
verdict: CONFIRMED — command injection executed

لا حاجة لتثبيت ffmpeg — فالأمر المحقون يعمل داخل نفس سلسلة /bin/sh -c بغض النظر عمّا إذا كان الملف التنفيذي الأولي قابلًا للحل أم لا. تم التحقق منه في 2026-06-01 داخل حاوية معزولة، وأُعيد التحقق منه في 2026-06-13، وأُعيد تأكيد وجود نقطة الحقن على الفرع الافتراضي في 2026-08-22. لا تشغّله إلا على البنية التحتية المصرّح لك باختبارها.

الكشف

  • سطر أوامر ffmpeg يحتوي على ; أو && أو || أو | أو علامة backtick أو $(. استدعاءات ffmpeg المشروعة من هذا الخادم لا تحتوي على ذلك.
  • عملية sh -c يبدأ سطر أوامرها بـ ffmpeg وتحتوي على أمر ثانٍ بعد فاصل — إشارة على مستوى شجرة العمليات (auditd، eBPF، Falco، EDR) لا تعتمد على تسجيل التطبيق.
  • عمليات فرعية غير متوقعة لعملية خادم MCP. يُتوقع وجود ffmpeg وffprobe؛ أما وجود shell أو مفسّر أو عميل شبكة فليس متوقعًا.
  • يسجّل الخادم كل استدعاء إلى stderr بالصيغة Running FFmpeg command: ffmpeg <command>، وهو أرخص مكان لرصد قيمة محقونة إذا كانت السجلات تُجمَع أصلًا.
  • سجلات استدعاء أدوات MCP حيث تحتوي options أو format أو codec أو pixelFormat أو extraOptions على محارف meta الخاصة بالـ shell.

MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell.

التخفيف

لا يوجد إصدار مُرقَّع، لذا فالخيارات هي الاحتواء والإزالة:

  • التوقف عن استخدام الحزمة إذا كان الوكيل الذي تخدمه يعالج أي محتوى غير موثوق. هذا هو التخفيف الكامل الوحيد المتاح اليوم.
  • إذا كان لا بد من إبقائها، فشغّلها في حاوية أو جهاز ظاهري بمستخدم غير مميز، مع نظام ملفات للقراءة فقط باستثناء دليل عمل الوسائط، ودون بيانات اعتماد في بيئتها، ودون خروج شبكي. عندئذٍ لن يجني المهاجم من تنفيذ الشيفرة سوى بيئة معزولة بدلًا من المضيف.
  • لا تعرّضها عبر نقل شبكي. فالنشر عبر stdio فقط هو ما يُبقي هذا عند 8.4 بدلًا من 9.8.
  • غلّف الخادم أو اعمل fork له ليرفض محارف meta الخاصة بالـ shell في المعاملات الخمسة المذكورة أعلاه قبل وصولها إلى runFFmpegCommand.

الإصلاح في المنبع هو إسقاط shell: true وتمرير متجه معاملات إلى ffmpeg — spawn("ffmpeg", ["-i", inputPath, …]) — وبناء ذلك المصفوفة من قيم format وcodec وpixelFormat المدرجة في قائمة السماح بدلًا من سلاسل حرة الشكل. التحقق من المحتوى، وليس مجرد التحقق من النوع عبر Zod، هو المتطلب الأساسي.

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

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

التاريخالحدث
2026-05-29تحديد الثغرة عبر مراجعة مصدر حزمة tarball المنشورة
2026-06-01التحقق الديناميكي عبر MCP stdio في حاوية معزولة
2026-06-13إعادة التحقق على مضيف ثانٍ؛ المستودع لا يفعّل Private Vulnerability Reporting، وحقول repository/bugs/homepage في package.json متروكة على قالب github.com/yourusername، ما يتركه بلا جهة اتصال أمنية موثّقة
2026-07-13يخصّص MITRE CNA-LR المعرّف CVE-2026-52617، مع نسبة الاكتشاف إلى s1ko
2026-08-22إعادة تأكيد نقطة الحقن على الفرع الافتراضي؛ أحدث إصدار على npm لا يزال 0.2.1؛ نشر هذا التقرير

المراجع

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

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

الترخيص

MIT — انظر LICENSE.

تنزيل الأداة