خلاصهٔ خبر
رانرهای خودمیزبان (self-hosted) در GitHub Actions دوباره به یکی از نگرانیهای اصلی امنیتی تیمهای دواپس تبدیل شدهاند. مستندات GitHub و پژوهشهای مستقل امنیتی نشان میدهد اگر این رانرها به مخازن عمومی یا گردشکارهای بدون کنترل وصل شوند، یک pull request مخرب میتواند روی سرور خود سازمان کد دلخواه اجرا کند. خطر به همان یک job محدود نمیماند، چون رانر خودمیزبان بهطور پیشفرض پس از اجرا پاک نمیشود و ممکن است به شبکهٔ داخلی، کلیدها و سرویسهای دیگر دسترسی داشته باشد.
جزئیات
رانر خودمیزبان کد گردشکار را مستقیم روی ماشین شما اجرا میکند. رانرهای میزبانیشدهٔ GitHub برای هر job یک ماشین مجازی تازه میسازند، اما رانر خودمیزبان بهطور پیشفرض پایدار است. فایلهای باقیمانده، کش، اعتبارنامهها و پردازشهای پسزمینهٔ یک job ممکن است در job بعدی در دسترس باشند. GitHub صراحتاً توصیه میکند این رانرها برای مخازن عمومی استفاده نشوند، چون forkها میتوانند از طریق pull request گردشکار را فعال کنند. الگوهایی مثل استفاده از رویداد pull_request_target همراه با checkout کردن کد نامطمئن، یا فعال بودن دسترسی به Docker socket روی رانر، ریسک را بیشتر میکنند.
رویکرد پیشنهادی بر کاهش ماندگاری و دسترسی استوار است: رانرهای ephemeral یا just-in-time که بعد از یک job حذف میشوند، اجرای job در VM یا کانتینر یکبارمصرف، تعریف runner group و محدود کردن آن به مخازن مشخص، و تنظیم حداقل مجوزها برای GITHUB_TOKEN از طریق بخش permissions. جداسازی شبکهٔ رانر از دیتابیسها و سرورهای production، نگهداری نکردن اسرار روی دیسک رانر و الزام به تأیید دستی برای اجرای گردشکار مشارکتکنندگان خارجی هم از توصیههای رایج است.
اهمیت برای تیمهای ایرانی
بسیاری از تیمهای ایرانی بهدلیل محدودیتهای دسترسی، هزینه یا نیاز به اتصال به سرورهای داخلی، رانر خودمیزبان را روی همان شبکهای راهاندازی میکنند که سرویسهای production در آن قرار دارند. در این حالت یک گردشکار آلوده میتواند مستقیم به کلید SSH، دیتابیس یا رجیستری داخلی برسد. پیشنهاد عملی برای تیمهای کوچک این است که ابتدا فهرست رانرها و مخازن متصل را بررسی کنند، رانرهای مخازن عمومی را حذف یا جدا کنند، و برای مخازن خصوصی هم رانر را در شبکهای محدود و با دسترسی حداقلی اجرا کنند. این کارها هزینهٔ زیادی ندارند و جلوی بخش مهمی از سناریوهای نفوذ را میگیرند.