NoSQL Injection, NoSQL (Non-Relational SQL) veri tabanlarını hedef alan bir güvenlik açığıdır. Geleneksel SQL Injection’a benzer şekilde, bu tür saldırılar, bir uygulamanın NoSQL sorgularını kötü niyetli bir şekilde manipüle ederek hassas verilerin ifşa edilmesine, yetkisiz erişime veya veri bütünlüğünün bozulmasına yol açabilir.
NoSQL Injection Nasıl Çalışır?
NoSQL Injection, genellikle kullanıcı tarafından sağlanan giriş verilerinin düzgün şekilde doğrulanmaması veya temizlenmemesi durumunda ortaya çıkar. Saldırgan, uygulamanın NoSQL sorgularını manipüle etmek için özel hazırlanmış veriler gönderir.
Örnek Senaryolar
MongoDB Örneği:
Yukarıdaki kod, doğrudan kullanıcıdan alınan girdileri sorguya dahil eder. Eğer
input.username
şu şekilde olursa:Bu durumda, sorgu şu şekilde çalışır:
Böylece
username
alanı herhangi bir değer taşımadığı sürece tüm kayıtlar döndürülebilir.Dinamik Sorgular: Eğer uygulama dinamik olarak JSON yapıları oluşturuyorsa, saldırganlar özel olarak hazırlanmış JSON veya karakterler ekleyerek uygulama mantığını bozabilir.
Yaygın Saldırı Vektörleri
$ne
: Belirli bir değere eşit olmayan verileri döndürür.$gt
,$lt
: Değeri belirli bir sınırdan büyük/küçük olan kayıtları seçer.$regex
: Desen eşleşmesi yaparak sorguyu manipüle eder.
NoSQL Injection’dan Korunma Yöntemleri
Girdi Doğrulama ve Temizleme: Kullanıcıdan alınan veriler sıkı bir şekilde doğrulanmalı ve zararlı içeriklerden arındırılmalıdır.
Parametrik Sorgular: NoSQL veri tabanları için parametrik sorgular veya sorgu oluşturma kütüphaneleri kullanılmalıdır.
ORM ve Güvenlik Kütüphaneleri: Uygulama kodunu manuel olarak yazmak yerine güvenli ve test edilmiş ORM'ler tercih edilebilir.
Güvenlik Duvarları: Web Uygulama Güvenlik Duvarları (WAF), NoSQL Injection girişimlerini algılayabilir ve engelleyebilir.
Minimum Yetki: Veritabanı kullanıcıları, yalnızca gerekli izinlerle sınırlanmalıdır.
Lütfen yorum yaparken şunlara dikkat ediniz:
Küfürlü, siyasi veya huzur bozucu yorumlar yapmamaya,
Reklam, spam gibi yorumlar yapmamaya.