Araştırmacılar, Rails uygulamalarında Bootsnap önbelleğe alma kitaplığından yararlanan kritik bir güvenlik açığını ortaya çıkardı. Bu istismar, saldırganların rastgele bir dosya yazma güvenlik açığından yararlanarak uzaktan kod yürütme (RCE) gerçekleştirmesine olanak tanır.
Bootsnap’in 5.2 sürümünden bu yana Rails’de varsayılan bir bileşen olması nedeniyle bu sorun özellikle endişe vericidir.
Güvenlik Açığı Anlamak
Güvenlik açığı, standart bir rastgele dosya yazma hatasından kaynaklanmaktadır. Aşağıda savunmasız koda bir örnek verilmiştir:
Conviso Araştırma Ekibine göre bu senaryoda kullanıcılar hem dosya yolunu hem de içeriği kontrol edebiliyor. Bu, kötü niyetli aktörlerin sunucudaki rastgele konumlara dosya yazmasına olanak tanır ve bu da potansiyel olarak RCE’ye yol açar.
İstismarın potansiyeline rağmen, bazı kısıtlamalar onun yürütülmesini önemsiz kılıyor. Rails üretim ortamları genellikle /tmp, db ve log gibi sınırlı yazılabilir dizinlere sahip Docker kapsayıcılarını kullanır.
Investigate Real-World Malicious Links & Phishing Attacks With Threat Intelligence Lookup - Try for Free
Ancak bu sınırlamalar, tmp/cache/bootsnap gibi belirli yazılabilir dizinler hedeflenerek aşılabilir.
Bootsnap Önbelleğinden Yararlanma
Bootsnap, pahalı hesaplamaları önbelleğe alarak Rails uygulamalarını optimize eder. Önbellek dosyaları tmp/cache/bootsnap konumunda saklanır ve derlenmiş Ruby dosyalarını içerir. Bu dosyalar bir başlık (önbellek anahtarı) ve derlenmiş içerikten oluşan belirli bir yapıyı takip eder.
Saldırganlar, kötü amaçlı Ruby kodunu içeren bir önbellek dosyasının üzerine yazarak ve uygulamanın başlatılması sırasında bu dosyanın yürütülmesini tetikleyerek RCE’ye ulaşabilir. Kullanım sürecine genel bir bakış aşağıdaki gibidir:
- Hedef Dosyayı Tanımlayın: Uygulamanın başlatılması sırasında yürütülmesi muhtemel bir dosya seçin (örneğin, Ruby’nin standart kütüphanesinden set.rb).
- Kötü Amaçlı Önbellek Oluştur: Bootsnap’in karma mekanizmasını kullanarak bir önbellek anahtarı oluşturun. Kötü amaçlı Ruby kodunu önbellek dosyasına gömün.
- Kötü Amaçlı Önbellek Yaz: Hedef önbellek dosyasının üzerine yazmak için rastgele dosya yazma güvenlik açığını kullanın.
- Uygulamayı Yeniden Başlatın: Şuraya yazarak sunucunun yeniden başlatılmasını tetikleyin: tmp/restart.txtPuma’nın yeniden başlatma işlevinden yararlanılıyor.
- Kötü Amaçlı Kodu Yürütün: Yeniden başlatma sırasında uygulama, saldırganın yükünü çalıştırarak kötü amaçlı önbellek dosyasını yükler.
Azaltma Stratejileri
- Yazılabilir Dizinleri Kısıtla: Üretim ortamlarında yazılabilir yolları sınırlayın.
- Kullanıcı Girişini Doğrulayın: Dizin geçiş saldırılarını önlemek için dosya adlarını ve yolları temizleyin.
- Önbellek Dosyalarını İzleyin: Bootsnap önbellek dizinlerini yetkisiz değişikliklere karşı düzenli olarak inceleyin.
- Bağımlılıkları Güncelle: Bootsnap ve Rails’in güvenlik yamalarıyla en son sürümlerine güncellendiğinden emin olun.
Bu güvenlik açığı, web uygulamalarındaki rastgele dosya yazma kusurlarıyla ilişkili riskleri vurgulamaktadır. Saldırganlar, Bootsnap’in önbellekleme mekanizmasını kötüye kullanarak RCE’ye ulaşmak için ayrıcalıkları artırabilir.
Geliştiricilerin bu tür tehditleri etkili bir şekilde azaltmak için giriş doğrulama ve bağımlılık yönetimi dahil olmak üzere sıkı güvenlik uygulamalarını benimsemesi gerekir.
Jenkins & Jira’yı Kullanarak Uygulama Güvenliğini CI/CD İş Akışlarınıza Entegre Etme -> Ücretsiz Web Semineri