Alpine Linux: خادم GitLab بقي مكشوفًا بعد ترقيتين لأن إصلاح الثغرة كان في Ruby
نشر مشروع Alpine Linux في 28 أكتوبر 2026 تقريرًا عن محاولة اختراق لخادم GitLab الذي يستضيفه. وأهم ما فيه أن المشروع رقّى GitLab مرتين وبقي مكشوفًا.
والثغرة هي CVE-2026-97229 بدرجة 10 في تقييم التعبيرات النمطية داخل إعدادات الـ CI. لكن الكود المعطوب ليس من GitLab، بل في Onigmo، محرك التعبيرات النمطية في لغة Ruby. وتوزّع شركة GitLab نسخة Ruby مرقّعة داخل حزمها الرسمية فقط. فحين يعمل الخادم على Ruby الخاصة بالتوزيعة، لا يدل رقم إصدار GitLab على شيء بشأن هذه الثغرة.
ويوضح الخط الزمني كيف حدث ذلك:
- 12 أكتوبر: أصدرت GitLab الإصلاح في 19.3.5.
- 13 أكتوبر: ثبّت المشروع 19.3.4 بالخطأ.
- 20 و21 أكتوبر: محاولات استغلال أوقعت عمليات الخدمة 8 مرات، وصل 4 منها إلى منتصف الطريق.
- 22 أكتوبر: ترقية إلى 19.3.6، وبقيت الثغرة مفتوحة.
- 23 أكتوبر: أصدرت Ruby الإصلاح الفعلي، وحُجب حساب المهاجم.
- 25 و26 أكتوبر: محاولات أخرى فشلت.
ولا يوجد دليل على نجاح الاستغلال. ومع ذلك تعامل المشروع مع الخادم كأنه اختُرق، فأعاد بناءه من البداية وانتهى من ذلك في 28 أكتوبر، وغيّر كل كلمات السر والمفاتيح.
وراجع المشروع مستودع aports وكل الحزم المبنية بين 20 و24 أكتوبر، والإصدارات المستقرة 3.21.9 و3.22.7 و3.23.7 و3.24.3 بما فيها ملفات ISO وminirootfs، من سجلات خارج GitLab، ووجدها سليمة. ومفاتيح توقيع الحزم لم تكن مخزّنة على هذا الخادم أصلًا. ويهم ذلك من يبني صوره فوق Alpine، وهي أساس عدد كبير من صور Docker.
والدرس يتجاوز GitLab. فرقم الإصدار يغطي الكود الذي يوزّعه المشروع نفسه، أما ما هو محزوم تحته فله جدول تحديث مستقل. ووسم الـ container الذي لم يتغير لا يعني أن محتواه لم يتغير: فبحسب التقرير، الوسم 19.3.6 من صورة alpinelinux/gitlab الذي سُحب قبل 27 أكتوبر ما زال يحمل الثغرة.