العودة
باحث يعثر على 10 آلاف مستودع على GitHub توزّع حصان طروادة
SiTech AI Team3 წთ. საკითხავი

باحث يعثر على 10 آلاف مستودع على GitHub توزّع حصان طروادة

مطوّر اكتشف أن نسخًا من مشروعه تُستخدم لنشر برمجيات خبيثة حلّل بيانات أحداث GitHub العامة وتتبّع 10 آلاف مستودع في حسابات مختلفة توزّع حصان طروادة عبر ملف ZIP مرتبط بملف readme.

نشر مطوّر اكتشف أن نسخًا من مشروعه على GitHub تُستخدم لنشر برمجيات خبيثة قائمة تضم 10 آلاف مستودع، يقول إنها توزّع حصان طروادة عبر رابط يُضاف إلى ملف readme. للمستودعات أسماء ومساهمون مختلفون، وهي ليست نسخًا متفرعة (fork) بعضها من بعض، لكن نمطها منتظم بما يكفي ليعثر عليها سكربت.

نسختان وملف ZIP

بدأ التحقيق، المنشور على orchidfiles.com، بعملية بحث. أثناء بحثه عن أحد مشاريعه، وجد الكاتب مستودعه في نتائج Google، وعلى Bing وجد مستودعًا تابعًا لحساب آخر بالاسم والوصف نفسهما، مع نسخة كاملة من سجل الالتزامات (commits) واسمه مدرجًا بين المساهمين. وقبل ساعة كان قد أُرسل التزام يضيف إلى ملف readme رابطًا لملف ZIP. وعثر على مستودع ثانٍ بالطريقة نفسها أثناء تصفح وسوم GitHub.

عند متابعة الاثنين، تبيّن أن آخر التزام يُحذف ويُرسل التزام مطابق له كل بضع ساعات؛ والتغيير الوحيد فيه هو رابط الأرشيف. أبلغ دعم GitHub بالمستودعات، ولم يتلقَّ ردًا لأسبوعين، وبعد نحو شهر أُبلغ بأنها حُذفت.

من 16 مليون دفعة إلى 10 آلاف مستودع

لقياس حجم الحملة لجأ إلى GH Archive، الذي ينشر جميع أحداث GitHub لأي يوم، ورشّح بيانات خمسة أيام ليشمل أحداث push فقط. ومن بين 16 مليون دفعة، كان نحو 3000 مستودع يُحدَّث كل بضع ساعات. ولأن الأحداث لا تسجّل الملفات التي تغيّرت، احتاج كل مرشح إلى طلبات إضافية من GitHub API، في حدود 5000 طلب في الساعة لكل رمز وصول.

قلّصت المرشّحات — التزامات من مستخدمين لا من روبوتات، وفجوة تتجاوز شهرًا قبل آخر التزام، وأكثر من مساهم واحد — القائمة إلى 14 مستودعًا. لكن النتيجة كانت خاطئة: فقد كانت جميعها في الواقع قد حُدّثت قبل 20 ساعة، أي أن شرط «التحديث كل بضع ساعات» كان يستبعد معظم الحملة. ولاحظ أيضًا مستودعات يحمل آخر التزام فيها — وكلها بعنوان «Update README.md» — رابط ZIP لكنه بلا أي تغييرات. وتوسيع المرشّح ليشمل مستودعات تُحدَّث بين مرة و24 مرة يوميًا أنتج 40 ألف مرشح، طابق 10 آلاف منها النمط بدقة.

ماذا يحتوي الأرشيف

يضم كل ملف ZIP أربعة ملفات: سكربت أوامر، إما Application.cmd أو Launcher.cmd؛ وملفًا تنفيذيًا باسم loader.exe أو luajit.exe أو ما شابه؛ وملف بيانات؛ وlua51.dll. وإرسال رابط الأرشيف إلى VirusTotal لا يُظهر أي اكتشاف، بينما إرسال الملف نفسه يكشف حصان طروادة.

يفترض الكاتب أن إعادة كتابة الالتزامات قد تساعد في تجاوز فحوصات أمان GitHub، وأن استنساخ مستودعات جديدة يضعها في مقدمة نتائج البحث عن عبارات قليلة البحث، وأن نسخ سجل الالتزامات والمساهمين يهدف إلى بناء الثقة. بعض هذه المستودعات موجودة منذ أكثر من عام ولا تُكتشف تلقائيًا. وقد نُشر سكربت الكشف والقائمة الكاملة على GitHub باسم Git Malware Finder.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.