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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-53652-Jenkins-Git-Parameter-Analysis — CVE-2025-53652: تحليل Git Parameter في Jenkins | Kitploit
أدوات/GitHubGitHub/pl4tyz/cve-2025-53652-jenkins-git-parameter-analysis
تحليل الثغرات الأمنيةتحليل الكودالاستغلالDevSecOpsالقيادة والسيطرةالتعلم والتعليم
GitHubpl4tyz/cve-2025-53652-jenkins-git-parameter-analysis

CVE-2025-53652-Jenkins-Git-Parameter-Analysis

CVE-2025-53652: تحليل Git Parameter في Jenkins

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
23منذ سنة واحدةلم تتم المراجعة بعد

CVE-2025-53652: ثغرة إدخال غير مُتحقق منه في مكوّن Jenkins Git Parameter Plugin

الملخص

تنشأ هذه الثغرة لأن المدخلات التي يتحكم بها المستخدم من معاملات بناء Jenkins تُحقن بطريقة غير آمنة في أمر Git checkout.

يُقدَّم إدخال المستخدم كمعامل بناء (مثل gitParameters)، ويمكن أن يحتوي على أوامر شل خبيثة.

يُغلَّف هذا المعامل في GitParameterValue (يمتد من StringParameterValue)، وتقوم طريقته buildEnvironment() بكشفه كمتغير بيئة في سياق البناء دون تعقيم.

أثناء عملية SCM checkout، يقوم Jenkins بتحميل متغيرات بيئة البناء عبر build.getEnvironment().

يتم الحصول على اسم الفرع المستخدم في checkout (localBranchName) من متغيرات البيئة هذه.

ثم يُمرَّر اسم الفرع مباشرةً إلى طريقة CheckoutCommand.branch().

أخيرًا، تستدعي CheckoutCommand.execute() أمر Git CLI الأساسي، الذي يدمج اسم الفرع دون تحقق أو تهريب.

يتيح ذلك حقن الأوامر، مما يسمح للمهاجم بتنفيذ أوامر شل عشوائية على مضيف بناء Jenkins.

التحليل

  1. الطريقة createValue التي تتعامل مع إدخال المستخدم (مثل الحمولة JSON من HTTP POST)، وهنا يقبل Jenkins قيم المعاملات المقدمة من المستخدم عبر الطلب (على سبيل المثال، "selected": "master; rm -rf /"). يُغلَّف الإدخال في GitParameterValue، الذي يمتد من StringParameterValue، دون تعقيم أو تحقق من الإدخال. هذا يعني أن بيانات المستخدم الخام تُقبل كمعامل بناء وتُخزَّن كمثيل ParameterValue. createValue.png

  2. فئة GitParameterValue الممتدة من StringParameterValue، ترث GitParameterValue من StringParameterValue لكنها لا تضيف أي تعقيم. تعني سلسلة المنشئات أن إدخال المستخدم يُخزَّن الآن في كائن سيستخدمه Jenkins لاحقًا لبناء متغيرات البيئة. هذا ينشر المدخلات الخبيثة في متغيرات بيئة بناء Jenkins. gitParameterValue.png"

  3. فئة StringParameterValue وطريقتها buildEnvironment، هذه الطريقة حاسمة — فهي تكشف المعامل كمتغيرات بيئة في سياق البناء عبر القيام بـ stringParameter.png"

root@kitploit:~
env.put(name, value);
env.put(name.toUpperCase(Locale.ENGLISH), value);

نظرًا لأن القيمة إدخال مستخدم غير معقّم، فإنها تسمح للمدخلات الخبيثة بالدخول إلى متغيرات بيئة Jenkins، مما يجعلها في متناول العمليات اللاحقة مثل أوامر Git.

  1. طريقة _checkout في مكوّن GitSCM، تستدعي هذه الطريقة build.getEnvironment(listener)، التي تجمع متغيرات البيئة بما فيها المتغير الخبيث الذي تم ضبطه مسبقًا. تستخدم هذه المتغيرات للحصول على اسم الفرع (عبر localBranchName)، الذي يُمرَّر بعد ذلك إلى CheckoutCommand. يتدفق متغير البيئة من المعامل الخبيث مباشرةً إلى عملية checkout. checkout.png

  2. إنشاء CheckoutCommand وتعيين الفرع/المرجع بإدخال المستخدم، تستخدم CheckoutCommand.branch(localBranchName) متغير البيئة غير المعقّم. نظرًا لأن localBranchName جاء من متغيرات بيئة يتحكم بها المستخدم، فإنه يحقن أوامر عشوائية في عملية checkout، وهذا يمهّد لحقن الأوامر عند استدعاء execute(). checkoutCommand.png

  3. الطريقة CheckoutCommand.execute() التي تشغّل أمر Git CLI، هذه هي الخطوة الأخيرة حيث يُمرَّر سلسلة الفرع المحقونة مباشرةً إلى Git CLI الخاص بالنظام دون تهريب أو تعقيم، ونتيجة لذلك، تُنفَّذ الحمولة الخبيثة كأوامر شل، مما يتيح تنفيذ التعليمات البرمجية عن بُعد على مضيف Jenkins.

الخاتمة

يكشف هذا التحليل كيف يمكن لمكوّن Jenkins Git Parameter Plugin، بالاقتران مع مكوّن Git SCM، أن يؤدي إلى ثغرة حرجة في حقن الأوامر. فمن خلال كشف قيم المعاملات التي يتحكم بها المستخدم كمتغيرات بيئة بطريقة غير آمنة، ثم تمريرها مباشرةً إلى أوامر Git CLI دون تعقيم مناسب، يمكن للمهاجمين تنفيذ أوامر عشوائية على خادم بناء Jenkins.

تسلّط سلسلة انهيار الثقة هذه — من الحمولة JSON الخبيثة الأولية إلى التنفيذ النهائي في الشل — الضوء على أهمية التحقق الصارم من المدخلات والتعامل الآمن مع معاملات البناء في أنظمة التكامل المستمر.

يجب على المستخدمين والمسؤولين التأكد من تشغيل إصدارات محدّثة من Jenkins وجميع المكوّنات الإضافية، ومراجعة أي معاملات تؤثر على أوامر الشل بعناية. يمكن أن تقلل الإجراءات التخفيفية مثل تعقيم المدخلات، أو القوائم البيضاء للفروع المسموح بها، أو عزل بيئات البناء من المخاطر.

إن فهم هذا التدفق يزوّد متخصصي الأمن والمطورين بالرؤية اللازمة لاكتشاف ومنع ومعالجة ثغرات الحقن المماثلة في Jenkins أو منصات CI/CD المماثلة.

تنزيل الأداة
execute.png