هدهد تك — منصة التقنية والذكاء الاصطناعي
الأربعاء, 11 نوفمبر 2026
عاجل
برامج وتطبيقات | الأمن السيبراني

Git 2.56.1 تعالج ست ثغرات أمنية بينها تنفيذ تعليمات برمجية في الاستنساخ التكراري

11 نوفمبر 2026 4 دقائق قراءة هدهد تك | Hudhud Tech

أصدر مشروع Git إصدارات جديدة في 10 نوفمبر 2026 لإصلاح ست ثغرات أمنية. تشمل العيوب تنفيذ تعليمات برمجية عشوائية عند الاستنساخ التكراري لمستودع ضار، والكتابة إلى ملفات غير مقصودة، وتلف الذاكرة عند معالجة عمليات الدمج أو الرقعات الثنائية.

تأتي الإصلاحات في Git 2.56.1، مع نسخ معدّلة إلى Git 2.55.1 و2.54.1 و2.53.1 و2.52.1 و2.51.3 و2.50.2. ويوصي المشروع بالتحديث إلى Git 2.56.1 أو الإصدار المعدّل لسلسلة الصيانة الخاصة بك، وتحديث أي تطبيقات تتضمن Git.

تنفيذ تعليمات برمجية أثناء الاستنساخ التكراري

يتحقق Git من المسارات قبل كتابة الملفات في شجرة العمل، بما في ذلك رفض المسارات التي قد تستبدل بيانات المستودع الوصفية الخاصة به. لكن اقتطاع عدد صحيح في معالجة فهرس Git يمكن أن يسمح لمسار طويل للغاية بتجاوز التحقق باسم ثم يُكتب باسم أقصر.

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

اجتياز المسار عبر HEAD المعلن

عند استنساخ مستودع فارغ باستخدام بروتوكول Git v2، يمكن للخادم الإعلان عن symref HEAD يشير إلى فرع غير مولود، أي فرع بلا أي commit بعد. لم يتحقق Git من هدف symref قبل تخزينه محلياً.

يمكن لخادم ضار توفير اسم يحتوي على مكونات اجتياز المسار. ومع الواجهة الخلفية للمراجع من نوع files، يمكن لعملية لاحقة تحدّث الفرع أن تكتب خارج دليل المراجع المقصود. يتحقق Git الآن من الهدف المعلن قبل قبوله، كما يتحقق الإصدار من أسماء مراجع أخرى وأهداف مراجع رمزية واردة عبر البروتوكول v2.

تلف الذاكرة في التوقيعات والرقعات وعمليات الدمج

عند إزالة توقيعات GPG من رسالة، افترض Git وجود توقيعين على الأكثر. ورسالة مصممة بأكثر من توقيعين يمكن أن تجعل Git يكتب خارج نهاية مصفوفة ثابتة الحجم على المكدس. ودمج وسم يحتوي على أكثر من توقيعين يمكن أن يفعّل ذلك، ما يسبب تلفاً في الذاكرة واحتمال تعطيل الخدمة، كما يمكن أن تتأثر خدمات الاستضافة التي تنفذ مثل هذه العمليات للمستخدمين. يزيل الإصلاح المصفوفة ثابتة الحجم ويتعامل مع الرسائل بأي عدد من التوقيعات.

يرفض Git الرقع الأكبر من نحو 1 GiB لأن شيفرة تطبيق الرقع لديه لا تستطيع التعامل بأمان مع مدخلات أكبر، لكن ذلك التحقق نظر فقط في حجم الرقعة كما وردت. الرقع الثنائية مضغوطة ومشفرة، لذا يمكن لرقعة صغيرة نسبياً أن تتوسع بما يتجاوز ذلك الحد. ورقعة مصممة يمكنها تجاوز فحص حجم الإدخال والتسبب في قراءة خارج الحدود، ما يؤدي إلى تعطل Git. يتحقق Git الآن أيضاً من الحجم غير المضغوط المعلن قبل معالجة رقعة ثنائية.

تحسب آليات الدمج في Git مقدار الذاكرة التي تحتاجها لنتيجة الدمج قبل كتابة المخرجات. ويمكن أن يحدث تجاوز سعة في ذلك الحساب عندما تكون النتيجة كبيرة جداً، بما في ذلك عند دمج تعارضات كثيرة مع سمة conflict-marker-size كبيرة. ويمكن لتجاوز السعة أن يجعل Git يخصص مخزناً صغيراً جداً ثم يكتب خارجه، ما يفسد ذاكرة الكومة. يؤثر ذلك في التطبيقات وخدمات الاستضافة التي تدمج محتوى غير موثوق، وكذلك في عمليات الدمج المحلية. يستخدم الإصلاح أنواعاً مناسبة للأحجام وحسابات متحققاً منها، ويرفض عمليات الدمج التي لا يمكن تمثيل حجم مخرجاتها بأمان.

الوصول إلى نظام الملفات عبر fast-import

يقرأ git fast-import تدفقاً من الأوامر لبناء مستودع. يمكن لبعض الأوامر الوصول إلى ملفات خارج المستودع، لذا يقيّدها Git بالفعل عندما تظهر في تدفق إدخال غير موثوق. لكن ثلاث ميزات إضافية افتقرت إلى تلك الحماية.

يمكن لميزتي rewrite-submodules-from وrewrite-submodules-to قراءة ملفات عشوائية، ما قد يكشف محتوياتها عبر رسائل الخطأ. ويمكن لخيار export-pack-edges إنشاء ملفات أو إلحاق بيانات بملفات موجودة. تُرفض هذه الميزات الآن عند توفيرها عبر تدفق الإدخال ما لم يفعّل المستدعي صراحةً --allow-unsafe-features، الذي ينبغي تفعيله فقط عندما يكون البرنامج المولّد للتدفق موثوقاً.

تعزيزات وتحديثات GitHub

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

تقول GitHub إنها نشرت الإصلاحات عبر github.com وGitHub Enterprise Cloud وGitHub Enterprise Cloud with data residency. وتتوفر تحديثات GitHub Enterprise Server في الإصدارات 3.19.15 و3.20.11 و3.21.9 و3.22.4، ويُنصح المسؤولون بالترقية في أقرب وقت ممكن.

تنسّق GitHub إصدارات GitHub Desktop وتطبيق GitHub Copilot التي تتضمن نسخاً معدّلة من Git. وستتلقى GitHub Codespaces وGitHub Actions أيضاً نسخاً معدّلة.

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

إذا لم يكن التحديث الفوري ممكناً، فاستنسخ فقط من خوادم موثوقة وتجنب الاستنساخ التكراري للمستودعات غير الموثوقة. وتجنب دمج محتوى أو وسوم غير موثوقة، ومعالجة الرقع الثنائية أو تدفقات fast-import من مصادر غير موثوقة. هذه الاحتياطات لا تغني عن تثبيت الإصلاحات.

 

المصدر: GitHub Blog

ما رأيك بهذا الخبر؟

شارك الخبر: