Ruby on Rails'dagi jiddiy zaiflik, agar ilova yuklamalarni ImageMagick yordamida qayta ishlasa, autentifikatsiyasiz hujumchiga ilova serverida ixtiyoriy fayllarni yozish imkonini berishi mumkin. Rails loyihasi zaiflikni e'lon qildi va uni 8.1.4.1 va 8.0.5.2 versiyalarida tuzatdi.

Zaiflik Active Storage'da — Rails'dagi fayl yuklamalarini boshqaradigan qismda. Ba'zi ilovalar yuklangan fayllarni Active Storage'ning Disk xizmati yordamida saqlaydi, bu ularni server diskida saqlaydi. Bunday ilovalarda hujumchi ilova o'qiy oladigan har qanday faylni ham o'qishi mumkin.

Rails'ga ko'ra, bu fayllar odatda ilovaning secretkeybase va boshqa tizimlar uchun ma'lumotlarini o'z ichiga oladi. Ularni o'qish, o'z navbatida, masofaviy kod bajarish yoki shu tizimlarga lateral harakatlanish imkonini berishi mumkin.

Rails zaiflikni CVSS shkalasi bo'yicha 10 dan 9,8 deb baholaydi. U GHSA-f3w6-w445-fwh9 sifatida kuzatiladi va hali CVE identifikatoriga ega emas.

ImageMagick fayl mazmuniga asoslanib format ishlovchisini (coder deb ataladi) tanlaydi. Ba'zi coder'lar rasmning o'ziga emas, balki rasm ichida nomlangan boshqa fayllarga ta'sir qiladi. Active Storage yuklamada qaysi coder'lar ishlatilishi mumkinligi bo'yicha hech qanday cheklov qo'ymaydi, shuning uchun serverning o'z ImageMagick siyosati yagona cheklov edi.

Active Storage'dagi ImageMagick analizatori fayl biriktirilganda ishlaydi. Yuklamani biriktirish zaiflikka yetish uchun yetarli. Ilova variant (rasmning o'zgartirilgan nusxasi) yoki oldindan ko'rinish yaratishi, yoki analyze chaqirishi shart emas.

Yuklangan SVG fayli shu analizator orqali ImageMagick'ning MSL coder'iga yetgan, zaiflikni tuzatgan commit'ga ko'ra. MSL — skript tomonidan nomlangan fayllarni o'qiydigan va yozadigan skript coder.

Rails'ga ko'ra, bitta hujum zanjiri xabar qilingan, lekin u "faqat shu bitta mavjud deb o'ylamaydi". E'lon zaiflikdan foydalanilganmi yoki yo'qmi, aytmaydi.

Zaiflik GMO Flatt Security'dagi tadqiqotchi RyotaK tomonidan HackerOne orqali xabar qilingan.

Qaysi Rails Ilovalari Ta'sirlangan

Ilova faqat quyidagi uchta shartning barchasi to'g'ri bo'lsa ta'sirlanadi:

  • U Active Storage rasm qayta ishlash uchun ImageMagick'dan foydalanadi. Bu config.active_storage.variant_processor = :mini_magick sozlamasi, load_defaults 6.1 yoki undan oldingi ilovalar uchun standart.
  • Uning ImageMagick xavfsizlik siyosati allaqachon tegishli coder'larni bloklamaydi. Rails'ga ko'ra, Debian va Ubuntu tarqatadigan siyosatlar bunday emas.
  • U ishonchsiz foydalanuvchilardan fayl yuklamalarini qabul qiladi.

Birinchi shartni tekshirish uchun config.active_storage.variant_processor ga qarang. Agar u o'rnatilmagan bo'lsa, standart load_defaults ga bog'liq: 7.0 dan oldin :mini_magick, 7.0 dan boshlab :vips. Xuddi shu sozlama qaysi kutubxona yuklamalarni tahlil qilishini ham belgilaydi, faqat variantlar yaratadigan kutubxona emas.

8.0.5.2 dan oldingi har bir Active Storage versiyasi ta'sirlangan, shuningdek 8.1.4.1 dan oldingi 8.1 versiyalari. 8.0 dan eski reliz seriyalari endi qo'llab-quvvatlanmaydi va Rails ular uchun tuzatilgan versiyalarni chiqarmaydi.

Iyulda Rails boshqa jiddiy Active Storage zaifligi — CVE-2026-66066 ni tuzatdi, bu ImageMagick o'rniga libvips ishlatadigan ilovalarga ta'sir qildi. ImageMagick ishlatadigan ilovalar o'sha zaiflikning hujum yo'liga duchor emas edi, lekin ular bu zaiflikka duchor bo'lishi mumkin.

Xuddi shu relizlar ikkinchi Active Storage zaifligini ham tuzatadi — GHSA-v924-7rp8-4mxh, Rails uni yuqori deb baholaydi va CVSS balli 8,8. Active Storage yuklamalarni ImageMagick va FFmpeg'ga vaqtinchalik fayl nomlari bilan yuborgan, bu yuklangan faylning kengaytmasini saqlab qolgan.

Bu vositalar fayl mazmuni formatini ko'rsatmasa, kengaytmadan dekoder tanlashi mumkin. Shunday qilib, yuklamaning fayl nomini tanlagan va mazmun turini e'lon qilgan hujumchi uni qayta ishlaydigan dekoderni tanlashi mumkin.

Nima Qilish Kerak

Rails iloji boricha tezroq yangilashni qat'iy tavsiya qiladi. Ikki reliz jami 21 ta xavfsizlik muammosini tuzatadi.

Tuzatilgan versiyalar ImageMagick xavfsizlik siyosatini o'z ichiga oladi. MiniMagick — Active Storage ImageMagick'ni chaqirish uchun ishlatadigan Ruby gem. Uning standart sozlamasida, u ishlatadigan har bir ImageMagick buyrug'i siyosatni qo'llaydi, faqat Active Storage'dan kelgan buyruqlar emas.

Siyosat MSL coder'ni; rasm emas, boshqa fayllarni o'qiydigan yoki o'chiradigan coder'larni; masofaviy yoki mahalliy havolalarni olish yoki ularni ekranda ko'rsatadigan coder'larni; Ghostscript bilan bog'liq har bir coder'ni, shuningdek gs delegatini; va @filename yo'naltirishni bloklaydi.

  • Rails 8.1.4.1 yoki 8.0.5.2 ga yangilang. :mini_magick ishlatadigan ilovalar mini_magick 5.1 yoki undan keyingi versiyasini ham talab qiladi, aks holda yuklashda xato beradi. Rails 8.0 xavfsizlik tuzatishlarini faqat 2026-yil 7-noyabrgacha oladi, texnik xizmat ko'rsatish siyosatiga ko'ra.
  • Ilova yangi siyosatni yuklayotganini tasdiqlang, Active Storage qo'llanmasida tasvirlanganidek, bin/rails runner 'puts MiniMagick.identify { |i| i.list "policy" }' buyrug'ini ishga tushirish orqali.
  • Yetkazilgan siyosat ilovaga umuman yetib borishini tekshiring. U MiniMagick.cli_env ni yuklashdan keyin almashtiradigan, MiniMagick.cli_prefix bilan muhitni tozalaydigan yoki o'z MiniMagick::Shell ni o'rnatadigan ilovaga yetib bormaydi. Bunday ilova qoidalarni ImageMagick tizim siyosatiga joylashtirishi kerak.
  • GraphicsMagick ishlatadigan ilovalar yetkazilgan siyosatdan himoya olmaydi, chunki GraphicsMagick ImageMagick siyosatlarini o'qimaydi.
  • Serverning o'z ImageMagick siyosatini tekshiring. Yetkazilgan siyosat uni almashtirmaydi, balki unga qo'shiladi. U yerda coder'ni ruxsat beradigan qoida, jumladan pattern="*" kabi wildcard, yetkazilgan siyosatning o'sha coder'ni bloklashini bekor qiladi.
  • Agar ilova PDF yoki PostScript fayllarini ImageMagick orqali ko'rsatsa, serverning policy.xml da gs delegatini va u ishlatadigan coder'larni qayta ruxsat bering.
  • Agar hozircha yangilay olmasangiz, yetkazilgan siyosat qoidalarini, activestorage/lib/active_storage/image_magick/policy.xml, ImageMagick tizim siyosatiga, masalan /etc/ImageMagick-7/policy.xml, nusxalang. Kamida MSL coder'ni, Ghostscript coder'larini va gs delegatini bloklang. Rails shuningdek 8.1 va 8.0 uchun tuzatishlarni patch sifatida e'lon qildi.
  • 8.0 dan eski reliz seriyalaridagi ilovalar bu yechimni ishlatishi yoki 8.0 yoki undan keyingi versiyaga yangilashi mumkin.
  • Rails'ning ikkinchi zaiflik uchun yechimlari faqat FFmpeg qanday ishlatilishini o'zgartiradi. Ularning hech biri ImageMagick'ni qamrab olmaydi.
  • Agar ilova biriktirmalarni Disk xizmati bilan saqlasa, secret_key_base va ilova jarayoni o'qiy oladigan har qanday boshqa maxfiy ma'lumotni o'zgartiring. Bu master kalit, config/credentials.yml.enc da saqlanadigan hamma narsa, saqlash va ma'lumotlar bazasi ma'lumotlari va uchinchi tomon tokenlarini o'z ichiga oladi. Fosh qilingan maxfiy ma'lumotni zaxira sifatida saqlamang.

E'lon ilova allaqachon nishonga olinganini tekshirish usulini tushuntirmaydi.