امنیت GitHub: تهدیدها، حملات واقعی و راههای مقابله
خلاصهٔ کاملتر
مدلسازی تهدید برای GitHub یعنی اول بفهمیم چه ورودیهایی وجود داره، چه هویتهایی بهشون دسترسی دارن، و در صورت نفوذ، چه ریسکی به وجود میاد. ورودیهای کلیدی شامل احراز هویت، کد منبع (کامیتها و PRها)، دستورالعملهای CI/CD، تنظیمات GitHub، و سیکرتها میشن. هویتهای دسترسی هم از کاربران احراز هویتشده با SSO، SSH، PAT (توکن دسترسی شخصی)، و GitHub Apps تشکیل میشن.
برای هر ورودی باید پرسید: «اگه مهاجم کنترل این ورودی رو بگیره، چی به خطر میافته؟» مثلاً اگه مهاجم به دستورالعملهای CI/CD دسترسی پیدا کنه، میتونه کد مخرب به فایلهایی مثل .github/workflows/* اضافه کنه، تستها رو دستکاری کنه، یا وابستگیهای آلوده به package.json اضافه کنه. از اونجایی که audit log گیتهاب تغییرات فایلهای کد رو ثبت نمیکنه، باید از ابزارهای SAST مثل Datadog Static Code Analysis یا CodeQL استفاده کرد.
کرمهای npm به نام Shai-Hulud یکی از جدیترین حملات زنجیره تأمین اخیر بودن. این بدافزارها از اسکریپتهای pre-install و post-install فایل package.json برای اجرا استفاده میکردن، ابزار TruffleHog رو دانلود میکردن تا سیکرتها رو پیدا کنن، و بعد اطلاعات رو به یه endpoint از پیش تعریفشده میفرستادن. وقتی به credential انتشار npm یا GitHub دسترسی پیدا میکردن، نسخه آلودهای از پکیج منتشر میکردن و چرخه تکرار میشد — بیش از ۱۰۰۰ پکیج npm و ۱۴۰۰۰ مخزن GitHub آلوده شدن.
در سال ۲۰۲۲، مهاجمان با دسترسی غیرمجاز به توکنهای OAuth از سرویسهای Heroku و Travis CI، به API گیتهاب وصل شدن و سیکرتهایی مثل کلیدهای AWS رو از مخازن خصوصی استخراج کردن. حملات فیشینگ مشابهی هم وجود داشتن که کاربران رو فریب میدادن به یه اپلیکیشن مخرب به نام gitsecurityapp دسترسی کامل بدن. ابزارهایی مثل Datadog Cloud SIEM میتونن استفاده یه توکن OAuth از ASN یا user agent متفاوت رو شناسایی کنن و تیم امنیت رو هشدار بدن.
در اکتبر ۲۰۲۱، پکیج محبوب ua-parser.js هک شد و کد مخربی توش جاسازی شد که متغیرهای محیطی (environment variables) رو هدف میگرفت و یه cryptominer هم اجرا میکرد. وقتی سازمانها به نسخه آلوده آپدیت میکردن، در حین اجرای GitHub Actions workflow روی runner، اسکریپت مخرب به سیکرتهای ذخیرهشده در متغیرهای محیطی دسترسی پیدا میکرد. برای مقابله، استفاده از SCA (تحلیل ترکیب نرمافزاری) مثل Datadog Code Security یا GitHub Dependabot ضروریه تا تغییرات در اسکریپتهای pre/postinstall شناسایی بشن.
نکات کلیدی:
- مدلسازی تهدید در GitHub باید سه محور ورودیها، هویتها و ریسکها رو پوشش بده
- audit log گیتهاب تغییرات کد رو ثبت نمیکنه؛ حتماً از ابزار SAST کمک بگیرید
- کرمهای Shai-Hulud نشون دادن که اسکریپتهای install در package.json میتونن بردار حمله باشن
- توکنهای OAuth و PAT اگه لیک بشن، میتونن دسترسی کامل به مخازن خصوصی رو بدن
- ابزارهایی مثل GuardDog و SCFW میتونن پکیجهای مشکوک رو قبل از نصب شناسایی یا مسدود کنن
- قوانین OOTB در Cloud SIEM میتونن رفتارهایی مثل clone انبوه مخازن یا استفاده از توکن با ASN جدید رو فلگ کنن




