یک نقص امنیتی بحرانی در بخش Active Storage فریمورک Ruby on Rails کشف شده است که به کاربران احراز هویت نشده (unauthenticated) اجازه میدهد با آپلود یک تصویر دستکاریشده، در سرور فایل بنویسند یا آنها را بخوانند. تیم Rails این باگ را با امتیاز CVSS 9.8 در سطح بحرانی (Critical) طبقهبندی کرده است.
مکانیسم حمله
این آسیبپذیری ناشی از نحوه عملکرد ImageMagick است. این ابزار، نوع فایل (coder) را بر اساس محتوای داخلی آن تشخیص میدهد، نه بر اساس پسوند نام فایل. برخی از این کدها (coders) میتوانند روی فایلهای دیگری که در داخل تصویر ارجاع داده شدهاند، عملیات انجام دهند. از آنجایی که Active Storage محدودیتی برای این کدها اعمال نمیکرد و تحلیلگر تصویر (image analyzer) بلافاصله پس از پیوست شدن فایل اجرا میشود، مهاجم تنها با آپلود یک فایل دستکاریشده میتواند حمله را آغاز کند و نیازی به فراخوانیهای اضافی نیست.
پیامدهای امنیتی
فایلهای در معرض خطر معمولاً شامل secret_key_base و اعتبارنامههای (credentials) سیستمهای خارجی هستند. دسترسی به این اطلاعات میتواند منجر به اجرای کد از راه دور (RCE) یا نفوذ به سایر سرویسهای متصل شود. گزارشها حاکی از وجود حداقل یک زنجیره حمله (attack chain) است، هرچند این تنها مورد گزارش شده نیست.
شرایط آسیبپذیری
یک اپلیکیشن تنها زمانی آسیبپذیر است که هر سه شرط زیر برقرار باشد:
- استفاده از ImageMagick از طریق تنظیمات
config.active_storage.variant_processor = :mini_magick(که در نسخههای قدیمیتر پیشفرض است). - اجرای ImageMagick تحت سیاستی که کدهای مربوطه را مسدود نمیکند (مانند نسخههای پیشفرض Debian و Ubuntu).
- پذیرش آپلود از سوی کاربران غیرقابل اعتماد.
نسخههای آسیبپذیر شامل activestorage قبل از 8.0.5.2 و نسخههای 8.1 قبل از 8.1.4.1 هستند.
راهکارهای مقابله و رفع مشکل
۱. بهروزرسانی فوری: سرویس Active Storage را به نسخههای 8.0.5.2 یا 8.1.4.1 ارتقا دهید. همچنین باید mini_magick را به نسخه 5.1 یا بالاتر بهروزرسانی کنید.
۲. اعمال سیاستهای امنیتی: در صورتی که امکان بهروزرسانی فوری وجود ندارد، باید قوانین امنیتی جدید را به فایل policy.xml در ImageMagick اضافه کنید تا کدهای MSL، Ghostscript و سایر کدهای دارای قابلیت خواندن/حذف فایل مسدود شوند. این کار باید به صورت دستی در سیاستهای سیستم اعمال شود.
۳. بازنشانی کلیدها: اگر از سرویس Disk برای ذخیرهسازی استفاده میکنید، فرض کنید کلیدهای حساس لو رفتهاند. حتماً secret_key_base، کلیدهای اصلی (master keys)، اطلاعات موجود در config/credentials.yml.enc و تمامی توکنهای شخص ثالث را تغییر دهید. تیم Rails اکیداً توصیه میکند که از کلیدهای لو رفته به عنوان جایگزین (fallback) استفاده نشود.
بهروزرسانی (نوامبر 5, 2026 — Dark Reading)
بهروزرسانی: جزئیات فنی جدیدی از آسیبپذیری بحرانی با شناسه GHSA-f3w6-w445-fwh9 در فریمورک Ruby on Rails منتشر شده است. این نقص امنیتی در کامپوننت Active Storage و از طریق نحوه پردازش فایلها توسط ImageMagick رخ میدهد. مهاجم میتواند با آپلود یک فایل تصویری دستکاریشده که محتوای آن با پسوند فایل همخوانی ندارد، ImageMagick را فریب دهد تا از یک “Coder” متفاوت برای پردازش استفاده کند؛ این امر منجر به امکان خواندن یا نوشتن فایلهای دلخواه در سرور میشود.
نسخههای آسیبپذیر شامل موارد زیر هستند:
- نسخههای 8.0 قبل از 8.0.5.2
- نسخههای 8.1 قبل از 8.1.4.1
کارشناسان امنیت تأیید کردهاند که این آسیبپذیری در محیط آزمایشگاهی با موفقیت بازتولید شده و فرآیند اکسپلویت آن بسیار ساده است. انتظار میرود کد اکسپلویت عمومی (PoC) در روزهای آینده منتشر شود. علاوه بر بهروزرسانی فوری، سازمانها باید تمامی کلیدهای حساس از جمله secret_key_base، رمزهای پایگاه داده و توکنهای شخص ثالث را پس از اعمال وصله، بازنشانی (Reset) کنند.