پلتفرم GitHub به سازمانها اجازه میدهد تا از GitHub Apps برای اتوماسیون و گسترش قابلیتهای خود استفاده کنند. این اپلیکیشنها دسترسیهای خاصی به مخازن (Repositories) و مجوزهای مدیریتی دارند. با این حال، یک ریسک امنیتی جدی در این سیستم وجود دارد: کلیدهای خصوصی (Private Keys) مورد استفاده برای احراز هویت این اپلیکیشنها، تا زمانی که به صورت دستی ابطال نشوند، برای سالها معتبر باقی میمانند.
تحلیل نشت کلیدها و دسترسیهای غیرمجاز
بر اساس یافتههای GitGuardian، از میان ۴۸۰۲ کلید خصوصی افشا شده از سال ۲۰۱۹، تعداد ۴۷۴ مورد همچنان معتبر بودند. تحلیل این کلیدها نشان میدهد که ۷۲٪ از اپلیکیشنهای متأثر قادر به خواندن محتوای مخازن خصوصی (Private Repositories) بودند و ۲۰۷ مورد امکان نوشتن در آنها را داشتند. این موضوع میتواند منجر به تسخیر کامل یک سازمان در GitHub شود.
تاثیرات زنجیرهای و حملات Supply-Chain
یکی از موارد بحرانی، نشت کلید خصوصی اپلیکیشن «Access Tokens for GitHub Actions» در ژانویه ۲۰۲۴ بود که احتمالاً ۳۰۰ سازمان را تحت تأثیر قرار داده است. کارشناسان امنیتی هشدار میدهند که یک عامل تهدید (Threat Actor) میتواند با داشتن کلید خصوصی و App ID، اقدامات زیر را انجام دهد:
- تزریق کد مخرب: وارد کردن کدهای بدخواهانه به مخزن که در هنگام Build یا Deployment، کاربران پاییندستی یا محیطهای Production را آلوده میکند.
- دستکاری CI/CD: تغییر پیکربندی Runnerها برای اجرای کدهای دلخواه (Arbitrary Code Execution) در زیرساخت شبکه داخلی سازمان.
- تصاحب کامل سازمان: در مواردی که اپلیکیشن دارای مجوزهای Administrative باشد، مهاجم میتواند خود را به عنوان Owner اضافه کرده و مدیران قانونی را حذف کند.
چرا این مشکل پابرجا است؟
بسیاری از سازمانها به دلیل ماهیت توکنهای کوتاهمدت، تصور میکنند ریسک نشت کلیدها محدود است. در این معماری، کلید خصوصی برای امضای یک JSON Web Token (JWT) کوتاهمدت استفاده میشود. اگرچه JWT تنها چند دقیقه اعتبار دارد و Installation Tokenها نیز یک ساعت معتبر هستند، اما هر کسی که کلید خصوصی را در اختیار داشته باشد، میتواند به طور نامحدود JWTهای جدید تولید کرده و دسترسیهای تازه دریافت کند.
توصیههای امنیتی برای مدیران SOC و CISOها
با توجه به اینکه ابطال دستی کلیدها معمولاً تنها در زمان وقوع حادثه یا Audit انجام میشود، توصیه میشود:
- چرخش منظم کلیدها (Key Rotation): کلیدهای خصوصی را به صورت دورهای تغییر دهید.
- مانیتورینگ مخازن: از ابزارهای Secret Scanning برای شناسایی کلیدهای افشا شده در کدها استفاده کنید.
- بازبینی مجوزها: دسترسیهای اعطا شده به GitHub Apps را به صورت دورهای بررسی کرده و اصل «حداقل دسترسی» (Least Privilege) را اعمال کنید.