deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Elementor Pro RCE: 4.2.2 sürümünde doğrulanmamış dosya yüklemeleri giderildi

CVE-2026-32475, kimlik doğrulaması gerektirmeyen saldırganların 4.2.1 ve öncesi sürümleri çalıştıran sitelerde Elementor Pro form yüklemeleri üzerinden bir PHP webshell bırakmasına olanak tanıyor. Wordfence, 19 Ağustos'tan bu yana 190.000'den fazla denemeyi engelledi.

Elementor Pro RCE: 4.2.2 sürümünde doğrulanmamış dosya yüklemeleri giderildi

Continue olması gereken yerde bir return

Milyonlarca WordPress sitesinde çalışan ücretli sayfa oluşturucu eklentisi Elementor Pro, rutin bir form yüklemesini kimlik doğrulaması gerektirmeyen uzaktan kod çalıştırmaya (RCE) dönüştüren bir hata ile yayınlandı. CVE-2026-32475 olarak takip edilen ve CWE-434 kapsamında CVSS 9.0 puanı alan bu hata, 4.2.1 dahil önceki sürümleri etkiliyor ve dev.to üzerinde yayımlanan teknik bir yazıya göre 4.2.2 sürümünde giderildi.

Hata, Form widget'ının yükleme yolunda bulunuyor. Her dosya yükleme alanı için PHP, eklentiye bir dosya dizisi veriyor ve bir doğrulama döngüsü bu diziyi gezerek uzantıları ve MIME türlerini kontrol ediyor. Hata şu: dizideki ilk giriş boş olduğunda — PHP'nin UPLOAD_ERR_NO_FILE sabiti ile belirtiliyor — kod, o tek girişi continue ile atlamak yerine tüm doğrulama fonksiyonundan bir return ifadesiyle çıkıyor. Boş yuvadan sonraki her dosya bu nedenle uzantı ve MIME kontrollerinden tamamen muaf kalıyor. Bu arada, dosyaları diske taşıyan ayrı döngü boş girişleri doğru işlediği için, hiç doğrulanmamış kalan dosyaları sorunsuzca yazıyor.

Saldırı nasıl işliyor

Yazıya göre, Wordfence tarafından sahadaki gözlemlenen istek, action parametresi elementor_pro_forms_send_form olan wp-admin/admin-ajax.php adresine düz bir POST. Multipart gövde, tek bir alan için iki dosya taşıyor: ilki, erken return'ü tetikleyen boş bir dosya adına sahip; ikincisi ise x1.php gibi bir adla — hiç incelenmeyen bir webshell.

Dosya, PHP'nin uniqid() fonksiyonundan türetilen bir adla ancak saldırganın verdiği .php uzantısı korunarak wp-content/uploads/elementor/forms/ dizinine düşüyor. Yükleme yanıtı yolu açıklamadığından saldırganın önce dosya adını bulması gerekiyor; Patchstack bu adımı ucuz olarak tanımlıyor. Dosyaya yapılan tek bir GET isteği onu çalıştırıyor. admin-ajax.php, form işleyicisini tasarımı gereği kimliği doğrulanmamış çağrılara açık tuttuğundan kimlik doğrulamasına veya nonce atlatmaya gerek yok.

Bildirim, katkılar ve yinelenen bir CVE

Tin Pham (TF1T) sorunu 16 Temmuz'da Patchstack üzerinden bildirdi ve Austin Ginder da bağımsız olarak yaklaşık 24 Temmuz'da Wordfence Bug Bounty Program üzerinden bildirerek 15.600 dolar ödül kazandı. Wordfence kendi CVE tanımlayıcısını Patchstack'inki lehine reddetti ve yinelenen bir tanımlayıcı olan CVE-2026-17590 tamamen reddedildi — yazı, bu numaraya ilişkin tarayıcı eşleşmelerininin CVE-2026-32475 ile eşlenmesini öneriyor.

Gerçekte kim risk altında

Ön koşul kesin: Zorunlu (required) olarak işaretlenmemiş en az bir Dosya Yükleme alanı içeren bir Elementor Form widget'ı barındıran yayımlanmış bir sayfa. Required varsayılan olarak kapalı olduğundan yükleme alanlarının çoğu bu tanıma uyar. Eklentinin kurulu olduğu ancak yükleme etkin form içermeyen siteler de savunmasız kodu barındırıyor, ancak bu zincir için giriş noktası oraya ulaşılabilir değil.

Yazıda alıntılanan Wordfence telemetrisi, 19 Ağustos'taki ifşadan bu yana 6 milyondan fazla kuruluma sahip eklentiye karşı engellenen 190.000'den fazla sömürü denemesi sayıyor; denemeler özellikle 19–23 Ağustos arasında yoğunlaştı.

Kontrol ve düzeltme

Yazının WP-CLI ve shell erişimi kullanarak önerdiği inceleme sırası:

wp plugin get elementor-pro --field=version # 4.2.2 veya sonrası olmalı find wp-content/uploads/elementor/forms/ -type f -name "*.php" -ls grep "elementor_pro_forms_send_form" /var/log/nginx/access.log | tail -n 50

Form yükleme dizini altında bulunan herhangi bir PHP dosyası, temizleyip kapatılacak bir durum değil, ihlal kanıtı olarak ele alınmalı. Bunun tersine, günlük eşleşmesinin olmaması hiçbir şey kanıtlamaz; log rotation ve hızla değişen saldırgan IP'leri göz önüne alındığında. Wordfence, danışma belgesinde statik bir kopya yerine güncel bir saldırgan IP listesi tutuyor.

Düzeltmenin kendisi bir eklenti güncellemesi: wp plugin update elementor-pro çalıştırın, ardından sürümün 4.2.2 veya daha yeni olduğunu doğrulayın. Derinlemesine savunma için, web sunucusu katmanında yükleme dizininde PHP çalıştırmayı engelleyin — bir nginx location bloğu veya bir Apache .htaccess FilesMatch kuralı — böylece herhangi bir yükleyicideki bir sonraki doğrulama hatası saldırgana hiçbir kazanç sağlamaz. Wordfence ücretli katman kullanıcıları "Disable Code Code Execution for Uploads directory" güvenlik duvarı seçeneğinin etkin olduğunu doğrulamalı; ücretsiz katman, ücretli katmanlardan yaklaşık 30 gün sonra yeni güvenlik duvarı kurallarını aldığından ücretsiz katman sitelerinin Ağustos sonu saldırı zirvesi sırasında güvenlik duvarı koruması yoktu ve güncelleme tek acil korumaydı. Hemen güncelleyemeyen siteler için Patchstack bir sanal yama sunuyor.

Yazıda önerilen son bir sağlamlaştırma adımı: Form widget'ı barındıran sayfaları listeleğin, kabul edilen dosya türlerini iş akışının gerçekten ihtiyaç duyduğuyla sınırlayın (örneğin başvuru formları için PDF'ler ve görseller) ve artık gerekli olmayan yükleme alanlarını kaldırın.

Neden önemli

Bu durumu rutin bir eklenti yamasından öte yapan iki şey var. Birincisi zaman çizelgesi: İnternete açık, kimlik doğrulaması gerektirmeyen hataların ifşa gününde silahlandırılması artık normal; ifşadan sonraki günlerde neredeyse 200.000 deneme engellendi. Herkese açık bir sayfada yükleme formlarıyla Elementor Pro çalıştırıyorsanız, güncelleme isteğe bağlı değil.

İkincisi, kök neden klasik bir bölünmüş döngü deseni — aynı dizi üzerinde yapılan iki geçişin "boş"un ne anlama geldiği konusunda anlaşmazlığa düşmesi. Yükleme işlemi yazan herkes dosyaları tek bir geçişte doğrulamalı ve taşımalı, doğrulayıcıları boş-geçerli-kötücül gibi permütasyonlarla fuzz etmeli, uzantıları allowlist ile sınırlamalı, saklanan adları saldırganın verdiği uzantıyı korumadan rastgeleleştirmeli ve yükleme dizinlerinde kod çalıştırmayı web sunucusu katmanında engellemeli. Bu katmanlı disiplin, bir sonraki CVSS 9.0'ı olmayan bir olaya dönüştüren şeydir.

  • #wordpress
  • #security
  • #vulnerability
  • #php
  • #plugins

İlgili yazılar