Sorun Tanımı
WordPress için popüler bir e-posta gönderim eklentisi olan Gravity SMTP, yetkisiz kullanıcıların hassas bilgilere erişmesine olanak tanıyan bir bilgi açığına sahiptir. Bu açıklık, CVE-2024-5678 olarak tanımlanan ve 100.000'den fazla aktif kurulumu etkileyen bir information disclosure (bilgi ifşası) zafiyetidir.
Saldırganlar, bu açıktan yararlanarak eklentinin yapılandırma ayarlarına erişebilir ve SMTP sunucu kimlik bilgileri, e-posta gönderim kayıtları ve diğer hassas veriler gibi kritik bilgileri ele geçirebilir. Saldırılar genellikle otomatik botlar tarafından gerçekleştirilmekte ve bu durum, milyonlarca web sitesinin potansiyel olarak riske girmesine neden olmaktadır.
Etkilenen Sürümler ve Yaygınlık
Bu zafiyet, aşağıdaki Gravity SMTP eklenti sürümlerinde tespit edilmiştir:
- Gravity SMTP v2.6.1 ve öncesi (tüm alt sürümler dahil)
- Gravity SMTP Pro (tüm lisanslı sürümler)
Önemli Not:
Eğer Gravity SMTP eklentisini kullanıyorsanız ve sürümünüz 2.6.1 veya daha eskiyse, derhal güncelleme yapmanız gerekmektedir. Eklenti geliştiricisi tarafından yayınlanan resmi düzeltmeyi uygulamadığınız takdirde, saldırganlar tarafından hedef alınma riskiniz yüksek olacaktır.
Saldırı Vektörü ve Yöntemi
Bu zafiyet, yetkisiz erişim (unauthenticated access) yoluyla çalışmaktadır. Saldırganlar, aşağıdaki adımları izleyerek hassas verileri elde edebilir:
- Hedef URL'nin
/wp-json/gravityforms/v2/entriesveya/wp-json/gf/v2/entriesgibi REST API uç noktalarına doğrudan erişim sağlaması. - API yanıtında yer alan JSON verilerinde yer alan
email,subject,messagegibi alanlara erişim sağlanması. - SMTP sunucu ayarlarının (
smtp_host,smtp_port,smtp_username,smtp_password) ele geçirilmesi.
Teknik Detaylar: Zafiyet, eklentinin REST API uç noktalarındaki uygunsuz yetkilendirme kontrollerinden kaynaklanmaktadır. Saldırganlar, herhangi bir kimlik doğrulama işlemi gerçekleştirmeden bu uç noktalara erişebilmekte ve verileri okuyabilmektedir.
Etki ve Riskler
Bu zafiyetin başarılı bir şekilde istismar edilmesi durumunda ortaya çıkabilecek riskler şunlardır:
- Veri Sızıntısı: Kullanıcıların e-posta adresleri, konuları ve içerikleri gibi hassas bilgilerin çalınması.
- SMTP Kimlik Bilgilerinin Ele Geçirilmesi: E-posta gönderim sunucularının kimlik bilgilerinin çalınması ve spam gönderimlerinde kullanılması.
- Web Sitesi Saldırıları: Ele geçirilen SMTP bilgileriyle, hedef web sitesine yönelik phishing saldırıları düzenlenmesi.
- Yasal ve Finansal Zararlar: Veri sızıntısına bağlı olarak yasal yaptırımlar ve itibar kaybı.
Çözüm ve Düzeltme Adımları
1. Eklentiyi Güncelleme
Öncelikli Adım: Gravity SMTP eklentisini en son sürüme (v2.6.2 veya üzeri) güncelleyin. Bu sürümde zafiyet giderilmiştir.
- WordPress Yönetici Paneline giriş yapın:
https://siteniz.com/wp-admin. - Eklentiler bölümüne gidin ve
Gravity SMTP'yi bulun. - Güncelle butonuna tıklayın ve en son sürümü yükleyin.
- Güncelleme tamamlandıktan sonra tüm siteyi önbellekten temizleyin (WP Rocket, W3 Total Cache vb. önbellek eklentileri kullanıyorsanız).
2. Manuel Düzeltme (Güncelleme Mümkün Değilse)
Uyarı:
Eğer eklentiyi güncelleme imkanınız yoksa, derhal eklentiyi devre dışı bırakın ve alternatif bir SMTP eklentisi kullanmaya geçin (örneğin,WP Mail SMTPveyaPost SMTP).
Eğer manuel düzeltme yapmak istiyorsanız, aşağıdaki adımları izleyin:
- Eklenti Dosyalarına Erişim: FTP/SFTP kullanarak
/wp-content/plugins/gravity-smtp/dizinine gidin. - REST API Uç Noktalarını Kısıtlayın: Aşağıdaki dosyaları düzenleyin:
gravity-smtp/includes/class-rest-api.php - Yetkilendirme Kontrollerini Ekleyin: REST API uç noktalarına
is_user_logged_in()veya benzeri yetkilendirme kontrolleri ekleyin. Örnek düzeltme kodu:<?php if (!is_user_logged_in()) { wp_send_json_error('Unauthorized access', 403); exit; } ?> - Değişiklikleri Kaydedin ve Test Edin: Dosyaları kaydedin ve eklentinin düzgün çalışıp çalışmadığını test edin.
3. Güvenlik Duvarı Kuralları Uygulama
Eğer eklentiyi güncellemeyi bekliyorsanız, web uygulama güvenlik duvarı (WAF) kurallarını kullanarak REST API uç noktalarına erişimi kısıtlayabilirsiniz:
- Cloudflare: Aşağıdaki kuralları uygulayın:
# Gravity SMTP REST API Uç Noktalarını Engelle (http.request.uri.path eq "/wp-json/gravityforms/v2/entries" or http.request.uri.path eq "/wp-json/gf/v2/entries") and not http.request.headers["Cookie"] contains "wordpress_logged_in_" - ModSecurity (Apache): Aşağıdaki kuralı
httpd.confveya.htaccessdosyasına ekleyin:SecRule REQUEST_URI "@pm /wp-json/gravityforms/v2/entries /wp-json/gf/v2/entries" "id:1000,deny,status:403,msg:'Gravity SMTP REST API Access Blocked'"
Doğrulama ve Test Etme
Güncelleme ve düzeltme işlemlerini tamamladıktan sonra, aşağıdaki adımları izleyerek zafiyetin giderildiğinden emin olun:
- Zafiyet Kontrolü: Aşağıdaki komutu kullanarak REST API uç noktalarına yetkisiz erişim denemesinde bulunun:
Eğer yanıtcurl -I https://siteniz.com/wp-json/gravityforms/v2/entries403 Forbiddenveya401 Unauthorizedise, zafiyet giderilmiştir. - SMTP Ayarlarını Kontrol Edin: Eklentinin ayarlarına girerek, SMTP sunucu kimlik bilgilerinin değiştirilmediğinden emin olun.
- Günlükleri İnceleyin: Sunucu günlüklerinde (
error_log,access_log) yetkisiz erişim girişimlerini araştırın.
Önleyici Tedbirler
Bu ve benzeri zafiyetlerden korunmak için aşağıdaki önlemleri alın:
- Düzenli Güncellemeler: Tüm WordPress eklentilerini ve çekirdek dosyalarını haftalık olarak güncelleyin.
- Güvenlik Eklentileri Kullanın:
Wordfence,SucuriveyaiThemes Securitygibi güvenlik eklentilerini kurun ve yapılandırın. - REST API Erişimini Kısıtlayın: Gereksiz REST API uç noktalarını devre dışı bırakın veya yetkilendirme kontrolleri ekleyin.
- SMTP Bilgilerini Koruyun: SMTP sunucu kimlik bilgilerini veritabanında şifreleyin ve çevresel değişkenlerde saklayın.
- Yedekleme Alın: Düzenli olarak tüm site yedeklerini alın ve yedekleri güvenli bir konumda saklayın.



