Spring Framework’te CVE-2024-38819 olarak tanımlanan kritik yol geçişi güvenlik açığına yönelik bir Kavram Kanıtı (PoC) istismarı yayımlandı ve işlevsel web çerçeveleri aracılığıyla statik kaynaklara hizmet veren uygulamaları etkileyen ciddi bir güvenlik sorununa ışık tuttu.
Bu güvenlik açığı, saldırganların dikkatle hazırlanmış HTTP istekleri aracılığıyla sunucudaki yetkisiz dosyalara erişmesine olanak tanır.
CVE-2024-38819 güvenlik açığı Spring Framework’ü kullanan uygulamaları etkiliyor WebMvc.fn veya WebFlux.fn Statik kaynaklara hizmet etmek için.
Özellikle sorun, dosya yollarının hatalı işlenmesinden kaynaklanmaktadır; bu da saldırganların, aşağıdakiler gibi hassas sistem dosyaları da dahil olmak üzere, yetkisiz dosyalara erişmek için dizin geçişi gerçekleştirmesine olanak tanır: /etc/passwd
.
API güvenlik açığı ve Sızma Testi için En İyi Uygulamalar Konulu Ücretsiz Web Semineri: Ücretsiz Kayıt
Kavram Kanıtı (PoC) Ayrıntıları
Yayımlanan PoC, bir saldırganın güvenlik açığından yararlanarak güvenlik açığı bulunan bir sunucudaki hassas dosya içeriğini nasıl çıkarabileceğini gösteriyor. İstismarın çoğaltılması için sağlanan adımlar aşağıda verilmiştir.
PoC’yi Yürütme Adımları
Savunmasız Ortamı Kurun
Spring Framework 6.1.13’e (etkilenen sürümlerden biri) bağlı olan Spring Boot 3.3.4’ü kullanın.
Aşağıdaki komutu kullanarak güvenlik açığı bulunan kurulumu içeren bir Docker görüntüsü oluşturun:bash cd vuln docker build -t cve-2024-38819-poc .
Savunmasız Konteyneri Çalıştırın
Kabı başlatın ve bağlantı noktasını gösterin 8080 ana makineye:bash docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Exploit’i yürütün
Aşağıdakileri çalıştırın curl
Güvenlik açığından yararlanan kötü amaçlı bir HTTP isteği gönderme komutu:
bash curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Güvenlik açığı mevcutsa, içeriğin /etc/passwd
Başarılı bir saldırıyı belirten dosya görüntülenecektir.
Teknik Açıklama
Güvenlik açığı, güvenlik açığı bulunan uygulamada aşağıdaki kurulumdan kaynaklanmaktadır:
Statik Kaynak Yönlendirme
Statik kaynaklar kullanılarak sunulur RouterFunctions
Ve FileSystemResource
uygulamada.
Örnek kod:
java public RouterFunction
Sembolik Bağlantı Kullanımı
Statik bir dizine referans vermek için Dockerfile’da sembolik bir bağlantı oluşturulur:bash RUN ln -s /static /app/static/link
Dizin Geçişi için Yük
Bir saldırgan, aşağıdaki gibi yüzde kodlu yolları kullanarak sembolik bağlantıdan yararlanabilir ve dizinleri geçebilir:/static/link/%2e%2e/etc/passwd%2e%2e
URL kodlu temsilidir ..
(ana dizin), dizin geçişini etkinleştirir.
Azaltma ve Öneriler
Bu güvenlik açığını azaltmak için:
- Yamalı Sürümlere Yükseltme :Spring Framework kullanıcıları, güvenlik açığı düzeltildikten sonra etkilenmeyen sürümlere yükseltme yapmalıdır.
- Dosya Erişimini Kısıtla: Statik kaynaklar için sembolik bağlantılardan kaçının ve dosya yollarının sıkı şekilde doğrulanmasını uygulayın.
- Monitör ve Patch Sistemleri: Kötüye kullanım riskini azaltmak için savunmasız sistemleri düzenli olarak tarayın ve yama yapın.
Sorumluluk reddi beyanı
Bu PoC yayınlandı eğitim amaçlı ve güvenlik açığı konusunda farkındalık yaratmak. Bu PoC’yi herhangi bir ortamda test etmeden veya kullanmadan önce, uygun yetkiye sahip olduğunuzdan ve ortamın güvenliğinin sağlandığından emin olun. Bu Yetki Belgesinin yanlış kullanılması yasal ve etik sonuçlara yol açabilir.
Bu güvenlik açığı Spring Framework’te tanımlanan benzer sorunların devamı gibi görünüyor: CVE-2024-38816ancak farklı bir saldırı vektörü içerir. Kritik uygulamalar için Spring Framework’e güvenen kuruluşların, uygulamalarını derhal değerlendirmeleri ve güvence altına almaları istenmektedir.
ANY.RUN ile Gerçek Dünyadaki Kötü Amaçlı Bağlantıları, Kötü Amaçlı Yazılımları ve Kimlik Avı Saldırılarını Araştırın – Ücretsiz Deneyin