يقوم GitHub بإصلاح حالة السباق التي كان من الممكن أن تؤدي إلى “repojacking”
قام GitHub بإصلاح أ حالة السباق ثغرة أمنية في عمليات إنشاء المستودع وإعادة تسمية المستخدم والتي كان من الممكن أن تمكن جهات التهديد من تنفيذ ما يعرف بهجوم إعادة النشر.
اكتشفه وكشف عنه باحثون من Checkmarx، لو تم استغلال الخلل، لكان من الممكن استخدامه للتحكم في مستودعات التعليمات البرمجية واختطافها لتوزيع التعليمات البرمجية الضارة. وكان من الممكن أن يكون لها أيضًا آثار سيئة على سمعة أولئك الذين وقعوا ضحايا لها.
كتب Elad Rapoport من Checkmarx: “Repojacking هي تقنية يتحكم فيها المهاجم في مستودع GitHub من خلال استغلال خلل منطقي يجعل المستخدمين المعاد تسميتهم عرضة للخطر”.
“يختطف المهاجم مساحة اسم مشروعة، وغالبًا ما تكون شائعة، على GitHub. مساحة الاسم هي مزيج من اسم المستخدم واسم الريبو، على سبيل المثال: example-user/example-repo.
تصبح مساحات الأسماء على GitHub عرضة لإعادة النشر عند تغيير اسم المستخدم الأصلي باستخدام ميزة “إعادة تسمية المستخدم”. عندما يقوم مستخدم GitHub بإعادة تسمية نفسه، لا يقوم GitHub بإعداد عمليات إعادة التوجيه لصفحة ملفه الشخصي القديمة أو مواقع الصفحات، ولكنه يقوم بإنشاء عمليات إعادة توجيه لمستودعاته. يتم إعلام المستخدمين بذلك عبر نافذة منبثقة أثناء العملية.
لسوء الحظ، عند القيام بذلك، يصبح اسم المستخدم القديم أيضًا متاحًا لأي شخص آخر للمطالبة به، لذلك بمجرد إعادة تسمية المستخدم بنجاح، يمكن لممثل ضار المطالبة باسم المستخدم القديم الخاص به، وفتح الريبو تحت اسم الريبو المطابق، واختطاف مساحة الاسم.
تم تحديد وإصلاح عيوب أخرى في هذه العملية سابقًا، وكان لدى GitHub تدابير حماية متاحة – لا سيما إيقاف المستودعات الشائعة (تلك التي تحتوي على أكثر من 100 نسخة في وقت إعادة التسمية) بحيث لا يمكن أخذ اسم المستخدم.
ومع ذلك، وجد Rapoport أنه كان قادرًا على تجاوز هذه الإصلاحات من خلال الاستفادة من حالة السباق بين إنشاء المستودع وإعادة تسمية اسم المستخدم، وذلك من خلال القيام بالأمرين معًا تقريبًا – باستخدام طلب API لإنشاء المستودع واعتراض الطلب المعاد تسميته لـ تغيير اسم المستخدم.
وقال: “يتيح الاستغلال الناجح الاستيلاء على حزم التعليمات البرمجية الشائعة في العديد من مديري الحزم، بما في ذلك “Packagist” و”Go” و”Swift” والمزيد”. “لقد حددنا أكثر من 4000 حزمة في مديري الحزم تلك باستخدام أسماء مستخدمين مُعاد تسميتها، وهم معرضون لخطر التعرض لهذه التقنية في حالة العثور على تجاوز جديد. من بين هذه الحزم المعرضة للخطر، حصل المئات منها على أكثر من 1000 نجمة على GitHub.
“بالإضافة إلى ذلك، يمكن أن يؤدي استغلال هذا التجاوز أيضًا إلى الاستيلاء على إجراءات GitHub الشائعة، والتي يتم استهلاكها أيضًا عن طريق تحديد مساحة اسم GitHub. قد يؤدي تسميم إجراء GitHub الشهير إلى هجمات كبيرة على سلسلة التوريد مع تداعيات كبيرة.
على الرغم من أن مشكلة إعادة النشر هذه قد تم حلها، إلا أنها الرابعة التي يتم العثور عليها في العامين الماضيين – ثلاثة في عام 2022 وحده – وقالت رابوبورت إنها تتحدث عن المخاطر المستمرة المرتبطة بآلية التقاعد الشائعة لمساحة اسم المستودع.
وقال: “يختار العديد من مستخدمي GitHub، بما في ذلك المستخدمون الذين يتحكمون في المستودعات والحزم الشائعة، استخدام ميزة “إعادة تسمية المستخدم” التي تقدمها GitHub”. “لهذا السبب، تظل محاولة تجاوز “تقاعد مساحة اسم المستودع الشعبي” نقطة هجوم جذابة لمهاجمي سلسلة التوريد مع إمكانية التسبب في أضرار كبيرة.”
على الرغم من الإصلاح، توصي Checkmarx بأن يتجنب المستخدمون استخدام مساحات الأسماء المتقاعدة لتقليل سطح الهجوم الخاص بهم، والتأكد من عدم وجود تبعيات للتعليمات البرمجية التي قد تجعل مستودع GitHub عرضة للخطر. ويقدم أداة مفتوحة المصدر خاصة به، اختطاف السلسلة، والتي يمكن أن تساعد في هذا.