SQL Enjeksiyonu: Hala Bir Tehdit mi? Bundan Nasıl Kaçınabilirsiniz?

Yayınlanan: 2020-03-07

Veri ihlalleri o kadar yaygın ki artık şaşırtıcı bile değiller. Kötü niyetli aktörler, olabildiğince fazla veri toplamayı amaçlar. Giriş kimlik bilgilerinin, kredi kartı bilgilerinin veya ticari sırların peşindeler. Bu tür verileri ele geçirdiklerinde, karanlık ağda satıyorlar.

Şimdiye kadar ne kadar veri çaldıklarını ve ne kadarını karanlık ağa döktüklerini kavrayamıyorsanız, işte endişe verici bir rakam. Geçen yıl, suçlular yalnızca saldırıya uğramış on altı web sitesinden 620 milyon hesabı çaldı ve sattı. Evet, on altı web sitesini hacklemek çok fazla hasara yol açabilir. Ama daha kötüsü ne biliyor musun? Her gün binlerce yeni site hackleniyor!

Siber suçlular her gün yeni bilgisayar korsanlığı yöntemleri buluyor. Ancak bu, SQL enjeksiyonları gibi eski teknikleri unuttukları anlamına gelmez. Yürütülmesi basit olan ve verimli sonuçlar veren en yaygın saldırı vektörlerinden biridir.

İçindekiler tablosu gösterisi
  • SQL Enjeksiyonu Nedir ve Neden Tehlikelidir?
  • SQL Enjeksiyonu Nasıl Çalışır?
    • Bant İçi SQL Enjeksiyonu
    • Kör SQL Enjeksiyonu
    • Bant Dışı SQL Enjeksiyonu
  • Bu Tehdit Hâlâ Geçerli mi?
  • Önleme için Güvenlik İpuçları
  • Son sözler

SQL Enjeksiyonu Nedir ve Neden Tehlikelidir?

SQL Programlama Dili

SQLi olarak da bilinen SQL Enjeksiyonu, bilgisayar korsanının bir SQL deyimi yürütmesini sağlayan bir enjeksiyon saldırısı biçimidir. Enjeksiyon saldırıları, farklı saldırı vektörlerinin geniş bir kategorisidir. Ancak hepsi, kötü niyetli aktörlerin tehlikeli girdiler gerçekleştirmesine izin verir. Daha sonra yürütülen bir sistem komutu olarak hareket ederler.

SQL ifadeleri en yaygın olarak çeşitli veritabanlarından veri eklemek veya almak için kullanılır. Microsoft SQL Server, Access ve Oracle gibi birçok ünlü yönetim sistemi bu ifadeleri kullanır.

Yaygın olarak kullanılan birçok veritabanı yönetim sistemi SQL deyimlerini kullandığından, bilgisayar korsanları bu sistemlerden SQL enjeksiyonları yoluyla yararlanabilir. Bu, suçluların veritabanında saklanan hassas verilere erişebileceği ve bunları çalabileceği anlamına gelir. Aşağıdakileri içerebilir:

  • fikri mülkiyet.
  • kredi kartı bilgisi.
  • Müşteri Bilgileri.
  • adresler.
  • şirket sırları.
SQL enjeksiyonları, hassas verilerin çalınmasına neden olur. Herhangi bir işletme, hükümet veya kuruluş için yıkıcı sonuçları olabilir. Bu tür olaylar şirketin faaliyetlerine ve itibarına zarar verebilir ve veri koruma düzenleyicileri tarafından uygulanan bazı ağır para cezalarına neden olabilir.
 Sizin için önerilenler: Chrome ve Firefox: Performans, Güvenlik ve Gizlilik Karşılaştırması!

SQL Enjeksiyonu Nasıl Çalışır?

veritabanı-şema-veri-tabloları-rdbms-ilişkisel-kardinalite-sql-mysql

Bir SQL enjeksiyon saldırısı gerçekleştirmek için bilgisayar korsanının, güvenlik açığı bulunan kullanıcı girdilerini şirketin web sitesinde veya dahili uygulamalarında bulması gerekir.

Örneğin, kurban web siteleri için WordPress kullanıyor. Kod, kullanıcı girdisini herhangi bir temizleme işlemi olmadan doğrudan veritabanına gönderen bir SQL güvenlik açığına sahip olabilir. Bir bilgisayar korsanı bu güvenlik açığını tespit ederse, söz konusu veritabanına komutlar gönderebilir. Ardından, veritabanı çıktısı tarayıcıya geri döner ve bilgisayar korsanının farklı komutları yürütmesini sağlar. Bu şekilde, tüm veritabanını indirebilir, yeni komutlar kurabilir, kullanıcı hesaplarını değiştirebilir veya yeni hesaplar oluşturabilirler.

SQL enjeksiyon saldırılarının üç ana biçimi vardır:

  • Bant içi SQL enjeksiyonu:
    • Hata tabanlı SQL enjeksiyonu.
    • Union tabanlı SQL enjeksiyonu.
  • Kör SQL enjeksiyonu:
    • Boole
    • Zaman tabanlı.
  • Bant Dışı SQL Enjeksiyonu.

Bant İçi SQL Enjeksiyonu

Bant içi SQL enjeksiyonu, basit ve verimli olduğu için en yaygın türlerden biridir. Burada saldırgan, saldırıyı gerçekleştirmek ve sonuçları toplamak için aynı iletişim kanalını kullanır. İki alt varyasyonu vardır - Hata tabanlı ve Birlik tabanlı SQL enjeksiyonu:

  • Hata tabanlı SQL enjeksiyonu, bilgisayar korsanının veritabanının hata mesajları üretmesine neden olmasını sağlar. Ardından, veritabanının kendisi hakkında bilgi toplamak için bu hata mesajlarını kullanabilirler.
  • Union tabanlı SQL enjeksiyonu, suçlunun UNION SQL operatöründen yararlanmasını sağlar. Tek bir HTTP yanıtı almak için veritabanı tarafından sağlanan farklı ifadeleri birleştirir. Böyle bir yanıt genellikle bilgisayar korsanlarının yararlanabileceği verileri içerir.

Kör SQL Enjeksiyonu

Kör SQL enjeksiyonları, sunucunun davranış kalıplarına dayanır. Yürütmeleri çok daha yavaştır. Bilgisayar korsanı veri yükleri yayar ve yapısını analiz etmek için sunucunun yanıtını denetler. Veriler doğrudan bilgisayar korsanlarına gitmediği için buna "kör" diyorlar. Bu nedenle, bant içi istismar hakkında herhangi bir bilgi göremezler. Boolean ve Time-based olmak üzere iki çeşidi vardır:

  • Boole varyasyonu, bilgisayar korsanının veritabanından bilgi döndürmesini isteyen bir SQL sorgusu göndermesine olanak tanır. HTTP yanıtındaki bilgiler bir önceki sonuca göre değişir.
  • Zamana dayalı varyasyon, kötü niyetli aktörün doğrudan veritabanına bir SQL sorgusu göndermesini sağlar ve bu da veritabanını tepki vermeden önce beklemeye zorlar. Saldırgan, veritabanının yanıt vermesi için gereken süreyi dikkate alır ve sorgunun doğru mu yoksa yanlış mı olduğuna karar verir. Sonuca göre, HTTP yanıtı anında veya gecikmeli olur.

Bant Dışı SQL Enjeksiyonu

Bant dışı SQL enjeksiyonu, bilgisayar korsanının yalnızca veritabanı sunucusunda belirli özellikler etkinleştirildiğinde veritabanına saldırmasına izin verir. En az popüler olan SQL enjeksiyon yöntemidir. Birçok bilgisayar korsanı bunu Hata tabanlı ve Blind SQL enjeksiyonlarının yerine kullanır.

Bu özel saldırı, bilgisayar korsanının saldırıyı gerçekleştirmek ve bilgi toplamak için aynı aracı kullanamadığı durumlarda bir seçenektir. Veya, bir sunucu kararsız olduğunda ve diğer iki enjeksiyon türünü gerçekleştirmek için yavaş olduğunda bu enjeksiyonu kullanabilirler. Bu teknik, çalınan verileri iletmek için DNS ve HTTP istekleri oluşturur.

 İlginizi çekebilir: Küçük İşletmeler için Siber Güvenlik Risk Değerlendirmesi ve Yönetim İpuçları.

Bu Tehdit Hâlâ Geçerli mi?

siber-güvenlik-koruma-gizlilik-şifreleme-emniyet-şifre-güvenlik duvarı-erişim

SQL enjeksiyonları, agresif siber saldırıların en eski biçimlerinden biridir. Yine de hala çok alakalı. Açık Web Uygulaması Güvenliği Projesi, SQL enjeksiyonlarını iki yıl önce bir numaralı tehdit olarak listeledi. Bulut hizmeti sağlayıcısı Akamai, 2017'den 2019'a kadar tüm web tabanlı saldırıların %65'inden SQL enjeksiyonlarının sorumlu olduğunu tespit eden bir İnternet Durumu Raporu oluşturdu. Dolayısıyla, SQL enjeksiyonunun hala web saldırılarının üçte ikisinde görüldüğünü söyleyebilirsiniz. Son yıllarda.

2017'nin ilk çeyreğinde, uygulama katmanı saldırılarının %44'ünden bu vektörler sorumluydu. Daha da kötüsü, başka hiçbir uygulama saldırı vektörü SQL enjeksiyonları kadar hızlı büyümez. Kasım 2018'de önemli bir artış daha yaşandı. 35 milyondan fazla SQL enjeksiyon saldırısı girişimi olduğunu göstermiştir. Uzmanlar, bu artışın ana nedeninin tatil sezonu olduğunu düşünüyor. Bu, tüm web sitesi sahiplerinin - özellikle perakende sektöründeyseler - bilmesi gereken bir şeydir. Ancak tatil sezonu sona erdikten sonra bile SQL enjeksiyonu, farkında olmanız gereken bir tehdit olmaya devam ediyor.

Amerika Birleşik Devletleri, uygulama katmanı saldırıları için bir numaralı hedeftir. Sadece 17 ayda yaklaşık 3 milyar saldırıyla karşı karşıya kaldı. Diğer popüler kurbanlar arasında Birleşik Krallık, Almanya, Brezilya, Hindistan, Japonya, Kanada, Avustralya, İtalya ve Hollanda yer alıyor. Bu nedenle, bunun hala büyük bir tehdit olduğunu ve tüm şirketlerin kapsamlı önlemler alması gerektiğini varsaymak güvenlidir.

Önleme için Güvenlik İpuçları

Geliştiriciler için en iyi hareket tarzı, saldırıların gerçekleşmesini önlemek için ihtiyati tedbirler almaktır. Bunlar en etkili önleme tedbirleridir:

  • Giriş Doğrulama: Giriş Doğrulama, belirli bir kullanıcı girişine izin verilip verilmediğini doğrular. Bu, biçim, uzunluk ve türün toplu olarak kabul edilmesi gerektiği anlamına gelir. Bilgisayar korsanının giriş dizisine yerleştirdiği komutlarla savaşmak için yararlıdır.
  • Parametreli Sorgular: Parametreli sorgular, farklı SQL deyimlerini önceden derlemenin bir yoludur. Daha sonra, ifadenin yürütülebilmesi için parametreleri stoklar. Veritabanının kodu tanımasını ve normal girdi verilerinden ayırt etmesini sağlar.
  • Saklı Yordamlar: Geliştiricilerin bir veya daha fazla SQL ifadesini mantıksal bir birimde kümelemeleri gerekir. Adından da anlaşılacağı gibi saklanabilen ve sonrası için saklanabilen bir kod biçimidir.
  • Çıkış: Geliştiriciler, DBMS'nin kullanıcı girişini bir SQL deyimiyle karıştırmamasını sağlamak için karakter çıkış özelliklerini kullanmalıdır.
  • Web Uygulama Güvenlik Duvarı: SQL enjeksiyon saldırılarını önlemenin en güvenli yöntemlerinden biridir. Güvenlik duvarı, sunucuya giden ve sunucudan gelen trafiği izler. Hangi isteklerin potansiyel olarak zararlı olduğunu ve hangilerinin olmadığını belirler. Bu çözüm, diğer birçok istismar için yeterlidir, bu nedenle her zaman uygundur.
  • Yönetici ayrıcalıklarından kaçınma: Geliştiriciler, uygulamalarını hiçbir zaman root erişimine sahip hesaplar aracılığıyla veritabanına bağlamamalıdır. Aksi takdirde, bilgisayar korsanları tüm sisteme erişebilir ve onarılamaz hasara neden olabilir. Ayrıca, geliştiriciler, her veritabanının kendi sınırlı kimlik bilgileri kümesine sahip olduğundan emin olmalıdır.
 Şunlar da hoşunuza gidebilir: En Çok Satan 10 İnternet Güvenlik Yazılımı (Antivirüs ve Güvenlik).

Son sözler

hack-saldırı-maske-siber-suç-virüs-veri-güvenliği

SQL enjeksiyonundan endişe duyan herkes, diğer olası saldırıları da unutmamalıdır. Olağan siber güvenlik uygulamaları geçerlidir: güçlü parolalar kullanın, tehditleri tanımayı öğrenin, web sitelerine veya veritabanlarına her bağlandığınızda bir VPN'i açın, vb. VPN nedir ve ne işe yarar? Çevrimiçi olduğunuz her an çevrimiçi trafiğinizi şifreler. Bu nedenle, veritabanınıza bir SQL isteği gönderirseniz, yalnızca DB bunun şifresini çözebilir. Birisi söz konusu veri paketlerini ele geçirirse, bunlardan hiçbir anlam çıkarmayacaktır. Siz veya şirketiniz her türlü tehdide karşı ne kadar hazırsanız o kadar iyidir.

Yalnızca kapsamlı önleyici tedbirlerin alınması, SQL enjeksiyonunun veya saldırılarının hiçbir zaman başarılı olmamasını sağlar. Çeşitli istismarlarla mücadele etmek için uygun araçlara sahip olduğunuzdan emin olmak için çok fazla zaman, çaba ve para yatırmaya hazır olun.