اگر امروز در گیتهاب به دنبال ابزارهای جدید میگردید، احتمالاً در حال کلیک روی یک تروجان هستید. یک پژوهشگر امنیتی کشف کرد که ۱۰ هزار مخزن در گیتهاب (GitHub) در حال توزیع بدافزار از طریق یک الگوی خودکار و بسیار دقیق هستند. طبق گزارشی که در ۱۸ ژوئن ۲۰۲۶ توسط وبسایت orchidfiles.com منتشر شد، این مخازن بهگونهای طراحی شدهاند که شبیه پروژههای معتبر به نظر برسند تا هم کاربران و هم موتورهای جستوجو را فریب دهند.
این تهدید در زمانی رخ میدهد که توسعهدهندگان بیش از هر زمان دیگری به تگها و نتایج جستوجوی گیتهاب برای یافتن کتابخانههای پیشرفته تکیه میکنند. مهاجمان با کلون کردن مخازنی با حجم کم اما جدید، اعتماد کاربران را جلب کرده و بهسرعت به صدر نتایج جستوجو میرسند. آنها با تقلید از پروژههای واقعی، ظاهری مشروع ایجاد میکنند که باعث میشود شک اولیه کاربر برطرف شود. همانطور که در تحلیلهای قبلی ما دربارهی امنیت زنجیره تأمین نرمافزار اشاره کردیم، سوءاستفاده از اعتماد توسعهدهندگان به ابزارهای متنباز، یکی از خطرناکترین بردارهای حمله در سالهای اخیر است.
سازوکار کشف
پژوهشگر ابتدا زمانی متوجه این ناهنجاری شد که نسخهای مشابه از پروژه خودش را در نتایج جستوجوی بینگ (Bing) دید. این کپی تمام تغییرات (Commit) و مشارکتکنندگان اصلی را داشت، اما یک لینک مخرب به یک فایل zip در بخش README اضافه شده بود. او متوجه شد که در حالی که پروژه اصلی در گوگل دیده میشود، این نسخه جعلی با نام و توضیحات دقیقاً یکسان در بینگ ظاهر شده است. بررسیهای دقیقتر نشان داد که تنها یک ساعت پیش از آن، یک تغییر برای افزودن لینک آرشیو ثبت شده بود.
شواهد بیشتر زمانی ظاهر شد که پژوهشگر در حال انتخاب تگ برای پروژه دیگری بود. او با کلیک روی تگها برای یافتن پروژههای مشابه، مخزن دیگری را یافت که نام و توضیحاتش کاملاً یکسان بود. در این مورد هم تمام تاریخچه تغییرات کپی شده بود و لینک فایل zip تنها دو ساعت پیش به README اضافه شده بود. با نظارت بر این دو مخزن، او متوجه یک چرخه شد: هر چند ساعت یکبار، مخازن تغییر قبلی را حذف کرده و دقیقاً همان تغییر را دوباره ثبت میکنند تا لینک فعال بماند.
وقتی پژوهشگر از پشتیبانی گیتهاب درخواست حذف این مخازن را کرد، دو هفته هیچ پاسخی دریافت نکرد. پس از یک ماه، پشتیبانی گیتهاب سرانجام ایمیلی فرستاد و اعلام کرد مخازن حذف شدهاند. در این مدت، او از هوش مصنوعی و انجمنهای گیتهاب کمک خواست، اما هر دو مسیر به پاسخهای بیفایده و توخالی (AI Slop) ختم شد که هیچ کمک مفیدی نکردند. نمونههایی از این مخازن مخرب شامل Dicrida123/java-sdk ، A2A-MC/ccresume ، 1-RAY-1/project-startup-cursor و 123abukhaled0/FinCoach هستند.
برای دور زدن محدودیت API گیتهاب (۵ هزار درخواست در ساعت)، پژوهشگر از سرویس gharchive استفاده کرد. این سرویس به او اجازه داد تمام رویدادهای گیتهاب را برای روزهای خاص دانلود کرده و رویدادهای ثبت تغییر (Commit Push) را فیلتر کند. در ابتدا اسکریپت او تنها ۳ هزار مخزن را شناسایی کرد که هر چند ساعت یکبار بهروز میشدند، اما با اصلاح فیلترها، ابعاد واقعی عملیات آشکار شد.
الگوی بدافزار
۱۰ هزار مخزن شناساییشده، ویژگیهای دقیقی دارند که پژوهشگر آنها را در یک الگوی کلی جمع کرد:
- رفتار ثبت تغییر: هر چند ساعت، تغییر قبلی حذف و تغییر جدیدی ثبت میشود.
- فایلهای هدف: در هر تغییر، تنها فایل README بهروزرسانی میشود.
- محتوا: فایل README حاوی لینکی به یک آرشیو zip است.
- نسبت نسبتی: تغییرات از مخزنی دیگر کپی شدهاند، اما خود مخزن جدید است و فورک (Fork) نشده است.
- تنوع: تمام مخازن نامها و مشارکتکنندگان متفاوتی دارند.
تمام این تغییرات با عنوان «Update README.md» ثبت شدهاند. در ابتدا اسکریپت پژوهشگر تنها ۱۴ مخزن را یافت چون فیلتر روی تغییرات هر ۱۰ ساعت تنظیم شده بود و شرط گذاشته بود که بیش از یک ماه بین دو تغییر آخر فاصله باشد. اما بررسیهای دستی نشان داد بسیاری از مخازن تغییراتی با مقدار صفر داشتند یا کمتر بهروز میشدند. با تغییر فیلتر به جستوجوی مخازنی که بین ۱ تا ۲۴ بار در شبانهروز بهروز میشوند، ۴۰ هزار کاندید شناسایی شدند. از این تعداد، ۱۰ هزار مورد — دقیقاً ۲۵٪ — با الگوی کامل توزیع تروجان مطابقت داشتند.
جزئیات فنی محموله
وقتی کاربر فایل zip را دانلود میکند، معمولاً چهار فایل خاص را میبیند:
- اسکریپتهای اجرا:
Application.cmdیاLauncher.cmd. - فایلهای اجرایی:
loader.exe،luajit.exeیا نامهای تصادفی دیگر. - فایلهای پیکربندی/داده: فایلهایی با نام تصادفی و پسوند
.csoیا.txt. - کتابخانهها: فایل
lua51.dll.
نکته جالب این است که طبق گزارش پژوهشگر، ارسال تنها «لینک» آرشیو به VirusTotal هیچ هشدار امنیتی ایجاد نمیکند (صفر تشخیص). اما ارسال خودِ فایل zip باعث فعال شدن هشدار تروجان میشود. این نشان میدهد بدافزار بهگونهای بستهبندی شده تا اسکنرهای ساده URL را دور بزند.
دور زدن امنیت گیتهاب
پژوهشگر فرض میکند چرخه مداوم حذف و ثبت مجدد تغییرات، تلاشی عمدی برای دور زدن الگوریتمهای امنیتی خودکار گیتهاب است. مهاجمان احتمالاً با حفظ تاریخچه تغییرات اما تغییر نقطه انتهایی شاخه (Branch Head)، از شکافی در نحوه اسکن محتوای مخرب توسط پلتفرم استفاده میکنند. استفاده از نام عمومی «Update README.md» نیز احتمالاً در این راستاست.
علاوه بر این، انتخاب مخازن کوچک و جدید بهجای پروژههای محبوب، یک حرکت استراتژیک است. پروژههای جدید در جستوجوی عبارات تخصصی (Niche) رتبه بالاتری میگیرند و راحتتر توسط قربانیان در گوگل یا بینگ پیدا میشوند. آنها همچنین این مخازن را به تگهای محبوب گیتهاب اضافه میکنند تا شانس ایندکس شدن افزایش یابد.
فریب و اعتماد
کپی کردن تمام مشارکتکنندگان و تاریخچه تغییرات، یک تاکتیک مهندسی اجتماعی برای جلب اعتماد است. وقتی بازدیدکننده مخزن را میبیند، لیستی از مشارکتکنندگان را میبیند و میتواند روی پروفایلهایی کلیک کند که شبیه حسابهای «یکروزه» نیستند. حفظ تاریخچه تغییرات این توهم را ایجاد میکند که پروژه از مدتها پیش وجود داشته است، نه اینکه همین امروز ساخته شده باشد. این کار حس کاذبی از تداوم و قابلیت اطمینان ایجاد میکند.
ابعاد کمپین
از میان ۱۶ میلیون ثبت تغییر در یک بازه پنجروزه، پژوهشگر یافت که ۴۰ هزار مخزن با الگوی کلی «بهروزرسانی مکرر» مطابقت داشتند. از این تعداد، ۱۰ هزار مورد (دقیقاً ۲۵٪) با الگوی کامل توزیع تروجان مطابقت داشتند. بسیاری از این مخازن برای ماهها و حتی بیش از یک سال بدون شناسایی توسط سیستمهای خودکار گیتهاب فعال بودهاند.
این کشف، آسیبپذیری بزرگی را در نحوه تأیید مخازن در بزرگترین پلتفرم میزبانی کد جهان نشان میدهد. علیرغم گزارشها به پشتیبانی گیتهاب، پژوهشگر متوجه شد که زمان پاسخدهی کند است و پاسخهای تولید شده توسط هوش مصنوعی هیچ کمکی نکردند.
برای توسعهدهندگان، این یعنی تاریخچه تغییرات و لیست مشارکتکنندگان دیگر شاخصهای قابلاعتمادی برای امنیت نیستند. اگر مخزنی لینک zip مشکوکی در README دارد، فارغ از اینکه چقدر «جاافتاده» به نظر میرسد، باید یک تهدید تلقی شود.
این اتفاق مدلهای اعتماد را تغییر میدهد. دیگر نمیتوان فرض کرد وجود تاریخچه تغییرات، اصالت پروژه را ثابت میکند. توانایی جعل برنامهریزیشدهی پیشینه پروژه در این مقیاس، نشان میدهد که تأییدات خودکار باید از بررسیهای ساده متاداده فراتر روند.
پرسشهای باز
چندین راز درباره این کمپین باقی مانده است:
- چرا مهاجمان فقط مخازن جدید را کلون میکنند و نه پروژههای محبوب را؟
- عملکرد دقیق فایل
.exeدرون آرشیو چیست؟ - مقیاس واقعی کل این کمپین فراتر از ۱۰ هزار مورد شناسایی شده چقدر است؟
- چرا سیستم خودکار گیتهاب در شناسایی این الگوهای خاص شکست میخورد؟
شما اکنون میتوانید لیست کامل مخازن آسیبدیده و اسکریپت شناسایی را در صفحه گیتهاب پژوهشگر، یعنی Git Malware Finder، بررسی کنید تا از محیط خود محافظت نمایید.
گام بعدی شما
- هرگز فایلهای zip را مستقیماً از README مخازنی که با آنها آشنا نیستید دانلود نکنید؛ حتی اگر تاریخچه تغییرات آنها طولانی باشد.
- برای بررسی مخازن مشکوک، بهجای تکیه بر لینک، فایل را در محیط ایزوله (Sandbox) اجرا کرده و در VirusTotal اسکن کنید.
- از ابزار Git Malware Finder در صفحه گیتهاب پژوهشگر برای شناسایی مخازن آلوده در محیط خود استفاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو