آخر تحديث: 22 أكتوبر 2026 — هذا التنبيه حيّ وسيُحدَّث مع ظهور معلومات جديدة. راجع قسم «سجل التحديثات» في نهاية المقال.
| المعرّف | CVE-2026-110264 |
| المنتج | GitLab Community Edition (CE) وEnterprise Edition (EE) — النسخ المُدارة ذاتيًا (Self-Managed) |
| الخطورة | حرجة — CVSS 3.1: 10.0 (الحد الأقصى) |
| المتجه | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| نوع الثغرة | فيض عددي صحيح (Integer Overflow) عند تصريف تعبير نمطي (Regex) مُعدّ خصيصًا في محرك Onigmo |
| الأثر | تنفيذ أوامر عن بُعد (RCE) على خادم GitLab دون مصادقة |
| النسخ المتأثرة | كل النسخ من 7.0 (عام 2014) حتى ما قبل الإصدارات المُصلِحة |
| الإصدارات المُصلِحة | 19.5.1 / 19.4.3 / 19.3.6 / 19.2.9 / 19.1.9 / 19.0.10 / 18.11.13 |
| حالة الاستغلال | لا دليل معلن على استغلال فعلي؛ غير مدرجة في كتالوج CISA KEV حتى 22 أكتوبر 2026 |
| المكتشف | الباحث joaxcar عبر برنامج HackerOne |
| الأولوية | عاجلة جدًا — التحديث فورًا |
الملخص التنفيذي
في 21 أكتوبر 2026 أصدرت GitLab تحديثًا أمنيًا حرجًا يعالج الثغرة CVE-2026-110264، وهي ثغرة بأعلى تقييم ممكن (CVSS 10.0) تسمح لمهاجم غير مصادَق بتنفيذ شيفرة عشوائية على خادم GitLab. ينشأ الخلل من فيض عددي صحيح أثناء تصريف تعبير نمطي مُعدّ خصيصًا في Onigmo، محرك التعابير النمطية المدمج في لغة Ruby، والذي تشحنه GitLab ضمن حزمها.
ما يجعل هذه الثغرة استثنائية هو نطاقها الزمني: فهي تطال كل نسخ GitLab المُدارة ذاتيًا منذ الإصدار 7.0 الصادر عام 2014، أي نحو 12 عامًا من الإصدارات. وهذه رابع ثغرة تنفيذ أوامر في محرك التعابير النمطية لـ GitLab يبلّغ عنها الباحث نفسه خلال شهر تقريبًا، وكانت الثلاث السابقة تقتصر على الإصدارات من 19.2 فصاعدًا. GitLab.com محمي بالفعل، والمطلوب من الجهات التي تشغّل GitLab على خوادمها الخاصة التحديث فورًا.
تكتسب الثغرة خطورة إضافية لأن خوادم GitLab تحتضن عادةً أثمن أصول المؤسسة: الشيفرة المصدرية، ومتغيرات CI/CD السرية، ورموز Runners، ومفاتيح النشر، ومفاتيح الوصول إلى البيئات السحابية والإنتاجية. أي أن اختراق خادم GitLab قد يكون بوابة لهجوم على سلسلة الإمداد البرمجية بأكملها.
الخط الزمني: شهر من ثغرات محرك التعابير النمطية
- 23 سبتمبر 2026: إصلاح الثغرتين CVE-2026-93577 وCVE-2026-89078 (CVSS 9.9 لكل منهما، وتتطلبان حسابًا مسجلًا).
- 12 أكتوبر 2026: إصلاح CVE-2026-97229 (CVSS 10.0) — فيض في مصرّف التعابير النمطية ضمن إعدادات CI/CD دون مصادقة، في الإصدارات 19.2.8 و19.3.5 و19.4.2، ضمن تحديث عالج 24 ثغرة.
- 21 أكتوبر 2026: إصلاح CVE-2026-110264 (CVSS 10.0) مع 11 ثغرة أخرى، ونقل الإصلاح إلى الفروع 18.11 حتى 19.2 خارج الجدول المعتاد نظرًا لخطورته.
تنبيه مهم: من حدّث إلى إصدارات 12 أكتوبر (مثل 19.4.2 أو 19.3.5) ما يزال معرّضًا لهذه الثغرة الجديدة، ويجب عليه التحديث مجددًا.
التفاصيل التقنية
تستخدم GitLab محرك Onigmo لمعالجة التعابير النمطية في مواضع عديدة. عند تصريف تعبير نمطي مُعدّ بعناية، يحدث فيض عددي صحيح داخل المصرّف يؤدي إلى إفساد الذاكرة، ما يمكن تحويله إلى تنفيذ أوامر على الخادم. لم تكشف GitLab رسميًا عن المسار الدقيق الذي يوصل المدخلات إلى المصرّف، ولا عن الشروط اللازمة للاستغلال، لذلك لا يمكن لمسؤولي الأنظمة استبعاد تعرّضهم بناءً على الإعدادات.
غير أن تحليلات مستقلة، إضافة إلى اسم إحدى قواعد الكشف التي نشرتها GitLab («Org mode render error burst»)، تشير إلى أن المسار يمر عبر عرض ملفات Org (.org): إذ تبني مكتبة org-ruby المستخدمة في عرض هذه الملفات تعبيرًا نمطيًا من كلمات مفتاحية يكتبها مؤلف الملف (مثل سطر #+TODO:) دون تهريبها بشكل صحيح. وبحسب هذه التحليلات، يكفي وجود ملف .org خبيث في مشروع عام ليصبح المسار قابلًا للوصول دون تسجيل دخول، ويُنفَّذ الأمر بصلاحيات مستخدم git على الخادم.
ملاحظة: الإصلاح عبارة عن ترقيع لنسخة Ruby المضمّنة في حزم GitLab الرسمية؛ لذا فإن من يشغّل GitLab من المصدر على Ruby النظام قد لا يحصل على الإصلاح بمجرد ترقية GitLab، ويجب عليه التحقق من تحديث Ruby/Onigmo أيضًا.
الإصدارات المتأثرة والمُصلِحة
| الفرع | متأثر | الإصدار المُصلِح |
|---|---|---|
| 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 (النسخ 18.10 وما قبلها لا إصلاح لها، ويجب اتباع مسار الترقية الرسمي حتى 18.11.13 على الأقل) |
- GitLab.com: محمي بالفعل ولا يتطلب أي إجراء.
- GitLab Dedicated: المستأجرون على 19.3.5-internal0 أو 19.4.2-internal0 وما بعدها محميون.
الثغرات الأخرى في التحديث نفسه
عالج التحديث الصادر في 21 أكتوبر 12 ثغرة إجمالًا، أبرزها بعد الثغرة الحرجة:
| المعرّف | الوصف | الخطورة | CVSS |
|---|---|---|---|
| CVE-2026-15723 | الاستيلاء على حساب مستخدم آخر عبر الربط التلقائي بين OmniAuth (مثل SAML) وLDAP — يتطلب تفعيل المسؤول للربط التلقائي | مرتفعة | 8.2 |
| CVE-2026-112212 | تسميم ذاكرة التخزين المؤقت في نقاط اكتشاف OAuth/OIDC قد يعيد توجيه تدفقات تسجيل الدخول إلى خادم المهاجم في البيئات ذات الذاكرة المؤقتة المشتركة | مرتفعة | 7.5 |
| CVE-2026-12664 | ضعف في التحكم بالوصول إلى حقل البريد الإلكتروني في GraphQL | متوسطة | 6.8 |
| CVE-2026-16255 | تطبيق غير مكتمل لقفل العضوية عبر SAML/LDAP (EE) | متوسطة | 5.9 |
| CVE-2026-105777 | كشف بيانات اعتماد داخلية عبر ترويسات الاستجابة | متوسطة | 4.3 |
| CVE-2026-13319 | تجاوز التفويض في واجهة Group Milestones | متوسطة | 4.3 |
| CVE-2026-112378 | الثقة بترويسة تفعيل ميزات AI Gateway (EE) | متوسطة | 4.3 |
| CVE-2026-105711، CVE-2026-14288، CVE-2026-112326، CVE-2026-103515 | ثغرات منخفضة الخطورة في ذاكرة عرض طلبات الدمج، وسياسات الموافقة، وتنظيف نتائج الفحص، وقفل إعدادات Duo | منخفضة | 2.7–3.5 |
حالة الاستغلال
- لم تُعلن GitLab عن أي استغلال فعلي، ولا توجد شيفرة إثبات مفهوم (PoC) علنية مؤكدة حتى الآن.
- الثغرة غير مدرجة في كتالوج CISA KEV حتى 22 أكتوبر 2026.
- مع ذلك، فإن نشر الترقيع يكشف موضع الخلل للمهاجمين، وتوالي ثغرات محرك التعابير النمطية خلال شهر واحد يعني أن هذه المنطقة تحت مجهر الباحثين والمهاجمين معًا، لذا يُتوقع ظهور محاولات استغلال قريبًا.
الإجراءات الموصى بها
1. التحقق من الإصدار المثبّت
# حزمة Linux (Omnibus)
sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# Docker
docker exec <container> cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# Helm: راجع عمود APP VERSION (وليس إصدار الـ chart)
helm list --all-namespaces | grep -i gitlab
# عبر الواجهة البرمجية
curl --header "PRIVATE-TOKEN: <token>" https://gitlab.example.com/api/v4/version
2. التحديث فورًا (الحل الوحيد)
- أخذ نسخة احتياطية كاملة قبل الترقية (
gitlab-backup createمع نسخgitlab.rbوgitlab-secrets.json). - الترقية إلى الإصدار المُصلِح لفرعك، مع البدء بالخوادم المكشوفة على الإنترنت.
- مراعاة أن الإصدارين 19.4.3 و19.3.6 يتضمنان ترحيلات لقاعدة البيانات؛ ما يعني توقفًا للخدمة في الخوادم أحادية العقدة. أما البيئات متعددة العقد فيمكنها اتباع إجراء الترقية دون توقف (Zero-Downtime).
- من يعمل على 18.10 أو أقدم: اتباع مسار الترقية الرسمي (Upgrade Path) حتى 18.11.13 على الأقل، ويُفضَّل الانتقال إلى فرع مدعوم (19.3 أو 19.4 أو 19.5).
- التحقق من الإصدار مجددًا بعد الترقية.
3. تقليل المخاطر حتى إتمام التحديث
لا توجد أي إعدادات بديلة رسمية تعالج الثغرة، لكن يمكن تضييق مسار الهجوم دون مصادقة مؤقتًا:
- تقليل المشاريع العامة (Public) قدر الإمكان، وتحويلها إلى «داخلية» أو «خاصة» إن أمكن، وتقييد مستوى الرؤية العامة على مستوى المثيل (Restricted visibility levels).
- تعطيل التسجيل المفتوح للحسابات الجديدة إن لم يكن ضروريًا.
- وضع واجهة GitLab خلف VPN أو قصر الوصول على عناوين IP موثوقة إن لم تكن بحاجة لإتاحتها على الإنترنت.
الكشف والاستجابة
نشرت GitLab قاعدتي كشف بصيغة Sigma ضمن إطارها مفتوح المصدر للكشف عن محاولات استغلال هذه الثغرة في النسخ المُدارة ذاتيًا:
- Onigmo native worker crash: رصد انهيارات أصلية في عمّال Puma مرتبطة بمحرك Onigmo. ابحث في
/var/log/gitlab/puma/puma_stderr.logعن تقارير[BUG]الخاصة بـ Ruby التي تذكرonigmoأوorg-ruby. - Org mode render error burst: رصد دفعات من أخطاء عرض ملفات Org. ابحث في
/var/log/gitlab/gitlab-rails/exceptions_json.logعن تكرار أخطاءTimeout::Errorعند عرض ملفات.org(مثلًا خمسة أخطاء أو أكثر من العميل نفسه خلال 30 دقيقة). - فحص المستودعات: البحث عن ملفات
.orgتحتوي أسطر#+TODO:طويلة بشكل غير طبيعي:
rg -l --glob '**/*.org' '^\#\+(TODO|SEQ_TODO|TYP_TODO):.{500,}'
- راقب العمليات الفرعية غير المتوقعة التي يُطلقها مستخدم
gitأو عمليات Puma/Sidekiq (أصداف،curl،wget، اتصالات صادرة). - تنبّه إلى أن ملف
puma_stderr.logغالبًا لا يُرسَل إلى نظام SIEM افتراضيًا، وأن الاستغلال الناجح قد لا يترك أثرًا في السجلات؛ غياب الأخطاء ليس دليلًا على السلامة.
عند الاشتباه بالاختراق
- عزل الخادم وحفظ السجلات والأدلة قبل أي تغيير.
- اعتبار جميع الأسرار المخزنة مكشوفة، وتدويرها: متغيرات CI/CD، رموز Runners، مفاتيح النشر (Deploy Keys)، رموز الوصول الشخصية ورموز المشاريع والمجموعات، مفاتيح الوصول السحابية، وأسرار
gitlab-secrets.json. - مراجعة سجل التعديلات على المستودعات الحساسة وخطوط CI/CD بحثًا عن تعديلات غير مصرح بها قد تمثل هجومًا على سلسلة الإمداد.
- إعادة بناء الخادم من مصدر نظيف عند تأكيد الاختراق.
الخلاصة: ثغرة بتقييم 10.0 تطال 12 عامًا من إصدارات GitLab، على خوادم تحتضن الشيفرة المصدرية وأسرار CI/CD. حدّث إلى الإصدار المُصلِح لفرعك الآن — حتى لو كنت حدّثت قبل أسبوع — وقلّل المشاريع العامة حتى إتمام التحديث، وفعّل قاعدتي الكشف الرسميتين.
المراجع
- GitLab — Critical Patch Release 19.5.1 / 19.4.3 / 19.3.6 (المصدر الرسمي)
- NVD — CVE-2026-110264
- The Hacker News — Critical GitLab Flaw (CVSS 10.0)
- SecurityOnline — GitLab Critical Patch Release
- Lilting — تحليل مسار ملفات Org
- Konfirmity — Advisory and detection guidance
- DevOps.com — تحديث 12 أكتوبر (CVE-2026-97229)
سجل التحديثات
- 22 أكتوبر 2026: النشر الأول للتنبيه بناءً على التحديث الأمني الحرج الصادر عن GitLab في 21 أكتوبر 2026.