AI Hacking - Hackerlar Siber Saldırılarda Yapay Zekayı Nasıl Kullanıyor?

Şimdi Oku
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

Rack Ruby Çerçevesinin Güvenlik Analizi: CVE-2025-25184, CVE-2025-27111 ve CVE-2025-27610

tarafından OPSWAT
Bu Gönderiyi Paylaş

OPSWAT'ın Kırmızı Ekibi tarafından yürütülen kapsamlı bir güvenlik analizi aracılığıyla, güvenlik araştırmacıları Thai Do ve Minh Pham, özellikle CVE-2025-25184, CVE-2025-27111 ve CVE-2025-27610 olmak üzere Rack Ruby çerçevesini etkileyen birden fazla güvenlik açığı tespit etti.  

Bu makale, özellikle CVE-2025-27610'a odaklanarak bu güvenlik açıklarına ayrıntılı bir genel bakış sunmaktadır. Temel nedenleri incelemekte, potansiyel etkileri değerlendirmekte ve Rack çerçevesine dayanan uygulamaları güvence altına almak için etkili hafifletme stratejilerini ana hatlarıyla belirtmektedir. 

Rafa Genel Bakış

Rack, web sunucularını Ruby tabanlı web uygulamalarına bağlayan modüler bir arayüzdür. HTTP isteklerini ve yanıtlarını tek bir yöntem çağrısına sararak, geliştirme sürecini basitleştirerek ve çeşitli çerçeveler ve sunucular arasında uyumluluğu teşvik ederek bu bileşenler arasındaki etkileşimi standartlaştırır.  

Rack, Ruby on Rails ve Sinatra gibi birçok Ruby web çerçevesi ve kütüphanesi tarafından kullanılır. Bir Ruby Gem'i olarak mevcuttur. Dünya çapında bir milyardan fazla indirme ile Rack'in yaygın küresel benimsenmesi, Ruby geliştirme ekosistemindeki ayrılmaz rolünü vurgular. Rack::Static ve Rack::Sendfile gibi ara katman bileşenleri, statik içerik dağıtımını ele alarak ve dosya iletimini optimize ederek verimliliği artırır. Bu kapsamlı entegrasyon nedeniyle, Rack içinde keşfedilen güvenlik açıkları, potansiyel olarak dünya çapında çok sayıda uygulama ve sistemi etkileyen önemli güvenlik etkileri sunar. 

Rack'te Güvenlik Açığı Keşfi

OPSWAT araştırmacıları Thai Do ve Minh Pham, Rack ara katman çerçevesi üzerinde yürütülen son güvenlik araştırması sırasında Ruby tabanlı web uygulamaları için önemli güvenlik riskleri oluşturan birkaç güvenlik açığı tespit etti:

  • CVE-2025-25184: Thai Do, saldırganların CRLF (Satır Başı Besleme) karakterleri aracılığıyla günlük enjeksiyonu gerçekleştirmesine olanak tanıyan ve potansiyel olarak günlük girdilerini manipüle eden bir güvenlik açığı keşfetti. 
  • CVE-2025-27111: Minh Pham, saldırganların kötü amaçlı başlık değerleri aracılığıyla günlük içeriğini enjekte etmesine ve manipüle etmesine olanak tanıyan bir güvenlik açığını ortaya çıkardı. 
  • CVE-2025-27610: Minh Pham ayrıca, saldırganların belirlenen statik dosya dizininin dışında bulunan dosyalara yetkisiz erişim sağlamasına olanak tanıyarak önemli bir güvenlik tehdidi oluşturabilecek bir Yol Geçişi güvenlik açığı tespit etti.

Bu güvenlik açıkları arasında CVE-2025-27610, kimliği doğrulanmamış saldırganların yapılandırma dosyaları, kimlik bilgileri ve gizli veriler dahil olmak üzere hassas bilgileri almasına ve böylece veri ihlallerine yol açmasına olanak sağlayabileceğinden özellikle ciddidir. Bu güvenlik açığına 7.5 CVSS puanı atanmıştır ve yüksek önem derecesine sahip bir risk olarak kategorize edilmiştir.

Rack Ruby çerçevesindeki güvenlik açıklarının keşif sürecini gösteren diyagram

Rack::Static ve Yerel Dosya Ekleme Güvenlik Açığı

Rack::Static'i Anlama 

Rack::Static, Rack uygulamalarında öncelikle JavaScript, CSS ve görüntüler gibi statik dosyaları verimli bir şekilde sunmak için kullanılan temel bir ara yazılımdır. Geliştiriciler, Rack::Static'ten yararlanarak, ek web sunucusu yapılandırmasına ihtiyaç duymadan statik içerik sunumunu Ruby uygulamalarına sorunsuz bir şekilde entegre edebilirler.  

Rack::Static'i yapılandırırken iki temel seçenek öne çıkar - :urls ve :root. Bu seçeneklerin doğru anlaşılması ve kullanılması, statik dosya sunma sürecini önemli ölçüde basitleştirir ve kolaylaştırır. 

1. urls Seçeneği

urls seçeneği, Rack uygulamasının hangi URL yollarını statik varlıklar olarak işlemesi gerektiğini belirtir. Her biri statik dosya işlemeyi tetikleyen bir yol önekini temsil eden dizelerden oluşan bir dizi olarak sağlanır. 

Örneğin: 

Bir Ruby uygulamasında Rack::Static :urls seçeneği yapılandırmasını gösteren kod ekran görüntüsü

Bu yapılandırmada, /images, /css veya /js 'ye yapılan istekler Rack::Static tarafından durdurulur ve işlenir. Bu yollarla eşleşen herhangi bir dosya doğrudan dosya sisteminden sunulacaktır. 

2. Kök Seçeneği

root seçeneği, statik dosyaların sunulacağı temel dizini tanımlar. Bu dizin, Rack uygulamanızın geçerli çalışma dizinine görelidir. 

Önceki örnek göz önüne alındığında:

Statik dosyaları sunmak için Rack::Static :root seçeneği kurulumunu gösteren kod ekran görüntüsü

assets/logo.png adresine bir istek yapıldığında, Rack::Static public/assets/logo . png adresinde bulunan dosyayı sunmaya çalışır. 

Pratik Örnek

Rack::Static'in :urls ve :root seçenekleri ile etkili bir şekilde uygulanması, Ruby web uygulamaları içinde statik içerik sunmak için düzenli ve performanslı bir yöntem sunar: 

Statik içerik için Rack::Static yapılandırmasının pratik bir örneğini gösteren kod ekran görüntüsü

Bu senaryoda, /assets/* ve /favicon.ico'ya yönelik istekler otomatik olarak Rack::Static tarafından ele alınacaktır. İlgili tüm dosyalar sırasıyla public/assets dizininde ve public/favicon.ico dizininde bulunmalıdır. 

CVE-2025-27610 Teknik Detay

Minh Pham , Rack::Static'in kapsamlı bir güvenlik analizi sırasında :root seçeneğinin yanlış işlenmesiyle ilgili önemli bir güvenlik açığı keşfetti. Özellikle, :root parametresi açıkça tanımlanmadığında, Rack bu değeri varsayılan olarak Dir.pwd değerini atayarak geçerli çalışma dizinine atar ve dolaylı olarak Rack uygulaması için web kök dizini olarak belirler. 

Önemli olarak, Rack::Static gelen URL yollarını yeterli doğrulama veya sanitizasyon olmadan belirtilen :root dizini ile doğrudan birleştirir. Sonuç olarak, :root seçeneği tanımlanmamışsa veya :urls seçeneğine göre yanlış yapılandırılmışsa, kimliği doğrulanmamış bir saldırgan, amaçlanan web dizini dışındaki hassas dosyalara erişmek için yol çaprazlama teknikleri aracılığıyla bu güvenlik açığından yararlanabilir. 

Aşağıdaki bölüm, Rack::Static'in istek işleme sürecinin ayrıntılı bir analizini sunarak bu güvenlik açığından nasıl yararlanılabileceğini açıkça göstermektedir.

Rack::Static'te Yol Geçişi ve Yerel Dosya Ekleme Güvenlik Açığı

Minh Pham, Rack::Static ara yazılımının istekleri nasıl işlediğini daha iyi anlamak için Rack'in kaynak kodunda kapsamlı bir analiz gerçekleştirdi. Rack::Static sınıfının başlatılması sırasında, :root seçeneğinin açıkça tanımlanmaması durumunda, Rack::Static'in varsayılan olarak geçerli çalışma dizininden (Dir.pwd) dosya sunmaya başladığını gözlemledi. Sonuç olarak, bu seçeneğin atlanması, ara yazılımın dolaylı olarak uygulamanın yürütüldüğü dizini kullanmasına neden olur.

Rack::Static başlatma ve varsayılan :root dizin atamasını gösteren kod ekran görüntüsü
HTTP isteklerini işleyen Rack::Static çağrı yöntemini gösteren kod ekran görüntüsü

İlklendirmenin ardından, Rack::Static gelen bir HTTP isteği aldığında, çağrı yönteminin çağrıldığı belirlenmiştir.

Rack::Static'in dosya hizmetini Rack::Files'a devrettiğini gösteren kod ekran görüntüsü

Daha sonra, Rack::Static dosya sunma işlemini, yapılandırılmış :root dizini ve kullanıcı tarafından sağlanan PATH_INFO'dan türetilen yapılandırılmış dosya yoluna dayalı olarak dosyayı bulmaya ve sunmaya çalışan Rack::Files'a devreder.

Rack::Static'te :root ve PATH_INFO kullanılarak dosya yolu oluşturulmasını gösteren kod ekran görüntüsü

İlk olarak, can_serve(path) ve overwrite_file_path(path) yöntemlerini çağırarak, ara yazılım, gelen isteğin yapılandırılmış URL öneklerinden (örn. /static, /public) herhangi biriyle eşleşip eşleşmediğini belirlemek için env["PATH_INFO"] dosyasını inceler. 

Rack::Static'te dosya yollarını kontrol etme ve üzerine yazma yöntemlerini gösteren kod ekran görüntüsü

Koşul karşılanırsa, Rack::Static yapılandırılmış kök dizini (:root) kullanıcı tarafından sağlanan PATH_INFO ile birleştirerek dosya yolunu oluşturur. Bu yapı, girdi yolunun yeterli normalizasyonu veya sanitizasyonu olmadan gerçekleşir. Özellikle, ara yazılım gelen istekten gelen PATH_INFO'yu doğrudan :root seçeneği tarafından belirtilen dizinle birleştirir ve sağlanan yolun yetersiz doğrulanması nedeniyle bir güvenlik açığı ortaya çıkarır

Rack::Static'te güvenlik açığı bulunan dosya yolu birleştirmesini gösteren kod ekran görüntüsü

Minh Pham, bu iş akışında uygun sanitizasyon veya doğrulama olmaması nedeniyle, kullanıcı tarafından sağlanan PATH_INFO dizin çaprazlama dizileri içeriyorsa ve :root seçeneği açıkça tanımlanmamışsa, oluşturulan dosya yolunun amaçlanan kök dizinin dışındaki bir konuma çözümlenebileceğini ve hassas dosyaların açığa çıkabileceğini keşfetti.

CVE-2025-27610 Kavram Kanıtı

Rack::Static'teki bu güvenlik açığını göstermek için, Rack sürüm 3.1.10 kullanan Ruby tabanlı bir web uygulaması geliştirdik. Uygulamanın :root seçeneğini açıkça tanımlamadığı senaryolarda, kimliği doğrulanmamış bir saldırgan, kimlik bilgileri, yapılandırma dosyaları veya veritabanı dosyaları gibi hassas verilere erişmek için bu güvenlik açığından yararlanabilir ve potansiyel olarak önemli bir veri ihlaline yol açabilir. 

Bu güvenlik açığı ile ilişkili önemli etkinin ayrıntılı bir gösterimi için lütfen aşağıdaki videoya bakın:

Hafifletme ve Rehberlik

Yukarıda bahsettiğimiz güvenlik açıklarını azaltmak için lütfen sisteminizin en son Rack sürümüne güncellendiğinden emin olun.

SBOM motorunu kullanan MetaDefender Core bu güvenlik açığını tespit edebilir.

OPSWAT MetaDefender CoreGelişmiş SBOMSoftware Bill of Materials) özellikleri ile donatılmış olan MetaDefender Core, kurumların güvenlik risklerini ele almada proaktif bir yaklaşım benimsemelerini sağlar. MetaDefender Core , yazılım uygulamalarını ve bağımlılıklarını tarayarak, listelenen bileşenlerdeki CVE-2025-27610, CVE-2025-27111 ve CVE-2025-25184 gibi bilinen güvenlik açıklarını tanımlar. Bu da geliştirme ve güvenlik ekiplerinin yama çalışmalarına öncelik vermesini sağlayarak olası güvenlik risklerini kötü niyetli kişiler tarafından istismar edilmeden önce azaltıyor. 

Aşağıda MetaDefender Core tarafından SBOM ile tespit edilen CVE-2025-27610, CVE-2025-27111 ve CVE-2025-25184'ün ekran görüntüsü yer almaktadır:

MetaDefender Core 'un Rack Ruby framework güvenlik açıklarını tespit ettiğini gösteren pano ekran görüntüsü

OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.