İstanbul
Ruby on Rails’ta Kritik Bir Güvenlik Açığı: Saldırganlar Sunucu Dosyalarına Yazabilir

Ruby on Rails’ta Kritik Bir Güvenlik Açığı: Saldırganlar Sunucu Dosyalarına Yazabilir

Ruby on Rails'ta ImageMagick yüklemeleri aracılığıyla sunucu dosyalarına rastgele yazmaya olanak tanıyan kritik bir güvenlik açığı keşfedildi. Rails, bu açığı 8

Kısa Özet

Ruby on Rails'ta ImageMagick yüklemeleri aracılığıyla sunucu dosyalarına rastgele yazmaya olanak tanıyan kritik bir güvenlik açığı keşfedildi. Rails, bu açığı 8

Ruby on Rails’ta Kritik Bir Güvenlik Açığı: Saldırganlar Sunucu Dosyalarına Yazabilir

black and gray code padlock anchored on chain-link fence selective focus photo

Ruby on Rails’ta tespit edilen kritik bir güvenlik açığı, kimliği doğrulanmamış bir saldırganın, uygulamanın yüklemeleri ImageMagick kullanarak işlemesi durumunda, özel olarak hazırlanmış bir dosya yükleyerek sunucudaki rastgele dosyalara yazmasına olanak tanıyabilir. Rails projesi, bu güvenlik açığını bir danışma belgesinde duyurdu ve 8.1.4.1 ile 8.0.5.2 sürümlerinde düzeltti.

Güvenlik açığı, Rails’ın dosya yüklemelerini yöneten Active Storage bölümünde bulunuyor. Bazı uygulamalar, yüklenen dosyaları Active Storage’ın Disk hizmetini kullanarak sunucunun diskinde saklar. Bu tür uygulamalarda, bir saldırgan uygulamanın okuyabildiği herhangi bir dosyayı da okuyabilir.

Rails’a göre, bu dosyalar genellikle uygulamanın secret_key_base’ini ve diğer sistemler için kimlik bilgilerini içerir. Bunları okumak, uzaktan kod yürütmeye veya bu sistemlere yanal harekete yol açabilir.

Rails, bu güvenlik açığını CVSS ölçeğinde 10 üzerinden 9.8 olarak derecelendiriyor. GHSA-f3w6-w445-fwh9 olarak izleniyor ve henüz bir CVE tanımlayıcısı bulunmuyor.

ImageMagick, dosyanın içeriğine göre bir format işleyici (coder) seçer. Bazı coder’lar, görüntünün kendisi yerine görüntü içinde adı geçen diğer dosyalar üzerinde işlem yapar. Active Storage, bir yüklemenin hangi coder’ları kullanabileceğine dair herhangi bir sınırlama getirmediği için, sunucunun kendi ImageMagick politikası tek sınırlamaydı.

Active Storage’daki ImageMagick analizörü, bir dosya eklendiğinde çalışır. Yüklemeyi eklemek, güvenlik açığına ulaşmak için yeterlidir. Uygulamanın bir varyant (görüntünün dönüştürülmüş bir kopyası) veya önizleme oluşturmasına veya analiz çağırmasına gerek yoktur.

Güvenlik açığını düzelten commit’e göre, yüklenen bir SVG dosyası bu analizör aracılığıyla ImageMagick’in MSL coder’ına ulaştı. MSL, kendi betiği tarafından adlandırılan dosyaları okuyan ve yazan bir betik coder’ıdır.

Rails, kendisine bir saldırı zinciri bildirildiğini, ancak bunun “var olan tek zincir olmadığını varsaymadığını” belirtti. Danışma belgesinde güvenlik açığının istismar edilip edilmediği belirtilmiyor.

Güvenlik açığı, GMO Flatt Security’den araştırmacı RyotaK tarafından HackerOne aracılığıyla bildirildi.

Hangi Rails Uygulamaları Etkilendi?

Bir uygulama yalnızca aşağıdaki üç koşulun hepsi doğruysa etkilenir:

  • Active Storage görüntü işleme için ImageMagick kullanıyor. Bu, load_defaults 6.1 veya önceki sürümlerdeki uygulamalar için varsayılan olan config.active_storage.variant_processor = :mini_magick ayarıdır.
  • ImageMagick güvenlik politikası, ilgili coder’ları zaten engellemiyor. Rails, Debian ve Ubuntu’nun gönderdiği politikaların engellemediğini belirtiyor.
  • Güvenilmeyen kullanıcılardan dosya yüklemelerini kabul ediyor.

İlk koşulu kontrol etmek için config.active_storage.variant_processor‘a bakın. Ayarlanmamışsa, varsayılan 7.0’dan önce :mini_magick, 7.0’dan itibaren ise :vips‘tir. Aynı ayar, yalnızca varyantları değil, yüklemeleri hangi kütüphanenin analiz edeceğini de belirler.

8.0.5.2’den önceki her Active Storage sürümü ve 8.1.4.1’den önceki 8.1 sürümleri etkilenmektedir. 8.0’dan eski sürüm serileri artık desteklenmemektedir ve Rails bunlar için düzeltilmiş sürümler yayınlamayacaktır.

Temmuz ayında Rails, ImageMagick yerine libvips kullanan uygulamaları etkileyen farklı bir kritik Active Storage güvenlik açığı olan CVE-2026-66066’yı düzeltti. ImageMagick kullanan uygulamalar bu güvenlik açığının saldırı yoluna maruz kalmamıştı, ancak bu yeni güvenlik açığına maruz kalabilirler.

Aynı sürümler, Rails’ın CVSS puanı 8.8 ile yüksek olarak derecelendirdiği ikinci bir Active Storage güvenlik açığını, GHSA-v924-7rp8-4mxh’yi de düzeltiyor. Active Storage, yüklemeleri ImageMagick ve FFmpeg’e, yüklenen dosyanın uzantısını koruyan geçici dosya adları altında iletiyordu.

Bu araçlar, bir dosyanın içeriği formatını göstermediğinde uzantıdan bir kod çözücü seçebilir. Böylece, bir yüklemenin dosya adını seçen ve içerik türünü beyan eden bir saldırgan, onu işleyen kod çözücüyü seçebilirdi.

Ne Yapmalı?

Rails, mümkün olan en kısa sürede yükseltme yapılmasını şiddetle tavsiye ediyor. İki sürüm toplamda 21 güvenlik sorununu düzeltiyor.

Düzeltilmiş sürümler bir ImageMagick güvenlik politikası içerir. MiniMagick, Active Storage’ın ImageMagick’i çağırmak için kullandığı Ruby gem’idir. Varsayılan kurulumunda, çalıştırdığı her ImageMagick komutu, yalnızca Active Storage’dan gelen komutlar değil, politikayı uygular.

Politika, MSL coder’ını; görüntü dışındaki dosyaları okuyan veya silen coder’ları; uzak veya yerel referansları getiren veya bunları ekranda görüntüleyen coder’ları; Ghostscript tarafından desteklenen her coder’ı, gs delegesi ile birlikte; ve @filename dolaylılığını engeller.

  • Rails 8.1.4.1 veya 8.0.5.2’ye yükseltin. :mini_magick kullanan uygulamaların ayrıca mini_magick 5.1 veya sonraki bir sürüme ihtiyacı vardır, aksi takdirde önyüklemede bir hata verirler. Rails 8.0, bakım politikası uyarınca yalnızca 7 Kasım 2026’ya kadar güvenlik düzeltmeleri alacaktır.
  • Uygulamanın yeni politikayı yüklediğini, Active Storage kılavuzunda açıklandığı gibi, bin/rails runner 'puts MiniMagick.identify { |i| i.list "policy" }' komutunu çalıştırarak onaylayın.
  • Gönderilen politikanın uygulamaya ulaşıp ulaşmadığını kontrol edin. MiniMagick.cli_env’i önyüklemeden sonra değiştiren, ortamı MiniMagick.cli_prefix ile temizleyen veya kendi MiniMagick::Shell’ini kuran bir uygulamaya ulaşmaz. Böyle bir uygulama, kuralları ImageMagick’in sistem politikasına koymalıdır.
  • GraphicsMagick kullanan uygulamalar, GraphicsMagick ImageMagick politikalarını okumadığı için gönderilen politikadan koruma almazlar.
  • Sunucunun kendi ImageMagick politikasını kontrol edin. Gönderilen politika, onu değiştirmek yerine ona ekleme yapar. Orada bir coder’a izin veren bir kural, örneğin pattern="*" gibi bir joker karakter dahil, gönderilen politikanın o coder’ı engellemesini geçersiz kılar.
  • Uygulama PDF veya PostScript dosyalarını ImageMagick aracılığıyla işliyorsa, gs delegesini ve kullandığı coder’ları sunucunun policy.xml dosyasında yeniden etkinleştirin.
  • Henüz yükseltme yapamıyorsanız, gönderilen politikanın (activestorage/lib/active_storage/image_magick/policy.xml) kurallarını ImageMagick’in sistem politikasına (örneğin /etc/ImageMagick-7/policy.xml) kopyalayın. Minimum olarak, MSL coder’ını, Ghostscript coder’larını ve gs delegesini engelleyin. Rails ayrıca düzeltmeyi 8.1 ve 8.0 için yamalar olarak yayınladı.
  • 8.0’dan eski sürüm serilerindeki uygulamalar bu geçici çözümü kullanabilir veya 8.0 veya sonraki bir sürüme yükseltebilir.
  • Rails’ın ikinci güvenlik açığı için geçici çözümleri yalnızca FFmpeg’in nasıl kullanıldığını değiştirir. Hiçbiri ImageMagick’i kapsamaz.
  • Uygulama ekleri Disk hizmetiyle depoluyorsa, secret_key_base‘i ve uygulamanın okuyabileceği diğer tüm sırları değiştirin. Buna ana anahtar, config/credentials.yml.enc‘in tuttuğu her şey, depolama ve veritabanı kimlik bilgileri ve üçüncü taraf belirteçleri dahildir. Açığa çıkmış bir sırrı yedek olarak tutmayın.

Danışma belgesinde, bir uygulamanın daha önce hedeflenip hedeflenmediği nasıl kontrol edileceği açıklanmıyor.

KONUSiber Tehditler ↗
PaylaşX ↗
OKURLARIN GÖRÜŞLERİ

Yorumlar 0

Henüz yorum yapılmamış. İlk yorumu siz yazın.

Yorum bırakın

E-posta adresiniz yayımlanmaz. Gerekli alanlar * ile işaretlenmiştir.

0 / 1000