Hızlı cevap: Dosya yükleme açıkları, bir uygulamanın kullanıcıdan gelen dosyayı yeterince denetlemeden kabul etmesi ve saklaması sonucu ortaya çıkar. Saldırgan zararlı bir dosya yükleyip onu sunucuda çalıştırabilir, başka kullanıcılara zararlı içerik dağıtabilir ya da depolamayı kötüye kullanabilir. En tehlikeli senaryo, saldırganın çalıştırılabilir bir dosya yükleyip sunucunun bunu çalıştırmasıdır; bu doğrudan uzaktan kod çalıştırmaya yol açar. Kök çözüm tek bir ilkeye dayanır: yüklenen dosyaya asla güvenme. Dosya türünü içeriğinden doğrula, yüklenenleri web kök dizininin dışında ve çalıştırılamaz biçimde sakla, ve dosya adını sunucu belirlesin.

Dosya yükleme, neredeyse her modern uygulamada vardır: profil fotoğrafı, belge, CV, fatura, destek eki. Bu yaygınlık, onu saldırganlar için cazip bir hedef yapar. Görünüşte masum bir yükleme alanı, yanlış yapılandırıldığında tüm sunucunun ele geçirilmesine giden kapı olabilir. Bu yazı, dosya yükleme açıklarının türlerini ve nasıl doğru savunulacağını anlatır.

Dosya yükleme açıklarının türleri

Açık Nasıl Etki
Çalıştırılabilir dosya yükleme Zararlı betik yüklenir ve çalıştırılır Uzaktan kod çalıştırma
Tür atlatma Uzantı ya da başlık taklit edilir Denetim atlanır
Yol dolaşımı Dosya adı ile dizin dışına yazma Dosya üzerine yazma
Zararlı içerik dağıtımı Diğer kullanıcılara zararlı dosya XSS, kötü amaçlı yazılım
Depolama kötüye kullanımı Aşırı büyük ya da çok dosya Hizmet reddi, maliyet

En kritik olanı çalıştırılabilir dosya yüklemedir. Saldırgan, sunucunun çalıştırabileceği bir dosya yükler ve ona bir istekle erişerek komut çalıştırır. Bu, komut enjeksiyonu kadar yıkıcıdır.

Neden uzantı kontrolü yetmez

Birçok geliştirici, dosya adının uzantısına bakıp güvende sandığını yapar. Ama bu zayıftır:

  • Uzantı taklidi. Saldırgan zararlı içeriği izin verilen bir uzantıyla ya da çift uzantıyla gizler.
  • İçerik türü sahteciliği. Tarayıcının bildirdiği tür kolayca değiştirilir; ona güvenilmez.
  • Ayrıştırıcı farkları. Sunucu bir dosyayı beklenenden farklı yorumlayabilir.

Bu yüzden güvenli çözüm, dosyanın gerçek içeriğini doğrulamak ve yüklenenleri hiçbir koşulda çalıştırılamayacak biçimde saklamaktır.

Doğru savunma

1. Yüklenenleri çalıştırılamaz biçimde saklayın

En güçlü ve kesin savunma budur. Yüklenen dosyalar, web kök dizininin dışında, doğrudan istekle çalıştırılamayacak bir konumda tutulmalıdır. Sunucu, bu klasördeki hiçbir dosyayı betik olarak çalıştırmamalıdır.

2. Dosya türünü içeriğinden doğrulayın

Uzantıya ya da tarayıcının bildirdiği türe değil, dosyanın gerçek içeriğine bakılmalıdır. Yalnızca beklenen türler kabul edilmeli, izin listesi yaklaşımı kullanılmalıdır.

3. Dosya adını sunucu belirlesin

Kullanıcının verdiği dosya adı doğrudan kullanılmamalı; sunucu rastgele, güvenli bir ad üretmelidir. Bu, path traversal riskini de kapatır.

4. Boyut ve oran sınırları

Dosya boyutu, sayısı ve yükleme hızı sınırlanmalı; aşırı yükleme bir hizmet reddi ve maliyet saldırısına dönüşmemelidir.

5. Zararlı içerik taraması

Yüklenen dosyalar zararlı yazılıma karşı taranmalı, kullanıcılara sunulmadan önce güvenli biçimde işlenmelidir. Bu, zararlı yazılım analizi yaklaşımıyla desteklenir.

KAOS ile dosya yükleme testi

Dosya yükleme açıklarını, DSET'in yapay zekâ destekli otonom güvenlik tarama motoru KAOS ile ölçekli biçimde tarıyoruz. KAOS çok-ajanlı mimarisiyle dosya kabul eden uçları keşfeder, tür denetiminin ve saklama güvenliğinin ne kadar sağlam olduğunu kontrollü ve zararsız yüklemelerle dener ve yüklenen bir dosyanın çalıştırılabildiğini ya da denetimin atlatılabildiğini gösterebildiğinde bunu doğrular; yalnızca kanıtlanmış bulguyu raporlar. Böylece masum görünen bir yükleme alanının gerçekten açık olup olmadığını yanlış pozitif gürültüsü olmadan görürsünüz. KAOS insan uzmanın yanında çalışır ve her bulguyu çalışan bir kanıtla belgeler.

Sık sorulan sorular

Sadece resim kabul ediyorum, risk var mı? Evet. Uzantı ya da bildirilen tür kolayca taklit edilir. İçerik doğrulaması yapılmaz ve dosyalar çalıştırılabilir bir konumda tutulursa risk devam eder.

En tehlikeli dosya yükleme açığı hangisi? Çalıştırılabilir dosya yükleyip sunucuda çalıştırabilmek en yıkıcı olandır; genelde tam sunucu ele geçirmeye yol açar.

Antivirüs taraması tek başına yeterli mi? Hayır. Tarama yardımcıdır ama asıl savunma, dosyaları çalıştırılamaz biçimde saklamak ve türü içerikten doğrulamaktır.

Dosya adını neden sunucu belirlemeli? Kullanıcının verdiği ad, yol dolaşımı ve üzerine yazma saldırılarına açar. Sunucunun ürettiği güvenli ad bu riski kapatır.

Kaynaklar

Uygulamanızdaki dosya yükleme açıklarını KAOS ve uzman ekibimizle çalışan kanıtla tespit ettirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi ve güvenli kod denetimi hizmeti veriyoruz.