صورة من PixaBay

GitHub، منصة استضافة الأكواد المستخدمة على نطاق واسع، كشفت أن أكثر من ٤ ٠٠٠ حزمة برمجية معرضة لهجمات RepoJacking. هذه الثغرة، التي اكتشفها باحثو Checkmarx، أثارت مخاوف في مجتمع المصادر المفتوحة ودفعت GitHub إلى التصرف بسرعة.

شرح هجوم RepoJacking

RepoJacking، اختصار لاختطاف المستودع (repository hijacking)، هي تقنية يستخدمها المهاجمون للسيطرة على مستودع. تعتمد طريقة الهجوم هذه على استغلال حالة سباق بين عمليات إنشاء المستودع وتغيير اسم المستخدم في GitHub. بشكل أساسي، يطالب المهاجمون باسم المستخدم القديم لمستودع بعد أن يغير المنشئ الشرعي اسم مستخدمه. ثم ينشرون مستودعًا ضارًا بنفس الاسم، مما يخدع المستخدمين الذين يقومون بتنزيل محتوى ضار.

عواقب هذه الثغرة كبيرة. إنها تؤثر على أكثر من ٤ ٠٠٠ حزمة برمجية في لغات برمجة مثل Go وPHP وSwift، بالإضافة إلى إجراءات GitHub. الكثير من هذه الحزم حظيت بشعبية كبيرة، مع أكثر من ١ ٠٠٠ نجمة. لم نكتشف بعد التأثير المحتمل على ملايين المستخدمين والتطبيقات المتنوعة.

استجابة GitHub

قامت Checkmarx بالكشف المسؤول عن هذه الثغرة إلى GitHub في ١ مارس ٢٠٢٣، مما دفع المنصة إلى التحرك. قدمت GitHub آلية "سحب مساحات أسماء المستودعات الشائعة" لمنع RepoJacking. من خلال هذا الإجراء الأمني، تعتبر المستودعات التي لديها أكثر من ١٠٠ استنساخ في وقت تغيير اسم المستخدم "مسحوبة" ولا يمكن استخدامها من قبل الآخرين. كما تعتبر مجموعة اسم المستخدم واسم المستودع "مسحوبة".

ومع ذلك، اتضح أن الإجراء الأمني كان يمكن التحايل عليه بسهولة. حددت Checkmarx أكثر من ٤ ٠٠٠ حزمة في مديري الحزم التي تستخدم أسماء مستخدمين تمت إعادة تسميتها، مما يعرضها لخطر الاختطاف.

كيف يعمل الهجوم

وصفت Checkmarx الخطوات المتضمنة في هجوم RepoJacking:

  1. تتكون الضحية من اسم المستخدم « victim_user/repo ».
  2. تقوم الضحية بإعادة تسمية « victim_user » إلى « renamed_user ».
  3. يصبح المستودع « victim_user/repo » مسحوبًا.
  4. يقوم مهاجم باسم المستخدم « attacker_user » بإنشاء مستودع باسم « repo » في نفس الوقت ويعيد تسمية اسم المستخدم « attacker_user » إلى « victim_user ».

يتم ذلك من خلال طلب API لإنشاء مستودع واعتراض طلب إعادة التسمية لتغيير اسم المستخدم.

ثغرات مستمرة

يكشف هذا الاكتشاف عن المخاطر المستمرة المرتبطة بآلية "سحب مساحات أسماء المستودعات الشائعة" من GitHub. يختار العديد من مستخدمي GitHub، بمن فيهم أولئك الذين يتحكمون في مستودعات وحزم شائعة، استخدام ميزة "إعادة تسمية المستخدم" التي تقدمها GitHub. وهذا يجعل التحايل على "سحب مساحات أسماء المستودعات الشائعة" هدفًا جذابًا لمهاجمي سلسلة التوريد.

GitHub تتخذ إجراءات حاسمة

قامت GitHub بحل المشكلة اعتبارًا من ١ سبتمبر ٢٠٢٣، بعد الكشف المسؤول من Checkmarx. في ضوء هذه الثغرة، يُنصح المستخدمون بتجنب استخدام مساحات الأسماء المسحوبة لتقليل سطح الهجوم. بالإضافة إلى ذلك، يُوصى بإجراء عمليات تدقيق شاملة للكود للتأكد من عدم وجود تبعيات قد تؤدي إلى اختطاف المستودعات.

تُظهر ثغرة GitHub التي اكتشفتها Checkmarx التهديدات المستمرة للمشاريع مفتوحة المصدر. يجب على المستخدمين البقاء يقظين مع استمرار تطور أساليب الهجوم.