Genel Bakış
MySQL, PostgreSQL, MongoDB ve Redis gibi veritabanı yönetim sistemleri varsayılan olarak bilinen TCP portlarında dinler. Bu portlar genel internetten veya güvenilmeyen iç ağ segmentlerinden erişilebilir durumdaysa, saldırganlar herhangi bir uygulama katmanı güvenlik denetiminden geçmeksizin doğrudan veritabanı servisiyle etkileşime girebilir. Veritabanının kendi kimlik doğrulama ve yetkilendirme yapılandırmasına bağlı olarak, bu durum kimlik bilgisi kaba kuvvet saldırısından tamamen kimlik doğrulamasız veri erişimine kadar uzanan bir risk aralığı oluşturur.
Redis özellikle yıllarca varsayılan olarak kimlik doğrulaması devre dışı bırakılmış biçimde gönderilmiştir. 2017–2018 yılları arasında çok sayıda MongoDB dağıtımı kimlik bilgisi olmaksızın herkese açık hale gelmiş; bu durum toplu veri hırsızlığı ve fidye kampanyalarıyla sonuçlanmıştır. Bu olaylar, ağ katmanı açığının, veritabanının kendi erişim denetimindeki herhangi bir zayıflığın sömürülmesi için eşiği dramatik biçimde düşüren bir ön koşul olduğunu açıkça ortaya koymaktadır.
Nasıl çalışır?
Otomatik internet tarayıcıları IPv4 ve IPv6 adres alanını sürekli olarak açık portlar için tarar. Bir veritabanı portu yanıt verdiğinde saldırganlar öngörülebilir bir saldırı zinciri izler:
- Servis parmak izi alma: İlk TCP el sıkışması ve sunucu başlığı (örn. MySQL'in ilk el sıkışma paketi, Redis'in satır içi
PINGyanıtı) veritabanı türünü ve sürümünü doğrulayarak hedefli sömürüye olanak tanır. - Kimlik doğrulama atlama veya kaba kuvvet: Önce varsayılan kimlik bilgileri denenir (
rootve boş şifre — MySQL'de; Redis <6.0'da kimlik doğrulama yok; eski MongoDB'de anonim erişim). Önceki ihlallerden türetilen kimlik bilgisi doldurma listeleri bu süreci daha da ileriye taşır. - Kimlik doğrulamasız erişim (Redis / eski MongoDB): Redis 6.0 öncesinde varsayılan olarak kimlik doğrulama bulunmaz. Saldırgan
CONFIG SET dirveCONFIG SET dbfilenamekomutlarını ardındanSAVEkomutuyla kullanarak sunucu dosya sistemine rastgele dosya yazabilir; bu yöntem genellikle SSH yetkili anahtarları veya uzaktan kod yürütme için cron işleri yerleştirmek amacıyla kullanılır. - Veri sızdırma: Kimlik doğrulama sağlandıktan (veya kimlik doğrulama yokken) sonra tam veri kümesi numaralandırması ve çıkarılması standart istemci araçları ya da komut dosyalı sorgular kullanılarak son derece kolaydır.
- Fidye yazılımı / veri imhası: Otomatik araçlar, açık MongoDB ve Redis örneklerini büyük ölçekte hedef alarak veritabanlarını silip fidye notu bırakmak için yaygın biçimde kullanılmıştır.
- Yanal hareket: Ele geçirilen bir veritabanı sunucusu çoğunlukla ek iç sistemlere erişim sağlayan kimlik bilgilerine veya ağ erişimine sahiptir; bu da daha fazla yayılımı mümkün kılar.
Yaygın kök nedenler şunlardır: bulut güvenlik grubu veya güvenlik duvarı kurallarının veritabanı portlarına 0.0.0.0/0 girişine izin vermesi; veritabanı konteynerlerini tüm ağ arayüzlerine bağlayan yanlış yapılandırılmış Docker veya Kubernetes servis açıkları; ve ağ mimarisinde en az ayrıcalık ilkesinin uygulanmaması (yani veritabanı alt ağı / DMZ ayrımının olmaması).
İş etkisi
Açık bir veritabanı portunun sömürülmesi, o veritabanında depolanan tüm verilerin tam olarak ele geçirilmesiyle sonuçlanabilir. Spesifik sonuçlar şunlardır:
- Veri ihlali: Kişisel olarak tanımlanabilir bilgiler (PII), ödeme kartı verileri, sağlık kayıtları, kimlik doğrulama kimlik bilgileri ve özel iş verileri dakikalar içinde sızdırılabilir.
- Düzenleyici cezalar: Kişisel verilerin açığa çıkması; GDPR Madde 32 (uygun teknik önlemler), HIPAA Güvenlik Kuralı §164.312, PCI DSS Gereksinim 1 (güvenlik duvarı kontrolleri) ve benzeri çerçeveleri ihlal eder; potansiyel para cezaları ve zorunlu ihlal bildirimleri söz konusu olabilir.
- Veri imhası ve fidye yazılımı: Otomatik saldırı kampanyaları rutin olarak veritabanı içeriklerini siler ve iade için ödeme talep eder. Yedek yoksa kurtarma imkânsız olabilir.
- Uzaktan kod yürütme: Dosya sistemi yazımını mümkün kılan Redis yanlış yapılandırmaları, işletim sistemi düzeyinde uzaktan kod yürütme elde etmek için kapsamlı biçimde sömürülmüş; etki veritabanının çok ötesine geçmiştir.
- İtibar kaybı: Açıkça erişilebilir bir veritabanına atfedilebilen bir ihlalin kamuoyuna duyurulması, temel güvenlik ihmalini işaret ettiğinden özellikle zararlıdır.
Nasıl düzeltilir?
- Ağ çevresinde veritabanı portlarını engelleyin: Güvenlik duvarı kurallarını, bulut güvenlik gruplarını (AWS Security Groups, Azure NSG'ler, GCP Güvenlik Duvarı Kuralları) veya ana makine tabanlı güvenlik duvarını (iptables/nftables/ufw) açıkça güvenilir uygulama sunucusu IP adresleri veya CIDR aralıkları dışındaki her kaynaktan gelen tüm bağlantıları veritabanı portlarına reddedecek şekilde yapılandırın. Veritabanı portlarında asla
0.0.0.0/0girişine izin vermeyin. - Veritabanı servislerini yalnızca yerel ana makineye veya özel arayüzlere bağlayın: MySQL/MariaDB
my.cnfdosyasındabind-address = 127.0.0.1; PostgreSQLpostgresql.confdosyasındalisten_addresses = 'localhost'; Redisredis.confdosyasındabind 127.0.0.1; MongoDBmongod.confdosyasındanet.bindIp: 127.0.0.1ayarlarını yapın (çapraz sunucu replikasyonu gerekmiyorsa). - Güçlü kimlik doğrulamayı etkinleştirin ve zorunlu kılın: Redis 6+'da güçlü
requirepasskullanın (veya ACL tabanlı kimlik doğrulamayı etkinleştirin); PostgreSQL'inpg_hba.confdosyasındascram-sha-256kimlik doğrulamasını kullandığından emin olun; MySQL anonim hesaplarını devre dışı bırakın ve parola politikasını uygulayın; MongoDB kimlik doğrulamasını etkinleştirin (security.authorization: enabled). - Veritabanlarını ayrı bir özel alt ağa yerleştirin: Ağ mimarisi, veritabanı düğümlerinin internetten doğrudan yolu olmayan bir alt ağ/VPC'de bulunmasını sağlamalıdır. Uygulama sunucuları yalnızca özel IP'ler üzerinden iletişim kurmalıdır.
- Uzaktan yönetim için şifreli tüneller kullanın: Tüm DBA erişimi SSH tüneli, VPN veya bastion host üzerinden gerçekleştirilmelidir; asla veritabanı portu internete açılmamalıdır.
- Güncel sürümlere yükseltin: Tüm veritabanı yazılımlarının güvenlik iyileştirmelerinden yararlanmak için desteklenen ve yamalı bir sürümde olduğundan emin olun (örn. Redis 6.0+ zorunlu kimlik doğrulama, MongoDB 4.0+ TLS zorunluluğu).
- İstemci bağlantıları için TLS/SSL etkinleştirin: Erişilebilen herhangi bir ağ yolunda kimlik bilgisi ele geçirilmesini önlemek amacıyla veritabanlarını şifreli bağlantılar gerektirecek şekilde yapılandırın.
- Düzenli denetim yapın: Altyapınızı yanlışlıkla açığa çıkan veritabanı portları için düzenli olarak tarayın. Sensagraph, izlenen varlıklardaki açık veritabanı servis portlarını sürekli olarak tespit eder.
Referanslar
- OWASP Top 10 A05:2021 – Güvenlik Yanlış Yapılandırması
- MITRE CWE-284 – Hatalı Erişim Kontrolü
- MITRE CWE-16 – Yapılandırma
- Redis Güvenlik Belgeleri
- MongoDB Güvenlik Kontrol Listesi
- PostgreSQL: pg_hba.conf Dosyası
- MySQL: Saldırılara Karşı MySQL'i Güvenli Hale Getirme
- Veritabanı Yazılımları için CIS Kıyaslamaları