مگالودون: پشتدرب گذاشتن هزاران ریپو GitHub از طریق CI
خلاصهٔ کاملتر
روز ۱۸ مه ۲۰۲۶ یک کمپین حملهی هماهنگشده با اسم رمز مگالودون کشف شد. این کمپین طی بازهای ششساعته (۱۱:۳۶ تا ۱۷:۴۸ UTC) دقیقاً ۵۷۱۸ کامیت مخرب به ۵۵۶۱ ریپو مختلف GitHub تزریق کرد. مهاجم از اکانتهای یکبارمصرف با نامهای تصادفی هشتکاراکتری مثل rkb8el9r استفاده کرد و هویت کامیت را با نامهایی شبیه build-bot، auto-ci، ci-bot و pipeline-bot جعل کرد تا شبیه فعالیت روتین CI به نظر برسه.
دو نوع پیلود در این کمپین استفاده شد. نوع اول (SysDiag) یک فایل workflow جدید به مسیر .github/workflows/ci.yml اضافه میکنه که روی هر push و pull request اجرا میشه. نوع دوم (Optimize-Build) که هدفمندتره، workflow های موجود رو جایگزین میکنه و trigger نوع workflow_dispatch داره؛ یعنی مهاجم میتونه هر وقت خواست از طریق GitHub API اون رو فعال کنه، بدون اینکه فوری توجهی جلب بشه.
محتوای پیلود یک اسکریپت bash کدگذاریشده با base64 هست که دادههای حساس زیادی رو استخراج میکنه: متغیرهای محیطی CI، کلیدهای دسترسی AWS (از طریق aws CLI)، توکنهای GCP (از طریق gcloud auth print-access-token)، اطلاعات metadata سرویسهای ابری AWS/GCP/Azure، کلیدهای SSH خصوصی، فایلهای .npmrc، .netrc، config کوبرنتیز، توکنهای Vault، و تاریخچهی shell. علاوه بر این، کدهای سورس رو هم با بیش از ۳۰ الگوی regex برای یافتن کلیدهای API، رشتههای اتصال پایگاه داده، JWT و کلیدهای PEM اسکن میکنه. همهی این دادهها به سرور C2 آدرس 216.126.225.129:8443 ارسال میشن.
یکی از نمونههای مهم آلودهشده پکیج npm به نام @tiledesk/tiledesk-server بود. تیم SafeDep متوجه شد نسخههای ۲.۱۸.۶ تا ۲.۱۸.۱۲ این پکیج حاوی بکدر هستند، در حالی که نسخهی ۲.۱۸.۵ سالمه. جالب اینجاست که مهاجم به اکانت npm دست نزد؛ بلکه ریپو GitHub رو با یک PAT یا deploy key لو رفته آلوده کرد، و نگهدارندهی اصلی ناآگاهانه از سورس مسمومشده پابلیش کرد. کامیت مخرب با هش acac5a9 در تاریخ ۱۸ مه از طرف build-bot با پیام "ci: add build optimization step" ثبت شده.
پیامهای کامیت همه عادی و کلیشهای هستند: چیزهایی مثل chore: optimize pipeline runtime یا fix: correct build workflow که دقیقاً شبیه نگهداری روتین pipeline به نظر میرسن و به راحتی از نظر دور میمونن. permission های درخواستی workflow هم شامل id-token: write و actions: read هستند که امکان دزدیدن توکنهای OIDC و جعل هویت cloud identity رو میده.
نکات کلیدی:
- بیش از ۵۵۰۰ ریپو GitHub طی شش ساعت در ۱۸ مه ۲۰۲۶ آلوده شدند
- پیلود در قالب base64 درون فایلهای GitHub Actions مخفی شده بود
- اعتبارنامههای AWS، GCP، Azure، کلیدهای SSH، توکنهای OIDC و سورسکد دزدیده میشدند
- پکیج npm معروف @tiledesk/tiledesk-server نسخههای ۲.۱۸.۶ تا ۲.۱۸.۱۲ آلوده هستند
- سرور C2 مهاجم: 216.126.225.129:8443
- کامپرومایز از طریق PAT یا deploy key لو رفته، نه اکانت npm
- هویتهای جعلی کامیت: build-bot، auto-ci، ci-bot، pipeline-bot




