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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-71557-poc — إثبات محلي للمفهوم يخص CVE-2026-71557 يوضح ثغرة اجتياز المسار في تخزين مراجع نظام الملفات الخاص بـ go-git، ويتضمن منطق الاستغلال ومقارنة بين الإصدار القابل للاستغلال والإصدار المُصحّح. | Kitploit
أدوات/GitHubGitHub/saku0512/cve-2026-71557-poc
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقأمن سلسلة التوريدالتعلم والتعليم
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

إثبات محلي للمفهوم يخص CVE-2026-71557 يوضح ثغرة اجتياز المسار في تخزين مراجع نظام الملفات الخاص بـ go-git، ويتضمن منطق الاستغلال ومقارنة بين الإصدار القابل للاستغلال والإصدار المُصحّح.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-71557: إثبات مفهوم لتجاوز المسار عبر اسم المرجع في go-git

النسخة الإنجليزية

نظرة عامة

هذا المستودع هو إثبات مفهوم (PoC) محلي وآمن لثغرة CVE-2026-71557 استنادًا إلى الاستشارة الأمنية العامة لـ go-git GHSA-qgq7-7hm3-q39j.

قبل الإصلاح، كان storage/filesystem يستخدم أسماء المراجع السائبة (loose references) دون تحقق كافٍ كمسار .git/<reference-name>. ولهذا، فإن تمرير اسم مرجع مثل refs/heads/../../config يؤدي إلى تطبيع .. ويمكنه الكتابة فوق ملف .git/config خارج مساحة تخزين المراجع المخصصة له.

يستدعي إثبات المفهوم هذا واجهة برمجة التطبيقات الفعلية لـ go-git ويستهدف فقط ملف .git/config وهميًا تم إنشاؤه داخل دليل مؤقت. لا يتصل بخوادم Git خارجية، ولا يعدّل مستودعات قائمة، ولا ينفّذ أوامر عشوائية.

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

هذا المشروع مخصّص للأغراض التعليمية والتحقق الأمني الأخلاقي المصرّح به فقط. لا تستخدمه ضد بيئات دون الحصول على إذن.

تفاصيل الثغرة

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • النوع: Path Traversal (CWE-22)
  • الخطورة: متوسطة
  • CVSS v3.1: 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • الإصدارات المتأثرة:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • الإصدارات المُصحّحة:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • التخزين المتأثر: تخزين المراجع dotgit في storage/filesystem
  • التخزين غير المتأثر: storage/memory

السبب الجذري

في الإصدار v5.19.1 غير المُصحح، كان DotGit.SetRef يمرّر اسم المرجع كما هو كاسم ملف إلى setRef.

fileName := r.Name().String()
return d.setRef(fileName, content, old)

جذر التخزين المدعوم بنظام الملفات هو عادةً .git. اسم المرجع refs/heads/../../config يصبح config بعد تطبيع المسار، وبذلك يتحول كتابة قيمة المرجع إلى كتابة في .git/config. إذا أعلن خادم Git خبيث عن أسماء مراجع من هذا القبيل وبقي الـ traversal قائمًا بعد تعيين الـ refspec أثناء عمليات clone/fetch، فقد تصل أسماء مراجع يتحكم فيها المهاجم إلى مسار الكود هذا.

يقوم الإصدار المُصحح بالتحقق من أسماء المراجع عند نقاط الدخول مثل SetRef وRef وRemoveRef في تخزين نظام الملفات، ويرفض الأسماء التي تخرج عن نطاق تخزين المراجع.

إثبات المفهوم (PoC)

المتطلبات

  • Go 1.25 أو أحدث، أو Go مع تفعيل الجلب التلقائي لسلسلة الأدوات (toolchain)
  • اتصال شبكة مطلوب لتنزيل الوحدات (modules) في المرة الأولى

إعادة الإنتاج باستخدام الإصدار الضعيف

تم تثبيت go.mod على الإصدار الضعيف v5.19.1.

go run .

المخرجات الرئيسية المتوقعة:

[*] go-git version: v5.19.1
[*] crafted reference: refs/heads/../../config
[*] SetReference error: <nil>
[!] VULNERABLE: .git/config was overwritten through the reference name.

ينفّذ إثبات المفهوم الخطوات التالية:

  1. إنشاء تخزين Git مدعوم بنظام الملفات في دليل مؤقت لنظام التشغيل
  2. كتابة علامة (marker) آمنة في .git/config
  3. تمرير مرجع hash باسم refs/heads/../../config إلى SetReference
  4. التحقق من استبدال العلامة بـ hash المرجع
  5. حذف الدليل المؤقت تلقائيًا

المقارنة بين الإصدار الضعيف والإصدار المُصحح

يقوم النص البرمجي التالي بتشغيل نفس إثبات المفهوم بالتتابع مع v5.19.1 و v5.19.2 باستخدام وحدة (module) مؤقتة، دون تغيير go.mod داخل المستودع.

./scripts/run-version-matrix.sh

النتيجة المتوقعة:

go-git v5.19.1
[!] VULNERABLE: .git/config was overwritten through the reference name.

go-git v5.19.2
[+] FIXED: the crafted reference was rejected and .git/config stayed intact.

إذا أردت فحص الملفات المؤقتة، أضِف -keep. لن يتم حذف الدليل المعروض تلقائيًا، لذا احذفه يدويًا بعد الفحص.

go run . -keep

نطاق إثبات المفهوم

يستدعي إثبات المفهوم هذا بشكل مباشر نقطة الدخول الضعيفة في تخزين نظام الملفات الموضحة في الاستشارة، ويتحقق من الكتابة فوق البيانات الوصفية عبر تجاوز المسار. لا ينفّذ خادم بروتوكول Git خبيثًا ولا طبقة نقل (transport) لعمليات clone/fetch.

التخفيف

يجب على مستخدمي v5 التحديث إلى v5.19.2 أو أحدث، وعلى مستخدمي v6 alpha التحديث إلى v6.0.0-alpha.5 أو أحدث. وإلى حين التمكن من التحديث، لا تقم بعمليات clone/fetch من خوادم Git غير موثوقة مع تخزين مدعوم بنظام الملفات. التطبيقات التي تستخدم storage/memory فقط غير متأثرة بهذه الثغرة.

المراجع

  • GHSA-qgq7-7hm3-q39j
  • go-git PR #2247 (إصلاح v6)
  • go-git PR #2254 (نقل إلى v5)
  • إصلاح v5 (commit f3d0cc1)
  • تعزيز أمان إضافي لـ v5 (commit 3b306ef)
تنزيل الأداة