GitLab تعالج ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد تؤثر على إصدارات 12 عاماً
أصدرت GitLab في 21 أكتوبر إصلاحات لثغرة حرجة تتيح للمهاجم تنفيذ تعليمات برمجية على خادم مُدار ذاتياً دون مصادقة. وتؤثر هذه الثغرة على كل إصدار من البرنامج يعود إلى الإصدار 7.0 الذي صدر في 2014.
يُعد هذا الإصلاح مهماً بشكل خاص للمسؤولين الذين حدّثوا أنظمتهم قبل تسعة أيام. فالتحديث الصادر في 12 أكتوبر عالج الإصدارين 19.2 وما بعده فقط، بينما الإصدارات المُصلحة الجديدة تعلو ذلك بترقيع واحد، ما يعني أن النسخ التي حُدّثت في 12 أكتوبر لا تزال عرضة للثغرة.
تحمل الثغرة، المتتبعة باسم CVE-2026-110264، درجة CVSS قصوى تبلغ 10.0. وأشارت GitLab إلى أنها قد تتيح، في ظروف محددة، لمستخدم غير مُصادق تنفيذ تعليمات برمجية عشوائية على الخادم بسبب overflow integer أثناء تجميع regular expression مُصمم خصيصاً. لكن GitLab لم تفصح عن ماهية تلك الظروف المحددة.
حتى 22 أكتوبر، أفادت GitLab بعدم وجود دليل على استغلال هذه الثغرة في هجمات. كما أنها غير مُدرجة في كتالوج CISA الأمريكي للثغرات المعروفة الاستغلال.
يحتاج فقط التثبيتات المُدارة ذاتياً إلى تطبيق الإصلاح، لأن GitLab.com يعمل بالفعل على الإصدار المُرقّع. كما تلقى مستأجرو GitLab Dedicated الذين يستخدمون الإصدارات الداخلية 19.3.5-internal0 و19.4.2-internal0 أو أحدث الإصلاح. وعالجت الشركة الثغرة عبر سبعة إصدارات في وقت واحد.
يوضح الجدول التالي الترقيات اللازمة لكل فرع إصدار:
- إذا كنت تشغّل 19.5 قبل 19.5.1، فقم بالترقية إلى 19.5.1
- إذا كنت تشغّل 19.4 قبل 19.4.3، فقم بالترقية إلى 19.4.3
- إذا كنت تشغّل 19.3 قبل 19.3.6، فقم بالترقية إلى 19.3.6
- إذا كنت تشغّل 19.2 قبل 19.2.9، فقم بالترقية إلى 19.2.9
- إذا كنت تشغّل 19.1 قبل 19.1.9، فقم بالترقية إلى 19.1.9
- إذا كنت تشغّل 19.0 قبل 19.0.10، فقم بالترقية إلى 19.0.10
- إذا كنت تشغّل 7.0 حتى 18.11، قبل 18.11.13، فقم بالترقية إلى 18.11.13
أربعة من هذه الإصدارات أقدم من الإصدارات التي تُرقّعها GitLab عادةً. فسياسة الشركة تغطي عموماً الإصدار الحالي والإصدارين الشهريين السابقين، وهما حالياً 19.5 و19.4 و19.3.
ذكرت GitLab أنها نقلت هذا الإصلاح إلى الإصدارات 18.11.13 و19.0.10 و19.1.9 و19.2.9، وهو إجراء مخصص للمشكلات الخطيرة.
يعود سبب تأثير هذه الثغرة على هذا النطاق الواسع من الإصدارات إلى مُجمّع التعبيرات النمطية، وهو المحرك المدمج في Ruby المسمى Onigmo. وتضمّن GitLab هذا المحرك في حزمها وتطبق ترقيعاتها الخاصة عليه. ويوجد ضعف في هذا المحرك في كل إصدار منذ الإصدار 7.0.
كما نشرت GitLab قاعدتي كشف لمساعدة المسؤولين المُديرين ذاتياً في تحديد محاولات الاستغلال المحتملة. وتُسمى هاتان القاعدتان “Onigmo native worker crash” و”Org mode render error burst”، وهما جزء من إطار العمل مفتوح المصدر TLDR framework التابع للشركة، والذي ينسّق كل عملية كشف مقابل سجلات تطبيق GitLab.
لم تحدد GitLab الشروط المسبقة التي يجب أن يستوفيها المهاجم للوصول إلى المُجمّع، ما يعني أن المسؤولين لا يمكنهم حتى الآن استبعاد أنفسهم بناءً على التكوين وحده. ويبقى الإصلاح هو الحماية الوحيدة المضمونة، ولا يقدم إشعار GitLab أي حل بديل مؤقت.
تُعد هذه الثغرة رابع ثغرة لتنفيذ التعليمات البرمجية يبلغ عنها الباحث نفسه، المعروف باسم joaxcar، خلال شهر واحد، وهي الأولى التي تؤثر على إصدارات أقدم من 19.2.
في 12 أكتوبر، عالجت GitLab الثغرة CVE-2026-97229، وهي طفح آخر غير مُصادق في مُجمّع التعبيرات النمطية، في الإصدارات 19.2.8 و19.3.5 و19.4.2. وفي وقت سابق، في 23 سبتمبر، أصلحت الشركة ثغرتين إضافيتين، CVE-2026-93577 وCVE-2026-89078، وكلتاهما بتقييم 9.9 لكنهما تتطلبان حساباً مسجلاً للدخول. وكانت الثغرات الثلاث السابقة محدودة بالإصدار 19.2، على عكس هذه الثغرة الأخيرة.
يعالج إصدار 21 أكتوبر ما مجموعه 11 مشكلة أمنية، بينها واحدة حرجة وعدة بتقييمات عالٍ أو متوسط أو منخفض.
من بين الثغرات الأخرى، الثغرة CVE-2026-15723، بتقييم عالٍ 8.2، قد تتيح لمستخدم مسجل للدخول الاستيلاء على حساب آخر، لكن فقط إذا كان المسؤول قد فعّل الربط التلقائي لكل من SAML وLDAP.
هناك مشكلة كبيرة أخرى هي ثغرة تسميم ذاكرة التخزين المؤقت (cache poisoning) في نقاط نهاية OAuth وOpenID Connect الخاصة بـ GitLab، CVE-2026-112212، بتقييم عالٍ 7.5، قد تُمكّن المهاجم من إعادة توجيه بعض تدفقات تسجيل الدخول إلى خادم يتحكم به في الإعدادات التي تستخدم ذاكرة تخزين مؤقت مشتركة.
ينبغي للمسؤولين التخطيط لاحتمال حدوث توقف أثناء عملية الترقية، لأن الإصدارين 19.4.3 و19.3.6 يتضمنان تغييرات في قاعدة البيانات تتطلب وقتاً لإكمالها. وتشير GitLab إلى أن الإعدادات متعددة العقد يمكنها تطبيق الترقيع دون توقف باستخدام إجراء انعدام التوقف الخاص بها.
المصدر: The Hacker News