باگ RCE بحرانی Gogs هنوز وصله نشده
خلاصهٔ کاملتر
محقق امنیتی Rapid7 به اسم Jonah Burgess یه آسیبپذیریِ بحرانی اجرای کد از راه دور (RCE) توی Gogs پیدا کرده — همون سرویس گیتِ خودمیزبان و متنباز که خیلیها برای میزبانی کدشون استفاده میکنن. شدت باگ ۹.۴ از ۱۰ ارزیابی شده و شناسهش GHSA-qf6p-p7ww-cwr9 هست.
چیزی که این باگ رو خطرناک میکنه اینه که نیاز به دسترسی خاصی نداره: روی یه نصب پیشفرض، هر کاربری که فقط حساب داشته باشه و احراز هویت شده باشه میتونه ازش سوءاستفاده کنه. نتیجهش هم تصاحب کامل سروره — یعنی مهاجم میتونه کلیدها و اطلاعات احراز هویت دومرحلهای رو بدزده، یا حتی کد داخل مخزنها رو دستکاری کنه و یه حملهی زنجیرهی تأمین (supply-chain) راه بندازه. این باگ همهی پلتفرمها رو هم درگیر میکنه: ویندوز، لینوکس و macOS.
ریشهی فنیِ مشکل یه argument injection توی مسیر مرج کردن pull request هست، دقیقتر توی تابع Merge() در فایل internal/database/pull.go. وقتی مالک یا ادمین مخزن گزینهی «Rebase before merging» رو فعال کنه و یه کاربر PR باز کنه، اسم شاخهی مبدأ مستقیم به دستور git rebase پاس داده میشه — بدون جداکنندهی -- که باید پایان آپشنهای دستور رو مشخص کنه، و ورودی هم درست پاکسازی نمیشه.
نتیجهش اینه که مهاجم میتونه بهجای یه اسم شاخهی عادی، یه شاخه با اسمی بسازه که با --exec= شروع میشه و بعدش یه دستور دلخواه میاد؛ اونوقت Git اینو یه فلگِ --exec میبینه نه اسم شاخه، و دستور رو اجرا میکنه. روی ویندوز روش تحویل کمی فرق داره و Burgess یه ماژول اکسپلویت نوشته که هر دو حالت رو پوشش بده.
بخش نگرانکنندهی ماجرا اینه که باگ از ۱۷ مارس (اواخر اسفند) گزارش شده، تیم Gogs اولش رسیدش رو تأیید کرده ولی از ۲۸ مارس به بعد دیگه جواب نداده و هنوز وصلهی رسمی نداره. حالا که ماژول عمومی Metasploitش هم منتشر شده، انتظار میره گزارشهای سوءاستفادهی واقعی بهزودی شروع بشه — هرچند فعلاً شواهدی از سوءاستفادهی در-حال-انجام دیده نشده.
تا وقتی وصله بیاد، توصیهی محقق برای کاهش ریسک اینه: مهمتر از همه ثبتنام کاربر رو ببندید (DISABLE_REGISTRATION = true در app.ini) تا افراد ناشناس نتونن حساب بسازن. محدود کردن ساخت مخزن (MAX_CREATION_LIMIT = 0) هم سادهترین مسیر حمله رو میبنده، و در آخر تنظیمات rebase merge رو بازبینی کنید و «Rebase before merging» رو از Settings > Advanced غیرفعال کنید. فقط حواستون باشه این جلوی کاربری که خودش مالک یا ادمین مخزنه رو نمیگیره، چون میتونه دوباره فعالش کنه.
نکات کلیدی:
- باگ بحرانی RCE با امتیاز ۹.۴ (GHSA-qf6p-p7ww-cwr9) توی Gogs، روی نصب پیشفرض با هر کاربر احراز هویتشده قابل سوءاستفادهست
- ریشهش argument injection توی تابع Merge() و پاس دادن اسم شاخه به git rebase بدون جداکنندهی -- هست
- شرط فعالسازی، روشن بودن گزینهی «Rebase before merging» روی مخزنه
- باگ از اسفند گزارش شده ولی هنوز وصله نداره و ماژول عمومی Metasploitش بیرون اومده
- کاهش ریسک: DISABLE_REGISTRATION = true، MAX_CREATION_LIMIT = 0 و خاموش کردن rebase merge




