یک نقص امنیتی بسیار بحرانی در فریمورک Ruby on Rails کشف شده است که به مهاجمان بدون احراز هویت (unauthenticated attacker) اجازه میدهد از طریق آپلود فایلهای دستکاریشده (crafted files)، فایلهای دلخواه را در سرور اپلیکیشن بنویسند یا بخوانند. این آسیبپذیری زمانی رخ میدهد که اپلیکیشن برای پردازش آپلودها از کتابخانه ImageMagick استفاده کند.
جزئیات فنی و نحوه حمله
این نقص در بخش Active Storage (مسئول مدیریت آپلود فایل در Rails) قرار دارد. در اپلیکیشنهایی که از سرویس Disk برای ذخیرهسازی استفاده میکنند، مهاجم میتواند علاوه بر نوشتن فایل، هر فایلی را که اپلیکیشن اجازه دسترسی دارد، بخواند. این فایلها معمولاً شامل اطلاعات بسیار حساسی مانند secret_key_base و اعتبارنامههای (credentials) سایر سیستمها هستند که خواندن آنها میتواند منجر به اجرای کد از راه دور (RCE) یا حرکت عرضی (lateral movement) در شبکه شود.
طبق گزارشها، این آسیبپذیری با امتیاز 9.8 از 10 در مقیاس CVSS رتبهبندی شده و با شناسه GHSA-f3w6-w445-fwh9 دنبال میشود.
مکانیسم حمله به این صورت است که ImageMagick بر اساس محتوای فایل، یک “Coder” یا هندلر مناسب را انتخاب میکند. برخی از این هندلرها (مانند MSL) میتوانند بر اساس اسکریپتهای داخلی خود، بر روی فایلهای دیگری که در داخل تصویر نام برده شدهاند، عملیات انجام دهند. از آنجایی که Active Storage محدودیتی برای انتخاب Coder اعمال نمیکرد، مهاجم میتواند با آپلود یک فایل SVG، از طریق هندلر MSL، فایلهای سیستم را هدف قرار دهد.
نسخههای آسیبپذیر و راهکار اصلاحی
اپلیکیشنها تنها در صورتی در معرض خطر هستند که از ImageMagick استفاده کنند و نسخههای زیر را داشته باشند:
- تمام نسخههای قبل از 8.0.5.2
- نسخههای 8.1 قبل از 8.1.4.1
راهکار فوری: تیم Rails اکیداً توصیه میکند که در اسرع وقت به نسخههای 8.1.4.1 یا 8.0.5.2 ارتقا دهید. این نسخههای جدید شامل یک سیاست امنیتی (security policy) برای ImageMagick هستند که از فعالیت هندلرهای خطرناک مانند MSL و Ghostscript جلوگیری میکند.
همچنین، یک آسیبپذیری دیگر با شناسه GHSA-v924-7rp8-4mxh (با امتیاز CVSS 8.8) نیز در همین نسخهها رفع شده است که مربوط به سوءاستفاده از پسوند فایلها برای انتخاب Decoderهای نامناسب بود.