Bu konu, saldırı istatistiklerinde yer alan saldırı türlerini açıklar ve ilgili çözümleri sunar.
Genel Bakış
Aşağıdaki tabloda tüm saldırı türleri ve kategorileri listelenmiştir.
| Kategori | Saldırı türü |
|---|---|
| Enjeksiyon saldırıları | JNDI enjeksiyonu, SQL enjeksiyonu, Komut enjeksiyonu, XXE, XSS, EL enjeksiyonu, Motor enjeksiyonu, JSTL dosya dahil etme |
| Serileştirme kaldırma ve sınıf yükleme | Serileştirme kaldırma saldırısı, Kötü amaçlı sınıf yükleme, Kötü amaçlı beans bağlama |
| RASP atlama teknikleri | JNI enjeksiyonu, Kötü amaçlı yansıma çağrıları, İş parçacığı enjeksiyonu, Kötü amaçlı Attach API |
| Dosya sistemi saldırıları | Keyfi dosya okuma, Kötü amaçlı dosya okuma ve yazma, Kötü amaçlı dosya yükleme, Keyfi dosya silme, Dizin tarama |
| Ağ tabanlı saldırılar | SSRF, Kötü amaçlı DNS sorgusu, Güvensiz protokollerin kullanımı |
| Kalıcılık teknikleri | Bellek atı enjeksiyonu |
| Kimlik bilgisi saldırıları | Zayıf veritabanı parolası |
Enjeksiyon saldırıları
JNDI enjeksiyonu
Açıklama
Java Naming and Directory Interface (JNDI) enjeksiyonu, bir uygulamanın saldırganın kontrol edebileceği bir URL kullanarak JNDI araması yapması durumunda gerçekleşir. Saldırgan, sunucuyu kötü amaçlı bir uç noktaya sorgu yapmaya yönlendirir; bu da sunucunun kötü amaçlı sınıfları yüklemesine ve saldırganın keyfi kod yürütmesine olanak tanır.
Çözüm
Güvenlik açığı üçüncü taraf bir bileşenden kaynaklanıyorsa bileşeni en son yamalı sürüme yükseltin.
Güvenlik açığı özel olarak yazılmış JNDI sorgu kodundan kaynaklanıyorsa sorgu URL'lerini kısıtlayın ve güvensiz protokoller üzerinden aramaları yasaklayın.
SQL enjeksiyonu
Açıklama
SQL enjeksiyonu, saldırganın web isteği sorgu dizilerine veya form girişlerine kötü amaçlı SQL deyimleri eklemesiyle meydana gelir. Sunucu enjekte edilen SQL deyimlerini yürütür ve bu durum saldırganın veritabanındaki verilere erişmesini sağlar.
Çözüm
SQL enjeksiyonu, SQL deyimlerinde dize birleştirmeden kaynaklanır. Giriş parametrelerini önceden derlemek için parametreli sorgular (hazırlanmış deyimler) kullanın. Parametreli sorgular uygulanabilir değilse birleştirilen parametreleri kısıtlamak için beyaz liste veya kara liste doğrulaması uygulayın.
Komut enjeksiyonu
Açıklama
Komut enjeksiyonu, saldırganın sunucuda keyfi sistem komutları yürütmesine olanak tanıyan bir güvenlik açığıdır. Çoğu durumda komut enjeksiyonu, web kabuklarından veya kullanıcı girdisini sistem komutu işlevlerine aktaran güvensiz sunucu tarafı kodundan kaynaklanır.
Çözüm
Komutların yürütüldüğü konumu belirleyin:
Komut yürütme bir web kabuğundan kaynaklanıyorsa web kabuğunu hemen silin.
Komut yürütme meşru sunucu işlevlerinin bir parçasıysa yürütülebilecek komutları sınırlamak için beyaz liste kısıtlamaları uygulayın.
XXE
Açıklama
XML External Entity (XXE) enjeksiyonu, bir XML ayrıştırıcısının harici varlıklara başvuran bir XML belgesini işlemesi durumunda gerçekleşir. Saldırgan, keyfi dosya okuma, komut enjeksiyonu veya iç ağ saldırıları gerçekleştirmek için kötü amaçlı XML içeriği oluşturabilir.
Çözüm
Uygulamanızın XML belgelerini ayrıştırırken harici varlıkları çözmesi gerekip gerekmediğini kontrol edin. Harici varlıklar gerekli değilse XML ayrıştırıcı yapılandırmasında bunları devre dışı bırakın.
XSS
Açıklama
Cross-site scripting (XSS), saldırganın bir web sitesine kötü amaçlı komut dosyaları enjekte etmesiyle meydana gelir. Enjekte edilen komut dosyaları, etkilenen sayfaları ziyaret eden kullanıcıların tarayıcılarında yürütülür.
Çözüm
HTML enjeksiyon saldırılarına benzer şekilde XSS saldırıları da saldırganların web sayfalarına HTML kodu enjekte etmesine olanak tanır. Uygulamanızı XSS saldırılarına karşı korumak için sıkı giriş doğrulama ve çıkış kodlaması uygulayın:
Giriş verilerini filtreleyin. Aşağıdaki karakterleri ve kalıpları kontrol edin:
',",<,>,on*,scriptveiframe. Form alanları, çerez değerleri ve HTTP istek üstbilgileri dahil olmak üzere tüm kullanıcı girişi kaynaklarını doğrulayın.Veri özelliklerini doğrulayın. Tüm giriş verilerinin türünü, biçimini, uzunluğunu, aralığını ve içeriğini kontrol edin.
Derinlemesine savunma uygulayın. Hem istemci tarafında hem de sunucu tarafında giriş doğrulama ve filtreleme gerçekleştirin.
Çıkış verilerini kodlayın. Web sayfalarında görüntülemeden önce giriş verilerini HTML varlıkları veya kaçışlı JavaScript gibi güvenli temsillere dönüştürün. Veritabanındaki bir değer web sitesinde birden fazla kez görüntülenebilir. Giriş değerleri depolama sırasında kodlansa bile tüm çıkış değerlerini görüntülemeden önce doğrulayın ve kodlayın.
İfade dili (EL) enjeksiyonu
Açıklama
İfade dilleri veri sorguları ve dinamik işleme gibi çalışma zamanı özellikleri sağlar. Birçok ifade dili ayrıca Java yöntem çağrıları gibi gelişmiş işlemleri de destekler. İfade içeriği kısıtlanmadığında saldırgan ifadeyi değiştirerek keyfi kod yürütebilir.
Çözüm
İfadelerin içeriğini sıkı bir şekilde kısıtlayın ve Java işlev çağrılarını devre dışı bırakın.
Güvenlik açığı üçüncü taraf bir bileşenden kaynaklanıyorsa bileşeni en son yamalı sürüme yükseltin.
Motor enjeksiyonu
Açıklama
Java, çeşitli üçüncü taraf JavaScript motorlarını (Rhino ve Nashorn gibi) ve şablon motorlarını (Apache Velocity ve FreeMarker gibi) destekler. Bu motorlar genellikle Java yöntem çağrıları dahil olmak üzere gelişmiş özellikler sağlar. Motor girişi kısıtlanmadığında saldırgan, motorun yürüttüğü kötü amaçlı içerik enjekte edebilir ve bu durum keyfi kod yürütmeyle sonuçlanır.
Çözüm
Betik ve şablon motorlarına aktarılan içeriği sıkı bir şekilde kısıtlayın. Motor bağlamlarında Java işlev çağrılarını devre dışı bırakın.
Güvenlik açığı üçüncü taraf bir bileşenden kaynaklanıyorsa bileşeni en son yamalı sürüme yükseltin.
JSTL dosya dahil etme
Açıklama
JavaServer Pages Standard Tag Library (JSTL), JSP uygulamalarının ortak temel özelliklerini kapsayan JSP etiketlerinden oluşan bir koleksiyondur. Kullanıcı tarafından kontrol edilebilen bir parametre giriş doğrulaması olmadan doğrudan bir JSTL ifadesine birleştirilirse saldırgan keyfi dosya okumaya veya sunucu tarafı istek sahteciliğine (SSRF) yol açan kötü amaçlı bir yük oluşturabilir.
Çözüm
Kullanıcı tarafından kontrol edilebilen parametreleri doğrudan JSTL ifadelerine birleştirmeyin. Birleştirme gerekliyse parametre değerlerine sıkı beyaz liste doğrulaması uygulayın.
Serileştirme kaldırma ve sınıf yükleme
Serileştirme kaldırma saldırısı
Açıklama
Java serileştirme kaldırma işlemi bir bayt dizisini bir Java nesnesine geri yükler. Serileştirilmesi kaldırılan nesne istismar edilebilecek kod içeriyorsa saldırgan nesnenin üye değişkenlerini manipüle ederek serileştirme kaldırma süreci sırasında kötü amaçlı işlemler yürütebilir.
Çözüm
Güvenlik açığı bulunan bileşenleri en son yamalı sürümlere yükseltin.
Yamalı bir sürüm yoksa etkilenen serileştirme kaldırma işlevini geçici olarak devre dışı bırakın.
Kötü amaçlı sınıf yükleme
Açıklama
Sıfırıncı gün exploitleri ve web kabukları kötü amaçlı Java sınıflarının yüklenmesine dayanır. Kötü amaçlı bir sınıf yüklendiğinde saldırgan kod yürütme izinleri elde etmek ve daha fazla kötü amaçlı işlem gerçekleştirmek için onu başlatabilir.
Çözüm
Kötü amaçlı sınıf bir web kabuğu aracılığıyla yüklendiyse web kabuğunu hemen silin.
Kötü amaçlı sınıf bir çerçeve güvenlik açığı nedeniyle yüklendiyse çerçeveyi en son yamalı sürüme yükseltin.
Kötü amaçlı beans bağlama
Açıklama
Bazı Java çerçeveleri çalışma zamanında otomatik bean özelliği bağlamayı destekler. Bağlanabilecek bean özelliklerinin türleri kısıtlanmadığında saldırgan uygulama davranışını bozmak veya keyfi kod yürütmek için hassas özelliklerin değerlerini değiştirebilir.
Çözüm
Bağlanabilecek bean özelliklerinin türlerini kısıtlayın.
classve sınıf yükleyici özellikleri gibi hassas özelliklerin değiştirilmesini önleyin.Güvenlik açığı üçüncü taraf bir bileşenden kaynaklanıyorsa bileşeni en son yamalı sürüme yükseltin.
RASP atlama teknikleri
JNI enjeksiyonu
Açıklama
Java Native Interface (JNI) enjeksiyonu Runtime Application Self-Protection (RASP) atlamak için kullanılan yaygın bir tekniktir. Saldırgan kod yürütme izinleri elde ettikten sonra JNI işlevlerini kullanarak harici kötü amaçlı dinamik bağlantı kitaplıklarını çağırabilir. Bu durum Java katmanı güvenlik korumalarını atlar ve kötü amaçlı davranışları gizler.
Çözüm
Sunucunuzda bir kod yürütme güvenlik açığı olabilir. Güvenlik açığının kaynağını belirleyin ve kod yürütme izinlerini kısıtlayın.
Kötü amaçlı yansıma çağrıları
Açıklama
RASP'in kendi kendini koruma modülü saldırganların Java yansımasını kullanarak çalışma zamanında RASP dahili verilerini değiştirmesini önler.
Çözüm
Sunucunuzda bir kod yürütme güvenlik açığı olabilir. Güvenlik açığının kaynağını belirleyin ve kod yürütme izinlerini kısıtlayın.
İş parçacığı enjeksiyonu
Açıklama
İş parçacığı enjeksiyonu RASP atlamak için kullanılan yaygın bir tekniktir. Saldırgan kod yürütme izinleri elde ettikten sonra RASP tarafından izlenen yürütme bağlamından çıkmak için yeni bir iş parçacığı oluşturabilir. Bu durum RASP'in savunma kapasitesini düşürür.
Çözüm
Sunucunuzda bir kod yürütme güvenlik açığı olabilir. Güvenlik açığının kaynağını belirleyin ve kod yürütme izinlerini kısıtlayın.
Kötü amaçlı Attach API
Açıklama
Attach API çalışan uygulamaların bytekodunu dinamik olarak değiştirmeyi sağlayan bir Java teknolojisidir. Saldırganlar bu teknolojiyi aracı türü bellek atları enjekte etmek için kullanabilir. Bu saldırı yöntemi oldukça yanıltıcıdır.
Çözüm
Sunucunuzda bir kod yürütme güvenlik açığı olabilir. Güvenlik açığının kaynağını belirleyin ve kod yürütme izinlerini kısıtlayın.
Dosya sistemi saldırıları
Keyfi dosya okuma
Açıklama
Bir web sitesinin dosya indirme veya okuma özelliği dosyalara mutlak yol üzerinden veya dizin tarama yoluyla erişilmesine olanak tanıyorsa saldırgan bu güvenlik açığını kullanarak hassas dosyaları okuyabilir ve gizli bilgileri ele geçirebilir.
Çözüm
Dosya okuma işlemlerinin beklendiği gibi çalıştığını doğrulayın. Anormal davranış tespit edilirse ilgili kodu gözden geçirin ve ./ ve ../ gibi yol tarama dizilerini engellemek için kara liste kısıtlamaları uygulayın.
Kötü amaçlı dosya okuma ve yazma
Açıklama
Java dosya okuma ve yazma işlemleri için RandomAccessFile sınıfını sağlar. Dosya yolu ve dosya içeriği düzgün bir şekilde doğrulanmazsa saldırgan hassas sistem dosyalarını okuyabilir veya sunucuya truva dosyaları yazabilir.
Çözüm
Dosya okuma ve yazma işlemlerinin beklendiği gibi çalıştığını doğrulayın. Anormal davranış tespit edilirse ilgili kodu gözden geçirin ve hassas yollara erişimi engellemek için kara liste kısıtlamaları uygulayın.
Kötü amaçlı dosya yükleme
Açıklama
Bir web sitesinin dosya yükleme özelliği yüklenebilecek dosya türlerini kısıtlamazsa saldırgan sunucuda ayrıcalıklı izinler elde etmek için JSP web kabukları gibi çalıştırılabilir dosyalar yükleyebilir.
Çözüm
Yüklenebilecek dosya türlerini kısıtlayın. JSP dosyaları gibi yürütme izinlerine sahip dosyaların yüklenmesini yasaklayın.
Keyfi dosya silme
Açıklama
Bir web sitesinin dosya silme özelliği dosyaların mutlak yol üzerinden veya dizin tarama yoluyla silinmesine olanak tanıyor ve dosya yolları düzgün bir şekilde doğrulanmıyorsa saldırgan bu güvenlik açığını kullanarak kritik dosyaları silebilir veya hassas bilgilere erişebilir.
Çözüm
Dosya silme işleminin beklendiği gibi çalıştığını doğrulayın. Anormal davranış tespit edilirse ilgili kodu gözden geçirin ve ./ ve ../ gibi yol tarama dizilerini engellemek için kara liste kısıtlamaları uygulayın.
Dizin tarama
Açıklama
Dizin tarama bir web sitesinin dizin yapısının yapılandırma hataları nedeniyle keyfi olarak taranabilmesi durumunda meydana gelir. Bu durum saldırganın web sitesini daha da tehlikeye atmak için kullanabileceği hassas bilgilerin ifşa edilmesine yol açabilir.
Çözüm
Dizin erişiminin beklendiği gibi çalıştığını doğrulayın. Anormal davranış tespit edilirse ilgili kodu gözden geçirin ve ./ ve ../ gibi tarama dizilerini engellemek için kara liste kısıtlamaları uygulayın.
Ağ tabanlı saldırılar
SSRF
Açıklama
Server-side request forgery (SSRF), saldırganın sunucu tarafı uygulamayı keyfi bir hedefe HTTP istekleri göndermeye teşvik etmesine olanak tanıyan bir güvenlik açığıdır. Saldırgan SSRF'i internetten doğrudan erişilemeyen dahili sistemlere erişmek için kullanabilir.
Çözüm
SSRF sunucunun kullanıcı tarafından sağlanan giriş parametrelerine dayalı olarak istek göndermesinden kaynaklanır. Parametre değerlerini doğrulayın ve izin verilen hedefler için beyaz liste kısıtlamaları uygulayın.
Kötü amaçlı DNS sorgusu
Açıklama
Saldırganlar DNS sorgularını birden çok şekilde istismar edebilir. Saldırgan DNS protokolünü kullanarak dahili ağlardan hassas verileri dışarı sızdırabilir (DNS tüneli). Saldırgan ayrıca dahili sistemlerdeki güvenlik açıklarını (SSRF ve JNDI enjeksiyonu gibi) araştırmak için DNS sorgularını kullanabilir.
Çözüm
Kötü amaçlı DNS sorguları sunucunun kullanıcı tarafından kontrol edilen parametrelere dayalı olarak istek göndermesinden kaynaklanır. Parametre değerlerini doğrulayın ve beyaz liste kısıtlamaları uygulayın.
Güvensiz protokollerin kullanımı
Açıklama
Sunucunun eriştiği URL kullanıcı tarafından kontrol edilebiliyorsa ve uygulama URL protokolünü kısıtlamıyorsa saldırgan file:// ve netdoc:// gibi güvensiz protokolleri kullanarak sunucudaki hassas dosyaları okuyabilir.
Çözüm
Uygulamanın kullanmasına izin verilen URL protokollerini kısıtlayın. Yalnızca HTTP ve HTTPS gibi güvenilir protokollere izin verin.
Kalıcılık teknikleri
Bellek atı enjeksiyonu
Açıklama
Bellek atı, dosyasız truva tekniğinin gelişmekte olan bir türüdür. Saldırgan kötü amaçlı kodu doğrudan uygulamanın bellek alanına enjekte eder ve bu durum trovanın diske dosya yazmadan çalışmasına olanak tanır. Bu teknik Web Application Firewall (WAF) ve ana bilgisayar tabanlı algılama mekanizmalarını atlayabilir.
Çözüm
Sunucunuzda bir kod yürütme güvenlik açığı olabilir. Güvenlik açığının kaynağını belirleyin ve kod yürütme izinlerini kısıtlayın.
Kimlik bilgisi saldırıları
Zayıf veritabanı parolası
Açıklama
Bir veritabanı zayıf parola kullanıyorsa saldırgan kaba kuvvet saldırıları yoluyla parolayı elde edebilir. Saldırgan daha sonra verileri çalmak veya sistem düzeyinde izinler elde etmek için ayrıcalıkları yükseltmek amacıyla veritabanına erişebilir.
Çözüm
Tüm veritabanı hesapları için güçlü ve karmaşık bir parola kullanın.